如果三个节点中的一个失败,zookeeper如何变为高可用性

Jac*_*ack 3 high-availability apache-zookeeper

如果我有三个zookeeper节点,一个领导者和两个粉丝.如果领导人死了,会发生什么,是否会从剩下的两个领导者中选出新的领导者?好吧,让我们假设一个人被选为新的领导者,如果新的领导者也去世了.最后一个还在服务吗?谢谢!

igo*_*bel 7

在ZooKeeper集群中,如果领导者死亡,其他剩余节点将在他们之间选择一个领导者.这通常会很快,并且客户端不应该有明显的中断.连接到死亡的领导者的客户端将重新连接到其他节点之一.

至于第二个问题 - 在3节点集群中,如果其中2个节点死亡,则第三个节点将不服务请求.原因是剩下的一个节点不知道它是否实际上是唯一的幸存者,或者它是否已经与其他幸存者分开.此时继续提供请求可能会导致大脑分裂并违反ZooKeeper核心保证.

  • 哦,说得好。别担心。与政治家不同,ZooKeeper 节点即使只有 2 个也能达成共识。您可以在此处更详细地检查它的工作原理,但基本上在所有情况下都能保证协议的活性:http://zookeeper.apache.org/doc/trunk/zookeeperInternals.html#sc_leaderElection (2认同)