2015-03-02 61 views
0

我们有一个恰好具有两个数据中心的设置,每个数据中心都有一台机器,我们希望将ZooKeeper节点部署到这两台机器,并为它们进行集群。我们无法将任何新机器添加到群集。双节点ZooKeeper集合

目前我们有两个ZooKeeper节点A和B,一个在机器A和一个在B上。我们必须能够容忍一台机器的故障,另一个ZooKeeper实例必须保持可操作。

我从ZooKeeper文档中了解到最少有三个节点 - 协调机制要求大多数节点保持活动状态(在这种情况下为两个节点)。

我的问题是 - 是否有可能获得高度可用的ZooKeeper部署只包含两个节点?

回答

1

否。如果Zookeeper 2个节点不够用。即使您的某个节点熄灭,剩下的节点也无法判断它是否已关闭或仅分区。这会导致矛盾,分裂的大脑情况,因为他们都会继续为他们的客户提供服务。

我不确定Zookeeper是否会形成一个群集,或者只是在独立模式下运行。看看这个答案:Zookeeper running on two nodes

对于你的情况,只有2台机器,你可以考虑在其中一台机器上放置第二个Zookeeper实例并制作一个3节点的集群。

这在容错性方面不会有太大的帮助。这与仅在具有第二个实例的机器上运行独立的ZK类似。它可能会加快读取请求的速度,或者一旦成长为3台或更多台机器,便于您迁移到适当的群集设置。它还会增加您的操作复杂性和写入速度。

您还可以查看可能对跨越多个数据中心的集群有用的分层法定人数和观察程序。