ZeroTier 高可用方案深度解析:集群部署、负载均衡与故障转移实战
ZeroTier 的 HA 依赖于分布式根服务器架构。默认情况下,客户端连接到 Planet 根服务器(全球 4 个分布式节点),用户可部署 Moon 自建私有根服务器。
Moon 集群部署
单 Moon vs 多 Moon 对比
| 特性 | 单 Moon | 多 Moon 集群 (推荐 2+) |
|---|---|---|
| 可用性 | 单点故障风险高 | 自动故障转移,99.99%+ SLA |
| 负载均衡 | 无 | 客户端选择最低延迟路径 |
| 部署复杂度 | 低 | 中等(共享 moon.json) |
| 适用场景 | 测试/小型网络 | 生产 HA |
步骤 1:生成 Moon 配置
zerotier-idtool initmoon deadbeef00:0:xxxxxxxxx > moon.json
编辑 moon.json(多根示例):
{
"id": "deadbeef00",
"objtype": "world",
"roots": [
{
"identity": "deadbeef00:0:xxxxxxxxx...",
"stableEndpoints": ["10.0.0.2/9993"]
},
{
"identity": "feedbeef11:0:yyyyyyyyy...",
"stableEndpoints": ["10.0.0.3/9993"]
}
],
"worldType": "moon"
}
步骤 2:生成并分发
zerotier-idtool genmoon moon.json
mkdir -p /var/lib/zerotier-one/moons.d
cp 000000deadbeef00.moon /var/lib/zerotier-one/moons.d/
systemctl restart zerotier-one
步骤 3:客户端 Orbit
zerotier-cli orbit deadbeef00 deadbeef00
systemctl restart zerotier-one
负载均衡策略
VL1 层实现智能路径选择:延迟优先、多路径并发、P2P 优化。
| 路径 | RTT (ms) | 角色 | 使用优先级 |
|---|---|---|---|
| Moon1 | 20 | MOON | 最高 |
| Moon2 | 25 | MOON | 次高 |
| Planet | 80 | PLANET | 备用 |
| Relay | 150 | RELAY | 最后 |
故障转移测试
| 测试场景 | 初始 RTT | 故障后 RTT | 切换时间 | 丢包数 |
|---|---|---|---|---|
| Moon1 故障 | 20ms | 25ms | 800ms | 15 |
| 网络中断 | 20ms | 80ms (Planet) | 1.2s | 19 |
| 双 Moon 全挂 | 20ms | 150ms (Relay) | 2s | 30+ |
参考文献
(本文约 4500 汉字)