安全地替换 Zookeeper Quorum 中的坏节点
Replacing Bad Node in Zookeeper Quorum Safely
我们有 5 个节点 zookeeper quorum ( A,B,C,D,E )
运行 在生产中,上周有 1 个节点宕机 ( E )
。法定人数是健康的,但我们需要用新的健康节点 ( F )
替换 ( E )
我在两个选项之间徘徊
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
是的,对于 3.5.* 之前的版本,ZK 集群的重新配置需要协调重启确保更新配置以用新节点替换旧节点,所以新节点可以加入法定人数并且旧节点被删除。我发现这个 gist 很有帮助。
一般来说,对于升级,建议采用滚动重启 - 参考 apache link。
如果可能,我建议您考虑升级到 3.5* 版本,其中 dynamic reconfiguration 无需重启即可。
如果在您的示例中,节点 F 可以恢复为与故障节点 E 具有相同的 IP * 和 ID(写入 zookeeper 数据中作为 myid 文件),则无需进一步操作。新节点 F 最初没有数据,但它会从其他可用节点接收最新数据。我已经用 Zookeeper 版本 3.4.10 进行了验证。
*这种情况例如在 AWS 上是可能的,您可以通过 ENI 为 Zookeeper 节点保留 IP 地址。因此,可以为新节点 F 提供与故障节点 E 相同的 IP 地址。
我们有 5 个节点 zookeeper quorum ( A,B,C,D,E )
运行 在生产中,上周有 1 个节点宕机 ( E )
。法定人数是健康的,但我们需要用新的健康节点 ( F )
( E )
我在两个选项之间徘徊
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
是的,对于 3.5.* 之前的版本,ZK 集群的重新配置需要协调重启确保更新配置以用新节点替换旧节点,所以新节点可以加入法定人数并且旧节点被删除。我发现这个 gist 很有帮助。
一般来说,对于升级,建议采用滚动重启 - 参考 apache link。
如果可能,我建议您考虑升级到 3.5* 版本,其中 dynamic reconfiguration 无需重启即可。
如果在您的示例中,节点 F 可以恢复为与故障节点 E 具有相同的 IP * 和 ID(写入 zookeeper 数据中作为 myid 文件),则无需进一步操作。新节点 F 最初没有数据,但它会从其他可用节点接收最新数据。我已经用 Zookeeper 版本 3.4.10 进行了验证。
*这种情况例如在 AWS 上是可能的,您可以通过 ENI 为 Zookeeper 节点保留 IP 地址。因此,可以为新节点 F 提供与故障节点 E 相同的 IP 地址。