我在 Azure 上运行了 3 台 CoreOS 机器组成的集群。我同时重启了两台机器,集群如预期般失败了。
我需要替换发现令牌,每次启动时都会读取云配置,但根据 CoreOS 文档:
一旦在 Azure 上配置了实例,云配置就无法修改。
有没有一种方法可以从中恢复,而不是销毁然后部署新的集群?
答案1
配置文件存在于该位置
/var/lib/waagent/CustomData
使用
sudo vim /var/lib/waagent/CustomData
您应该能够编辑它。重启后配置将生效。
答案2
您可以尝试修改 etcd 服务定义/run/systemd/system/etcd.service.d/20-cloudinit.conf
- 您应该会看到类似
[Service]
Environment="ETCD_ADDR=10.1.1.1:4001"
Environment="ETCD_DISCOVERY=https://discovery.etcd.io/47fabddb4eed191a09bf5b70ba93426a"
Environment="ETCD_PEER_ADDR=10.1.1.1:7001"
修改发现 URL 为新的,然后重新启动
systemctl daemon-reload
systemctl restart etcd
不过,您需要测试它是否可以在 Azure 重启后继续存在!
答案3
如果你在三节点集群中删除两个节点,则会失去仲裁;如果是 3 个节点,则只会丢失一个节点。有关 CoreOS 容错功能的更多信息:
Fault Tolerance Table
It is recommended to have an odd number of members in a cluster. Having an odd cluster size doesn't change the number needed for majority, but you gain a higher tolerance for failure by adding the extra member. You can see this in practice when comparing even and odd sized clusters:
Cluster Size Majority Failure Tolerance
1 1 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3
8 5 3
9 5 4
https://coreos.com/etcd/docs/latest/admin_guide.html