我们有5个节点zookeeper仲裁( A,B,C,D,E )
在生产中运行,1个节点在上周下降( E )
。仲裁是健康的,但我们需要将( E )
替换为新的健康节点( F )
我在两个选项之间玩杂耍
1. add ( F ) to the quorum and then remove ( E )
2. replace ( F ) with ( E ) restart followers and then restart leader
我测试了选项#2,我可以看到在强制领导(通过重新启动领导者)后法定人数接受( F )
法定人数是健康的,但我只是想确定这是否是标准程序
我找不到关于此版本的节点替换的任何apache文档
ZK Version : 3.4.6
答案 0 :(得分:2)
是的,对于3.5。*之前的版本,重新配置ZK群集需要在确保更新配置以使用新节点替换旧节点后协调重启,以便新节点( s)可以加入quorom而旧的则被删除。我发现这个gist很有帮助。
一般情况下,对于升级,建议使用滚动重启 - 参考apache link。
如果可能的话,我建议您考虑升级到3.5 *版本,其中dynamic reconfiguration可以不重新启动。
答案 1 :(得分:0)
如果在您的示例中,节点F可以被设置为具有与故障节点E相同的IP *和ID(以Zookeeper数据形式写入myid文件),则无需采取进一步措施。新节点F最初将没有数据,但将从其他可用节点接收最新数据。我已经使用Zookeeper 3.4.10版进行了验证。
*例如,在AWS上可以使用此方案,您可以在其中通过ENI为Zookeeper节点保留IP地址。因此,可以为新节点F提供与发生故障的节点E相同的IP地址。