我最近在阅读有关建议使用奇数个节点运行zookeeper的信息。因此,在3个节点的群集中,它最多可以承受2个故障。但是,如果我启动一个3节点群集并仅删除其中一个节点,那它将在什么时候将其视为2节点群集呢?还是在2节点群集中运行它的黑客?
答案 0 :(得分:1)
Zookeeper原子广播(ZAB)负责选举领导者并恢复发生故障的领导者和节点。
为检测故障,Zab会在关注者及其领导者之间定期使用心跳消息。如果领导者在给定的超时时间内没有收到来自法定人数的追随者的心跳,则放弃领导,转而参加州选举。
协议迭代是:
第0阶段–潜在领导人选举
第一阶段-发现
第2阶段–同步
第3阶段–广播
在您的情况下,从三个节点开始,然后丢失一个,则必须区分情况:
A-丢失的节点是领导者 B-丢失的节点不是领导者
在A中,一切继续进行,没有问题。 在B中,阶段0重新开始。
有关ZAB的详细信息,请参见此参考资料: https://zookeeper.apache.org/doc/r3.4.12/zookeeperInternals.html