首页 文章

kafka与多个zookeeper配置

提问于
浏览
0

对集群设置有点困惑:

  • Zookeeper可以通过在文件中配置myid(1,2,3 ...)并在zoo.cfg文件中具有例如zookeeper1:2888:3888,zookeeper2:2889:3889来设置为集群

  • 对于Kafka,在server.properties文件中,是否必须为参数zookeeper.connect指定zookeeper服务器的完整列表,或者仅仅1就足够了?有什么不同吗?我已经看到了即使在创建主题时指定zookeeper服务器的完整列表的做法,例如/opt/kafka/bin/kafka-topics.sh --create --zookeeper x.x.x.x:2181,x.x.x.x:2181,x.x.x.x:2181 --rerelication-factor 1 --partitions 1 --topic sample_test

--- 生产环境 和DR设置( 生产环境 和博士之间的延迟很大)---

  • 假设 生产环境 中有1个Kafka(kafka1)和1个zookeeper服务器(zookeeper1),DR中有1个kafka(kafka2)和1个zookeeper服务器(zookeeper2),并将这2个动物园管理员组成一个集群;

  • 运行uReplicator将 生产环境 中的数据复制到DR;从uReplicator示例来看,似乎配置如下:kafka1(在 生产环境 中)连接到“zookeeper1:2181 / cluster1”,而kafka2(在DR中)连接到“zookeeper1:2181 / cluster2”,这是什么意思“/ cluster1“,”/ cluster2“?什么是这个场景的正确配置,让DR中的kafka2连接到prod中的zookeeper1是什么想法?

2 回答

  • 0

    是否必须为参数zookeeper.connect指定zookeeper服务器的完整列表

    最好至少放3或5.如果你只放一个,那么 Kafka 很可能不会按预期工作,或者失败 .

    在DR中,将这2个动物园管理员组成一个集群

    通常不鼓励在Kafka集群之间共享Zookeepers集群,因为Kafka对Zookeeper为大量Kafka集群施加了合理的负载 .

    但是,正如你所指出的那样

    连接到“zookeeper1:2181 / cluster1”,kafka2(在DR中)连接到“zookeeper1:2181 / cluster2”,“/ cluster1”,“/ cluster2”是什么意思?

    这在Zookeeper中称为Chroot . 可以把它想象成Zookeeper集群中每个唯一Kafka集群的目录或命名空间 .

    让DR中的kafka2连接到zookeeper1的想法是什么?

    好吧,你不会 . 如果Kafka2有自己唯一的主题数据没有被复制到Kafka1,那么指向Zoover数据,说明Kafka2上存在的那些主题,但Kafka1只会导致混淆和错误 .


    另外,我不知道uReplicator除了MirrorMaker之外是如何工作的,但你也想要为Zookeeper准备DR策略,而不仅仅是Kafka

  • 0

    你有两个问题 . 我会尝试至少解决第一个问题:

    • 仅指定一个zookeeper服务器:端口通常就足够了,但在 生产环境 实例/属性中,您总是希望配置所有这些服务器 . 如果其中一个服务器出现故障,但群集仍在运行(例如,3个Zookeeper服务器中有2个已启动),Kafka将尝试配置中的下一个服务器,直到找到可以与之通信的服务器 . 但是,如果您选择放置的唯一一个恰好在该确切时间停止,则服务器最好始终在配置中包含整个zookeeper服务器列表 .

相关问题