6

我想在两个数据中心部署一个 Kafka 集群,每个 DC 上的节点数量相同。第一个 DC 用于主动模式,而第二个 DC 用于被动模式。

例如,假设两个数据中心都有 3 个节点,第一个 DC 上有 2 个同步副本 (ISR),第二个 DC 上有一个 ISR。

是否有可能拥有一个包含仲裁者/见证者/观察者节点的第三个 DC,以便在一个 DC 失败的情况下,领导者选举可以在一致性方面以正确的结果成功?mongoDB 有一个名为Replica set Arbiter的特性。

在三个数据中心部署 ZooKeeper 怎么样?据我了解,ZooKeeper 不保存 Kafka 数据,不应为 Kafka 主题中的每条新记录联系它,即您无需为每条新记录向第三个 DC 支付延迟。

4

1 回答 1

1

在 2017 年 Kafka 峰会上,一个数据中心还不够:跨多个数据中心扩展 Apache Kafka的演讲谈到了这种设置。Confluent 白皮书Disaster Recovery for Multi-Datacenter Apache Kafka® Deployments中也有一些有趣的信息。它说它可以工作,他们称它为观察者节点,但它也说没有人尝试过这个。

Zookeeper 跟踪 Kafka (0.9.0+) 的以下元数据。

  • 选举控制器 - 控制器是代理之一,负责维护所有分区的领导者/跟随者关系。当一个节点关闭时,控制器告诉其他副本成为分区领导者,以替换即将离开的节点上的分区领导者。Zookeeper 用于选举一个控制器,确保只有一个控制器,如果它崩溃,则选择一个新的控制器。
  • 集群成员 - 哪些代理还活着并且是集群的一部分?这也是通过 ZooKeeper 管理的。
  • 主题配置 - 该主题有哪些覆盖,分区位于何处等。
  • 配额 - 每个客户端允许读取和写入多少数据
  • ACLs - 谁可以读写哪个主题

有关 Kafka 和 Zookeeper 之间依赖关系的更多详细信息,请参见Kafka FAQQuora 上来自 Confluent 的 Kafka 提交者的回答

从我读过的资源来看,在第三个 DC 上具有两个 DC(Kafka 加 Zookeeper)和一个仲裁/见证/观察者 Zookeeper 节点的设置可以工作,但我还没有找到任何实际试验过的资源。

于 2018-03-14T12:03:08.880 回答