运行带有偶数节点的zookeeper

时间:2017-11-26 11:36:43

标签: apache-zookeeper

在6节点集群上运行zookeeper时,是否有人知道仲裁是自动确定为4个节点还是3个节点?

如果法定人数被选为N / 2,则它将变为3并且可能导致大脑裂开。 如果法定人数被选为(N + 1)/ 2,则它将变为4并且将避免分裂的大脑情况。

所以我希望它是后者,但documentation没有提到任何类似的东西。 有谁知道这肯定吗?

P.S。我知道建议使用奇数个zookeeper节点,但我很想知道偶数个节点会发生什么情况。

3 个答案:

答案 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个节点群集来实现。因此,增加一个节点只是运营成本。

我在博客中回答了相同的问题。

请看看:) Why Zookeeper has odd number of nodes?