在6节点集群上运行zookeeper时,是否有人知道仲裁是自动确定为4个节点还是3个节点?
如果法定人数被选为N / 2,则它将变为3并且可能导致大脑裂开。 如果法定人数被选为(N + 1)/ 2,则它将变为4并且将避免分裂的大脑情况。
所以我希望它是后者,但documentation没有提到任何类似的东西。 有谁知道这肯定吗?
P.S。我知道建议使用奇数个zookeeper节点,但我很想知道偶数个节点会发生什么情况。
答案 0 :(得分:0)
请参阅org.apache.zookeeper.server.quorum.flexible.QuorumMaj.java
public boolean containsQuorum(HashSet<Long> set)
{
return set.size() > n / 2;
}
答案 1 :(得分:0)
我知道它的帖子很旧,但是为了其他可能会偶然发现此帖子的人的答复。
Zookeeper需要多数节点才能建立并进行通信。因此,在您的情况下,将是6分之4,这就是为什么使用奇数的原因。从HA的角度来看,您的节点之一不是多余的吗?如果3个节点出现故障,则您的群集已关闭。与5节点群集相同。
答案 2 :(得分:0)
当节点出现故障时,具有偶数个节点不会增加任何优势。 在6个节点群集的情况下,最多可以容忍2个节点故障,甚至可以用5个节点群集来实现。因此,增加一个节点只是运营成本。
我在博客中回答了相同的问题。