从失败的etcd2 / CoreOS集群中恢复

我有一个在Azure上运行的3个CoreOS机器集群。 我同时重新启动了两个,并且集群按预期失败。

我需要replace发现令牌,在每次启动时读取cloud-config,但根据CoreOS文档:

一旦在Azure上调配实例,就不能修改cloud-config。

有没有一种方法可以从中恢复,而不是破坏并部署新的集群?

有configuration文件存在的位置

/var/lib/waagent/CustomData 

运用

 sudo vim /var/lib/waagent/CustomData 

你应该可以编辑它。 在重新启动configuration将拿起。

您可以尝试修改/run/systemd/system/etcd.service.d/20-cloudinit.conf中的etcd服务定义 – 您应该看到类似于

 [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修改为新的URL,然后重新启动它

 systemctl daemon-reload systemctl restart etcd 

您将需要testing,如果这仍然在Azure重新启动!

如果删除三个节点集群中的两个节点,则会丢失法定数量,只有三个节点会丢失一个节点,以获取关于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