【问题标题】:how does a zookeeper cluster of 3 stay active when 1 node is down?当 1 个节点关闭时,3 个 Zookeeper 集群如何保持活动状态?
【发布时间】:2015-05-23 02:28:55
【问题描述】:

文档here 说:

一个 3 台服务器集成允许单个服务器出现故障,而该服务仍然可用。

但是,要建立仲裁,需要有ceil(n/2)+1 节点

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

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

在这种情况下,上面的文档有错吗?

【问题讨论】:

    标签: apache-zookeeper paxos


    【解决方案1】:

    三节点集群中的 quorum 为 2,因为这是多数。空间或时间上的任何两个多数必须重叠;所以不能不知道任何其他多数的行动,因为至少有一个节点同时处于多数。这是 Paxos 算法使用的基本属性(注意 Zookeeper 使用 ZAB 而不是 Paxos,我的观点是共识算法中的安全性使用多数)。所以你的计算应该是floor(N/2)+1,它在 3 节点集群中给出 2 的法定人数,在 5 节点集群中给出 3,在 7 节点集群中给出 4,等等。

    【讨论】:

    • 基本正确的答案,但 ZooKeeper 不使用 Paxos。它使用 ZooKeeper 原子广播协议 (ZAB),它与 ​​Raft 相比更类似于 Paxos。领导者是始终占多数的单个节点。
    • 是的,正如我最近在对别人的问题的评论中所说的那样,我知道。我将编辑答案以明确任何安全算法(例如 Paxos)都需要它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多