我想在两个数据中心部署一个kafka集群,每个dc上有相同数量的节点。第一个直流用于主动模式,而第二个直流用于被动模式。
例如,假设两个数据中心都有3个节点,第一个dc上有2个同步副本(isr),第二个dc上有一个isr。
第三个dc是否可能包含仲裁人/见证人/观察者节点,以便在一个dc失败的情况下,领导人选举可以在一致性方面取得正确结果?mongodb有这样一个特性,名为副本集仲裁器。
在三个数据中心部署zookeeper怎么样?据我所知,zookeeper不持有Kafka数据,因此不应就Kafka主题中的每一条新记录联系zookeeper,也就是说,您不必为每一条新记录向第三个dc支付延迟。
1条答案
按热度按时间envsm3lx1#
在2017年Kafka峰会上有一个演示,一个数据中心是不够的:跨多个数据中心扩展ApacheKafka谈到了这个设置。多数据中心apachekafka灾难恢复白皮书中还有一些有趣的信息® 部署。它说它可以工作,他们称之为观察者节点,但它也说从来没有人尝试过这个。
zookeeper为kafka(0.9.0+)跟踪以下元数据。
选择控制器-控制器是代理之一,负责维护所有分区的领导者/追随者关系。当一个节点关闭时,是控制器告诉其他复制副本成为分区引线,以替换即将离开的节点上的分区引线。zookeeper用于选择一个控制器,确保只有一个控制器,并在控制器崩溃时选择一个新的控制器。
集群成员-哪些代理仍然存在并且是集群的一部分?这也是通过zookeeper管理的。
主题配置-该主题有哪些覆盖,分区位于何处等。
配额-每个客户端允许读写多少数据
acls-谁可以读写哪个主题
Kafka和Zookeeper之间的依赖关系的更多细节,Kafka常见问题解答和答案在库拉从Kafka委员会工作合流。
从我读到的资源中,一个设置有两个dc(kafka加zookeeper)和一个仲裁器/见证器/观察者zookeeper节点(位于第三个dc上,具有高延迟)可以工作,但我还没有找到任何实际进行过实验的资源。