当一个节点关闭时,3个zookeeper集群如何保持活动状态?

时间:2015-03-19 19:48:35

标签: apache-zookeeper paxos

文档here说:

  

3服务器集合允许单个服务器发生故障,服务仍然可用。

但是,要建立法定人数,需要ceil(n/2)+1个节点

在3个节点的情况下,即:
ceil(3/2)+1 = ceil(1.5)+1 = 3

因此,如果1个节点关闭,则不应建立仲裁,并且zookeeper应该关闭。

在这种情况下,上述文件是否有误?

1 个答案:

答案 0 :(得分:2)

三节点集群中的仲裁为2,因为它占多数。空间或时间中任何两个多数都必须重叠;所以不能不知道任何其他多数的行为,因为至少有一个节点是两个多数。这是Paxos算法使用的一个有趣的属性(注意Zookeeper使用ZAB而不是Paxos,我的观点是一致性算法中的安全性使用多数)。因此,您的计算应该是floor(N/2)+1,其在3节点集群中的法定人数为2,在5节点集群中为3,在7节点集群中为4,等等。