我想在两个数据中心部署一个Kafka集群,每个DC上的节点数相同。第一个DC用于主动模式,而第二个DC处于被动模式。
例如,假设两个数据中心都有3个节点,第一个DC上有2个同步复制(ISR),第二个DC上有一个ISR。
是否有可能让第三个DC包含仲裁者/见证/观察者节点,以便在一个DC失败的情况下,领导者选举能否在一致性方面取得正确的结果? mongoDB具有名为Replica set Arbiter的功能。
如何在三个数据中心上部署ZooKeeper?根据我的理解,ZooKeeper不保存Kafka数据,不应该为Kafka主题中的每个新记录联系它,即你不为每个新记录支付第三个DC的延迟。
答案 0 :(得分:1)
在2017年卡夫卡峰会One Data Center is Not Enough: Scaling Apache Kafka Across Multiple Data Centers上有一个关于此设置的演讲。 Confluent白皮书Disaster Recovery for Multi-Datacenter Apache Kafka® Deployments中还有一些有趣的信息。 它说它可以工作,他们称之为观察者节点,但它也说没有人尝试过这个。
Zookeeper会跟踪Kafka(0.9.0 +)的以下元数据。
有关Kafka和Zookeeper在Kafka FAQ和answer at Quora from a Kafka commiter working at Confluent之间的依赖关系的更多细节。
从我读过的资源中,在第三个DC上具有高延迟的两个DC(Kafka加Zookeeper)和仲裁/见证/观察者Zookeeper节点的设置可以工作但我还没有找到任何已经实验过的资源。