2017-09-07 107 views
2

https://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkMulitServerSetupzookeeper集群中的一个节点失败后该怎么办?

跨机要求有关的ZooKeeper服务活跃, 必须有一个多数是可以沟通 相互未故障的机器。要创建一个可以容忍F机器的故障 的部署,您应该依靠部署2xF + 1机器。因此,由三台机器组成的部署可以处理一个故障,并且部署五台机器可以处理两个故障。请注意,六台机器的部署只能处理两个故障,因为三台机器不是多数。出于这个原因,ZooKeeper的部署通常是由奇数个机器组成的 。

要实现容忍失败的最高可能性,您应该尝试使机器故障独立。例如,如果大多数机器共享相同的交换机,则该交换机的故障可能会导致 相关的故障并导致服务中断。这同样适用的 共享的电源电路,冷却系统属实等

我的问题是: 我们应该做的后,我们确定动物园管理员集群内的一个节点发生故障,使集群2F + 1再次?我们是否需要重新启动所有动物园管理员节点?此外,客户端连接到Zookeeper群集,假设我们使用DNS名称和恢复的节点使用相同的DNS名称。

例如: 10.51.22.89 zookeeper1 10.51.22.126 zookeeper2 10.51.23.216 zookeeper3

如果10.51.22.89死了,我们为大家带来了10.51.22.90为zookeeper1,所有的节点都可以识别这种变化。

回答

0

如果您连接10.51.22.90作为zookeeper1(与以前相同的myid文件和配置为10.51.22.89)且数据目录为空,则进程将连接到当前领导者(zookeeper2或zookeeper3)并复制快照数据。初始化成功后,节点将通知其余的群集节点,并且您再次拥有2F + 1。

自己试试看,日志文件有tail -f。它不会伤害群集,你会在动物园内部学习很多;-)

+0

谢谢@Mariusz 在我们的实践中,我们发现像https://stackoverflow.com/questions/22155494/why-cant -my-zookeeper-server-re-join-the-quorum,所以我们必须“滚动重启”所有zookeeper节点。 –

+0

你使用什么版本?您引用的问题已超过3年,适用于动物园管理员3.4.5。 – Mariusz

相关问题