可以将两台计算机用于ZooKeeper Cluster

时间:2018-03-02 21:44:01

标签: apache-zookeeper

我使用两台机器来构建ZooKeeper集群。然后我有以下问题:

(1)配置完成后,在每台机器上分别启动Zookeeper,它们的工作方式如下:机器A显示为跟随者,机器B显示为领导者。但是我将机器A设置为server.1,将机器B设置为server.2。我想知道ZooKeeper如何选择领导者和追随者

(2)然后我在机器B上运行“zkServer.sh stop”,然后在机器A上运行“zkServer.sh status”,发现错误“错误联系服务。它可能没有运行。”预期的行为应该是机器A将从跟随者变为领导者,对吧?但为什么它失败了。然后我再次在机器B上启动,然后在机器A上运行“zkServer.sh status”将得到机器A是跟随者的消息

那有什么不对?可以将两台计算机用于ZooKeeper集群,并且至少可以使用3台计算机吗?我做错了吗?

1 个答案:

答案 0 :(得分:1)

回答1

领导者选举不依赖于 server.xx 中的ID。简而言之,Zookeeper的领导者选举是通过Zab(原子广播)实施的。您可以在Andr&#e; Medeiros的讲座中看到更多细节: ZooKeeper的原子广播协议:理论与实践

回答2

具有2个节点的群集可以工作,但在实践中不推荐;这是因为ZK要求法定人数(大多数)节点(2/2)+ 1 = 2 。这意味着群集需要所有2个节点都存活。如果其中一个节点发生故障,整个群集将无法工作。

这就是为什么ZK要求至少3个节点,容忍1节点故障;并且节点数应该是奇数。