【问题标题】:Two node ZooKeeper ensemble两节点 ZooKeeper 集成
【发布时间】:2015-03-02 11:27:10
【问题描述】:

我们有一个正好有两个数据中心的设置,每个数据中心只有一台机器,我们希望在这两台机器上部署一个 ZooKeeper 节点,并让它们成为集群。我们无法向集群添加任何新机器。

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

我从 ZooKeeper 文档中了解到,建议至少使用三个节点 - 因为协调机制需要大多数节点处于活动状态才能继续(在这种情况下是两个)。

我的问题是 - 是否可以获得仅包含两个节点的高可用性 ZooKeeper 部署?

【问题讨论】:

    标签: java deployment apache-zookeeper high-availability


    【解决方案1】:

    没有。如果 Zookeeper 2 个节点是不够的。即使您的一个节点出现故障,其余节点也无法判断它是否已关闭或刚刚分区。这会导致不一致,即大脑分裂的情况,因为他们都将继续为他们的客户服务。

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

    在您的情况下,只有 2 台机器,您可以考虑在其中一台机器上放置第二个 Zookeeper 实例并创建一个 3 节点集群。

    这在容错方面对您没有多大好处。这类似于在具有第二个实例的机器上运行独立的 ZK。它可能会加快读取请求,或者在您增加到 3 台或更多机器时更容易迁移到适当的集群设置。它还将增加您的操作复杂性和写入速度。

    您还可以研究可能对跨多个数据中心的集群有用的分层仲裁和观察者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2016-06-16
      相关资源
      最近更新 更多