本文发布于376天前,最后更新于371天前,其中的信息可能有所发展或是发生改变
你会如何在服务器配置和数量方面进行选择呢?
是购买一台配置高的服务器,还是选择购买多台配置低的服务器呢?
夜梦选择后者,毕竟高配服务器对夜梦来说没用。最近夜梦一直在折腾,多点服务器就可以部署多个项目,几个小项目可以同时跑。
此外,最近夜梦 闲的没事干 想要学习学习虚拟化方面的知识,于是找到了一个名为“一键虚拟化项目”的资源,借助该项目可以在一台主机上创建多个虚拟机,实现多“一机多用”!
一键虚拟化项目 | 开源、易于使用的服务器虚拟化项目 (spiritlhl.net)
夜梦使用LXD方法,具体参考:系统与硬件配置要求 | LXD
夜梦使用的服务器为:
夜梦开的小机在两服务商机器上面已经测试成功!
官网给的步骤已经十分详细,夜梦这里仅仅做简单叙述。
fdisk -l
和df
查看使用后续脚本的务必执行本命令检测宿主机是否符合要求
国际
bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/pre_check.sh)
国内
bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/pre_check.sh)
夜梦这里仅介绍手动安装过程(方便排查Bug)。
apt update
apt install curl wget sudo dos2unix ufw jq -y
ufw disable
虚拟内存的大小看你需要开多少台机器。
举个例子:如果你每台机器内存开256M,开8台,则换算下来需要2G内存。但是如果你的宿主机实际内存只有512MB,那么你就至少还需要1.5G的虚拟内存,保守点开2G虚拟内存即可。不就是超开嘛!实际swap开的虚拟内存最好是实际内存的2倍(影响小),按照例子来说也就是1GB。
执行下面命令,输入1,再输入2048,代表开2G虚拟内存
国际
curl -L https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/swap.sh -o swap.sh && chmod +x swap.sh && bash swap.sh
国内
curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxd/main/script
apt install snapd -y
snap install lxd
/snap/bin/lxd init
如果上面的命令中出现下面的错误
(snap "lxd" assumes unsupported features: snapd2.39 (try to update snapd and refresh the core snap))
使用命令修补后再进行lxd的安装
snap install core
如果无异常,一般的选项回车默认即可。其中两项需要注意一下:
测试lxc有没有软连接上
lxc -h
如果报错则执行以下命令软连接lxc命令:
! lxc -h >/dev/null 2>&1 && echo 'alias lxc="/snap/bin/lxc"' >> /root/.bashrc && source /root/.bashrc
export PATH=$PATH:/snap/bin
连接后再测试lxc命令是否有报错找不到。
只生成一个NAT服务器,可自定义限制所有内容
脚本下载:
国际
curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/buildone.sh -o buildone.sh && chmod +x buildone.sh && dos2unix buildone.sh
国内
curl -L https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/buildone.sh -o buildone.sh && chmod +x buildone.sh && dos2unix buildone.sh
./buildone.sh 小鸡名称 内存大小 硬盘大小 SSH端口 外网起端口 外网止端口 下载速度 上传速度 是否启用IPV6(Y or N) 系统(留空则为debian11)
内存大小以MB计算,硬盘大小以GB计算,下载速度上传速度以Mbit计算,是否启用IPV6不一定要填Y或者N,没有这个参数也行,留空默认不开启IPV6
如果外网起端口
和外网止端口
都设置为0则不做区间外网端口映射了,只映射基础的SSH端口,注意不能为空
,不进行映射需要设置为0
支持自定义小鸡的系统,不填写留空时默认使用debian11,注意传入参数为系统名字+版本号,如:
./buildone.sh test 256 2 20001 20002 20025 500 500 N
`小鸡名字` - test
`SSH登录的用户名` - root
`SSH登录的密码` - 随机生成
`CPU核数` - 1
`内存大小` - 256MB
`磁盘大小` - 2G
`内外网映射端口一致的区间` - 20002到20025
`上传带宽` - 500Mbit
`下载带宽` - 500Mbit
`自动设置外网IPV6地址` - N
`系统` - debian11
需要查看信息则执行
cat 小鸡名字
比如查询示例的信息就是
cat test
如果已通过以上方法生成过小鸡,还需要批量生成小鸡,可使用自定义批量生成版本的脚本,但注意先删除测试小鸡再进行批量生成小鸡
lxc stop test
lxc delete test
rm -rf test
rm -rf test_v6
ls
开出的小鸡配置:
TIP lxc若命令无问题,执行初始化开小鸡,这一步最好放
screen
中后台挂起执行,开小鸡时长与你开几个和母鸡配置相关
执行下面命令加载开机脚本
国际
curl -L https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/init.sh -o init.sh && chmod +x init.sh && dos2unix init.sh
国内
curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/init.sh -o init.sh && chmod +x init.sh && dos2unix init.sh
下面命令为开小鸡名字前缀为tj的10个小鸡
./init.sh tj 10
有时候init.sh的运行路径有问题,此时建议前面加上sudo强制根目录执行
开出的小鸡配置:
TIP lxc若命令无问题,执行初始化开小鸡,这一步最好放
screen
中后台挂起执行,开小鸡时长与你开几个和母鸡配置相关
加载开机脚本
国际
curl -L https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/least.sh -o least.sh && chmod +x least.sh && dos2unix least.sh
国内
curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/least.sh -o least.sh && chmod +x least.sh && dos2unix least.sh
下列命令最后一行为开小鸡名字前缀为tj的10个小鸡
./least.sh tj 10
有时候least.sh的运行路径有问题,此时建议前面加上sudo强制根目录执行
如果需要多次批量生成小鸡,可使用
国际
curl -L https://github.com/spiritLHLS/lxd/raw/main/scripts/add_more.sh -o add_more.sh && chmod +x add_more.sh && bash add_more.sh
国内
curl -L https://ghproxy.com/https://github.com/spiritLHLS/lxd/raw/main/scripts/add_more.sh -o add_more.sh && chmod +x add_more.sh && bash add_more.sh
可多次运行批量生成小鸡,且继承前面已生成的部分在后面添加,可自定义内存和硬盘大小
开完小鸡后,具体信息会生成在当前目录下的log文件中,格式如下
1号服务器名称 密码 ssh端口 外网端口起始 外网端口终止
2号服务器名称 密码 ssh端口 外网端口起始 外网端口终止
如果想要查看,只需在当前目录执行以下命令打印log文件即可
cat log
WARNING
不要拿该脚本开出的小鸡当生产环境,LXC虚拟化不支持换内核,dd,开启bbr等操作
查看所有
lxc list
查看个例
lxc info 服务器名字
启动个例
lxc start 服务器名字
停止个例
lxc stop 服务器名字
删除个例
lxc delete -f 服务器名字
进入内部
lxc exec 服务器名字 /bin/bash
TIP 在alpine中不用/bin/bash而是用/bin/sh,常规的系统都是/bin/bash 退出则输入
exit
回车即可
删除所有LXC容器
lxc list | awk '{print $2}' | grep -v "^$" | xargs -I {} lxc delete -f {}
在容器内执行删除无用日志
sudo apt-get autoremove
sudo apt-get clean
sudo find /var/log -type f -delete
sudo find /var/tmp -type f -delete
sudo find /tmp -type f -delete
sudo find /var/cache/apt/archives -type f -delete
删除原始配置脚本
rm -rf /usr/local/bin/alpinessh.sh
rm -rf /usr/local/bin/config.sh
rm -rf /usr/local/bin/ssh.sh
rm -rf /usr/local/bin/check-dns.sh
rm -rf /root/alpinessh.sh
rm -rf /root/config.sh
rm -rf /root/ssh.sh
rm -rf /root/buildone.sh
rm -rf /root/add_more.sh
下载回新版本的相关配置脚本
wget https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/check-dns.sh -O /usr/local/bin/check-dns.sh && chmod +x /usr/local/bin/check-dns.sh
wget https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/config.sh -O /usr/local/bin/config.sh && chmod +x /usr/local/bin/config.sh
wget https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/ssh.sh -O /usr/local/bin/ssh.sh && chmod +x /usr/local/bin/ssh.sh
wget https://raw.githubusercontent.com/spiritLHLS/lxd/main/scripts/alpinessh.sh -O /usr/local/bin/alpinessh.sh && chmod +x /usr/local/bin/alpinessh.sh
其他一键脚本自己对应下载回来就行了
lxc config set core.https_address [::]
lxc config set core.trust_password some-secret-string
snap install lxdmosaic
安装完毕后打开宿主机IP地址,按照提示设置admin的密码,其他一路默认就能使用面板了