Apache zookeeper ZooKeeper集群可以使用两台机器吗

Apache zookeeper ZooKeeper集群可以使用两台机器吗,apache-zookeeper,Apache Zookeeper,我用两台机器构建了ZooKeeper集群。那么我有以下问题: (1) 配置后,在每台机器上分别启动Zookeeper,它们的工作如下:机器A显示为跟随者,机器B显示为引导者。但是我已经将机器A设置为服务器1,机器B设置为服务器2。我想知道动物园管理员是如何选择领队和跟随者的 (2) 然后我在机器B上运行“zkServer.sh stop”,然后在机器A上运行“zkServer.sh status”,发现错误“联系服务时出错。它可能没有运行。”预期的行为应该是机器A将从跟随者变为领导者,对吗?但为

我用两台机器构建了ZooKeeper集群。那么我有以下问题:

(1) 配置后,在每台机器上分别启动Zookeeper,它们的工作如下:机器A显示为跟随者,机器B显示为引导者。但是我已经将机器A设置为服务器1,机器B设置为服务器2。我想知道动物园管理员是如何选择领队和跟随者的

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


那怎么了?ZooKeeper集群不能使用两台机器,至少可以使用3台机器吗?我配置错误了吗?

答案1

领导选举不依赖于server.xx中的id。简而言之,动物园管理员的领导人选举是通过Zab(原子广播)实现的。你可以在Andr'e Medeiros的讲座中看到更多细节:动物园管理员的原子广播协议:理论与实践

答案2

具有2个节点的集群可以工作,但在实践中不推荐使用;这是因为ZK需要一个活动节点(2/2)+1=2的仲裁(多数)。这意味着集群需要所有2个节点处于活动状态。如果其中一个节点出现故障,整个集群将无法工作


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

你的zoo.cfg是什么?非常感谢,Jacky。