Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡具有多个zookeeper配置_Apache Kafka_Apache Zookeeper - Fatal编程技术网

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策略,而不仅仅是卡夫卡