生成消息时是否必须指定所有Kafka代理IP

时间:2019-02-07 06:43:58

标签: apache-kafka kafka-producer-api

我有3个经纪人kafka集群和3个zookeeper。

我的问题是,我们是否必须像下面这样在producer-console.sh文件中仅提供一个IP地址

/kafka-console-producer.sh --broker-list 192.168.7.110:9092 --topic test

或所有三个IP地址

./kafka-console-producer.sh --broker-list 192.168.7.110:9092,192.168.5.110:9092,192.168.3.111:9092 --topic test

如果我仅提供一个IP来生成消息并且该IP在一段时间后关闭,将会发生什么。我能否通过该IP发出消息,还是必须提供所有IP地址?

1 个答案:

答案 0 :(得分:1)

查看Producer config文档,这些文档描述了bootstrap.servers的用途(bootstrap-servers / broker-list是同义词):

  

用于建立与Kafka群集的初始连接的主机/端口对列表。

     

客户端将使用所有服务器,而不管此处指定用于引导的服务器是什么-此列表仅影响用于发现整套服务器的初始主机。该列表的格式应为host1:port1,host2:port2,....

     

由于这些服务器仅用于初始连接以发现完整的集群成员身份(可能会动态更改),因此此列表不需要包含完整的服务器集(您可能需要不过,以防万一服务器宕机。

因此,如果您仅提供一个IP,然后将该IP关闭,那么您的生产者将在尝试连接时失败。但是,例如,您可以提供两个IP,这样,如果一个IP失败,生产者仍然可以连接到另一个IP。但是,实际消息发送到的代理不受此影响。

请参见also this answer here