我有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地址?
答案 0 :(得分:1)
查看Producer config文档,这些文档描述了bootstrap.servers
的用途(bootstrap-servers
/ broker-list
是同义词):
用于建立与Kafka群集的初始连接的主机/端口对列表。
客户端将使用所有服务器,而不管此处指定用于引导的服务器是什么-此列表仅影响用于发现整套服务器的初始主机。该列表的格式应为host1:port1,host2:port2,....
由于这些服务器仅用于初始连接以发现完整的集群成员身份(可能会动态更改),因此此列表不需要包含完整的服务器集(您可能需要不过,以防万一服务器宕机。
因此,如果您仅提供一个IP,然后将该IP关闭,那么您的生产者将在尝试连接时失败。但是,例如,您可以提供两个IP,这样,如果一个IP失败,生产者仍然可以连接到另一个IP。但是,实际消息发送到的代理不受此影响。