如果三个节点之一发生故障,Zookeeper 能否保持高可用

Can Zookeeper remain highly available if one of three nodes fails

假设我有3个zookeeper节点,1个leader,2个follower。如果领导人死了怎么办?新的领导人会从剩下的两个人中选出吗?如果是这样,如果新领导也死了怎么办?最后一个还会为客户服务吗?

在 ZooKeeper 集群中,如果领导者死亡,其他剩余节点将在它们之间选举领导者。这通常会非常快,并且对客户端来说应该没有明显的中断。连接到死亡领导者的客户端将重新连接到其他节点之一。

关于第二个问题 - 在 3 节点集群中,如果其中 2 个节点挂掉,则第三个节点将无法处理请求。这样做的原因是剩下的一个节点无法知道它是否实际上是唯一的幸存者或者它是否已经与其他节点分开。在那一点继续服务请求可能会导致脑裂情况并违反核心 ZooKeeper 保证。