文档here说:
3服务器集合允许单个服务器发生故障,服务仍然可用。
但是,要建立法定人数,需要ceil(n/2)+1
个节点
在3个节点的情况下,即:
ceil(3/2)+1 = ceil(1.5)+1 = 3
因此,如果1个节点关闭,则不应建立仲裁,并且zookeeper应该关闭。
在这种情况下,上述文件是否有误?
答案 0 :(得分:2)
三节点集群中的仲裁为2,因为它占多数。空间或时间中任何两个多数都必须重叠;所以不能不知道任何其他多数的行为,因为至少有一个节点是两个多数。这是Paxos算法使用的一个有趣的属性(注意Zookeeper使用ZAB而不是Paxos,我的观点是一致性算法中的安全性使用多数)。因此,您的计算应该是floor(N/2)+1
,其在3节点集群中的法定人数为2,在5节点集群中为3,在7节点集群中为4,等等。