代码之家  ›  专栏  ›  技术社区  ›  E. Xue

多个动物园管理员配置的卡夫卡

  •  0
  • E. Xue  · 技术社区  · 6 年前

    对群集设置有点困惑:

    1. 可以通过在文件中配置myid(1,2,3…)并在zoo.cfg文件中具有zookeeper1:2888:3888、zookeeper2:2889:3889,将zookeeper设置为集群。

    2. 对于kafka,在server.properties文件中,是必须为参数zookeeper.connect指定zookeeper服务器的完整列表,还是只指定1就足够了?有什么区别吗? 我已经看到了在创建主题时指定ZooKeeper服务器的完整列表的实践,例如/opt/kafka/bin/kafka-topics.sh--create--zooKeeper x.x.x:2181,x.x.x.x:2181,x.x.x.x:2181--replication factor 1--partitions 1--topic sample_test

    ---生产和灾难恢复设置(生产和灾难恢复之间预计存在较大延迟)---

    1. 例如,生产中有1个kafka(kafka1)和1个zookeeper服务器(zookeeper1),DR中有1个kafka(kafka2)和1个zookeeper服务器(zookeeper2),将这2个zookeeper组成一个集群;

    2. 运行uReplicator将生产中的数据复制到dr;从uReplicator示例来看,配置如下:kafka1(生产中)连接到“zookeper1:2181/cluster1”,kafka2(在dr中)连接到“zookeper1:2181/cluster2”,“cluster1”、“/cluster2”的含义是什么?在这种情况下,正确的配置是什么?在dr中让kafka2连接到prod中的zookeeper1有什么想法?

    2 回复  |  直到 6 年前
        1
  •  0
  •   OneCricketeer Gabriele Mariotti    6 年前

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

    最好至少加3或5。如果你只放了一个,那么卡夫卡很可能不会像预期的那样工作,或者失败。

    把这两个动物管理员组成一个群体

    通常不鼓励在卡夫卡集群之间共享动物园管理员集群,因为卡夫卡为高容量卡夫卡集群向动物园管理员施加了合理的负载。

    不过,正如你指出的那样

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

    这在动物园管理员中被称为chroot。把它想象成ZooKeeper集群中每个独特的Kafka集群的一个目录或名称空间。

    让卡夫卡2在DR中与Prod中的Zookeeper1连接是什么想法?

    好吧,你不会的。如果卡夫卡有自己独特的主题数据没有被复制到卡夫卡,那么指向动物园管理员的数据,说这些主题存在于卡夫卡上,但不是卡夫卡,只会导致混乱和错误。


    另外,我不知道复制者是如何工作的,而不是镜像制造者,但你也要为动物园管理员准备一个博士策略,不仅是卡夫卡。

        2
  •  0
  •   mjuarez    6 年前

    你有两个问题。我将尝试解决第一个问题,至少:

    • 仅指定一个ZooKeeper服务器:端口通常就足够了,但在生产实例/属性中,您总是希望配置所有这些实例/属性。如果其中一台服务器关闭,但集群仍在运行(例如,3台ZooKeeper服务器中有2台已启动),Kafka将尝试配置中的下一台服务器,直到找到可以与之对话的服务器为止。然而,如果您选择放置的唯一一个恰好在那个时间关闭,服务器将无法与动物园管理员进行任何交谈。最好总是在配置中包含整个ZooKeeper服务器列表。