Apache kafka 卡夫卡具有多个zookeeper配置
Apache kafka 卡夫卡具有多个zookeeper配置,apache-kafka,apache-zookeeper,Apache Kafka,Apache Zookeeper,对群集设置有点困惑:
Zookeeper可以通过在文件中配置myid(1,2,3…)并在zoo.cfg文件中配置例如zookeeper1:2888:3888、zookeeper2:2889:3889来设置为集群
对于Kafka,在server.properties文件中,是否必须为参数zookeeper.connect指定zookeeper服务器的完整列表,或者仅1就足够了?有什么不同吗?
我见过在创建主题时指定zookeeper服务器的完整列表的实践,例如/opt/kafka/bin/kafk
对群集设置有点困惑:
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--复制因子1--分区1--主题示例测试
---生产和灾难恢复设置(生产和灾难恢复之间预计会有较大的延迟)---
比如说,生产中有1个卡夫卡(卡夫卡1)和1个zookeeper服务器(zookeeper1),DR中有1个卡夫卡(卡夫卡2)和1个zookeeper服务器(zookeeper2),并将这2个zookeeper组成一个集群
运行uReplicator将生产中的数据复制到DR;从UreReplicator示例来看,似乎配置如下:kafka1(在生产中)连接到“zookeeper1:2181/cluster1”,kafka2(在DR中)连接到“zookeeper1:2181/cluster2”,那么“/cluster1”和“/cluster2”的含义是什么?这个场景的正确配置是什么?让DR中的kafka2连接到prod中的zookeeper1有什么想法
你有两个问题。我将尝试至少解决第一个问题:
- 仅指定一个zookeeper服务器:端口通常就足够了,但在生产实例/属性中,您总是希望配置所有这些实例/属性。如果其中一台服务器已关闭,但集群仍在运行(例如,三分之二的Zookeeper服务器已启动),Kafka将尝试配置中的下一台服务器,直到找到一台可以与之对话的服务器。然而,如果您选择放置的唯一一个恰好在该时间关闭,服务器将根本无法与Zookeeper通话。最好总是在配置中包含zookeeper服务器的整个列表
是否必须为参数zookeeper.connect指定zookeeper服务器的完整列表
这是一个很好的做法,把至少3或5。如果你只放一个,那么卡夫卡很可能不会像预期的那样工作,或者失败
在DR中,将这两个动物园管理员组成一个集群
通常不鼓励在卡夫卡集群之间共享Zookeeper集群,因为卡夫卡为高容量卡夫卡集群的Zookeeper提供了合理的负载
不过,正如你所指出的
连接到“zookeeper1:2181/cluster1”,而kafka2(在DR中)正在连接到“zookeeper1:2181/cluster2”,那么“/cluster1”和“/cluster2”的含义是什么
这在Zookeeper中称为Chroot。将其视为Zookeeper集群中每个唯一Kafka集群的目录或名称空间
让卡夫卡2在DR中连接到prod中的zookeeper1有什么想法
嗯,你不会的。如果Kafka2有自己独特的主题数据,但没有复制到Kafka1,那么指向Zookeeper数据,指出这些主题存在于Kafka2上,而不是Kafka1上,只会导致混淆和错误
另外,除了MirrorMaker之外,我不知道uReplicator是如何工作的,但您还需要为Zookeeper准备DR策略,而不仅仅是卡夫卡