对集群设置有些困惑:
Zookeeper设置为群集
对于Kafka,在server.properties文件中,是否必须为参数zookeeper.connect指定zookeeper服务器的完整列表,还是仅1个就足够了?有什么区别吗? 我看到了即使在创建主题时也要指定Zookeeper服务器完整列表的做法,例如/opt/kafka/bin/kafka-topics.sh --create --zookeeper xxxx:2181,xxxx:2181,xxxx:2181-复制因子1-分区1 --topic sample_test
---生产和DR设置(预计生产和dr之间会有较大的延迟)---
假设生产中有1个Kafka(kafka1)和1个Zookeeper服务器(zookeeper1),在DR中有1个kafka(kafka2)和1个zookeeper服务器(zookeeper2),并将这2个Zookeeper组成一个集群;
运行uReplicator将生产中的数据复制到灾难恢复;从uReplicator示例中,似乎配置如下:kafka1(生产中)连接到“ zookeeper1:2181 / cluster1”,而kafka2(生产中)连接到“ zookeeper1:2181 / cluster2”,“ /”的含义是什么cluster1“,” / cluster2“?在这种情况下正确的配置是什么,将DR中的kafka2连接到prod中的zookeeper1的想法是什么?
答案 0 :(得分:0)
您有两个问题。我将尝试至少解决第一个问题:
答案 1 :(得分:0)
是否必须为参数zookeeper.connect指定Zookeeper服务器的完整列表
优良作法是至少放置3或5。如果仅放置1或5,然后落下,Kafka可能无法按预期工作或失败。
在灾难恢复中,将这两个动物园管理员组成一个集群
通常不建议在Kafka群集之间共享Zookeepers群集,因为Kafka对大量Kafka群集的Zookeeper施加了合理的负载。
尽管如此,您指出
连接到“ zookeeper1:2181 / cluster1”,并且kafka2(在DR中)连接到“ zookeeper1:2181 / cluster2”,“ / cluster1”,“ / cluster2”是什么意思?
这在Zookeeper中称为Chroot。可以将其视为Zookeeper群集中每个唯一Kafka群集的目录或名称空间。
将DR中的kafka2连接到产品中的zookeeper1的想法是什么?
嗯,你不会。如果Kafka2拥有自己的唯一主题数据,并且没有复制到Kafka1上,则指向指出这些主题存在于Kafka2上的Zookeeper数据,但没有Kafka1只会导致混乱和错误。
此外,我不知道uReplicator除MirrorMaker以外的工作方式,但您还想为Zookeeper(不仅是Kafka)准备一个灾难恢复策略