安全地替换Zookeeper仲裁中的错误节点

时间:2017-09-22 04:27:25

标签: apache hadoop hbase apache-zookeeper

我们有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

2 个答案:

答案 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地址。