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 汉字)