zerotier加低配云服务器实现高性能服务器集群

由于家境贫寒,买不起高性能服务器,加之现在很多云厂商并不提供ARM架构的服务器供大家使用,所以有了自己搭建一个服务器集群的想法。设备分散在多个不同的机房(家里)均无公网 IP,想要实现在外网快速连通所有机器。

网络情况

选取一台有公网IP的机器作为跳板(我选择的是一个1c1g5m容器)由于转发需要的网络带宽比较大,但是对于CPU要求不高。接入的机器分布在国内外各种地方,大部分没公网IP,甚至无法直通。

方案

使用的是 zerotier +自建 moon 的方案,zerotier的稳定性和灵活度是远远高于frp之类的方案的,可以实现类似于花生壳 蒲公英组网类似的效果,将多个机器集中到一个大内网中。

但是zerotier的服务器位于海外,会导致ping非常的高,还容易断线,所以我们需要自己搭建一个moon转发服务,在国内P2P打洞基本是失败的,所以大部分情况下我们需要中转服务器,中转对延迟要求和带宽要求很高,中转服务器必须能够被子节点直接ping通 这点需要注意一下!CPU和内存要求很低,可以使用弹性服务器或者容器运行。

zerotier 安装

curl -s https://install.zerotier.com/ | sudo bash

sudo systemctl start zerotier-one.service #启动服务
sudo systemctl enable zerotier-one.service #开机自启

组网

sudo zerotier-cli join e5cd7a9e1cxxxxx #替换成你自己的网络ID

配置中转服务器

cd /var/lib/zerotier-one/
sudo zerotier-idtool initmoon identity.public > moon.json

编辑 moon.json 中的 stableEndpoints 使用双引号填入你中转服务器的公网 IP,并记住第一行的ID

在当前目录下执行下面命令,会生成一个 xxxx.moon的文件,创建moons.d目录并移动 xxxx.moonmoons.d中。最后重启服务即可。

zerotier-idtool genmoon moon.json
sudo mkdir moons.d #创建moons.d文件夹
sudo mv xxxx.moon moons.d/ #移动上一步生成的文件到这个文件夹中
sudo systemctl restart zerotier-one #重启服务

注意
如果使用的是云厂商的服务器,记得确认安全组是否允许了 UDP 9993 端口,新增入站规则如下图


节点配置中转服务器

使用 zerotier-cli orbit 配置中转服务器。注意ID要输入两遍,成功后会有 200 orbit OK的输出。

sudo zerotier-cli orbit 「上面moon.json文件中的ID」 「上面moon.json文件中的ID」

效果

配置中转前,延迟在300-400ms

配置后稳定在40-50ms,效果十分明显

节点取消中转服务器

sudo zerotier-cli deorbit xxxxxxx

参考
Zerotier-Private Root Servers

点赞