首页 > 技术文章 > kafka:client has run out of available brokers to talk to (Is your cluster reachable?)

gyyyl 2020-08-06 15:32 原文

最开始我将kafka和zookeeper部署在远程服务器上面,然后在本地用sarama连接kafka并且向里面写数据,但是报错:

send msg failed,err: dial tcp: lookup localhost.localdomain: getaddrinfow: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative se

这是因为我修改kafka和zookeeper的配置文件的时候只修改了日志文件存放位置这个配置选项,没有增加listeners和advertised.listeners这两个选项

所以在kafka的配置文件里面server.properties这个文件中增加这两个配置选项

listeners=PLAINTEXT://:9099
advertised.listeners=PLAINTEXT://175.24.115.7:9099

但是我在sarama的代码中写的是:

client, err := sarama.NewSyncProducer([]string{"175.24.115.7:9092"}, config)

 所以在连接的时候又出现了下面这个错误:

producer closed,err: kafka: client has run out of available brokers to talk to (Is your cluster reachable?)

然后我修改了端口,就可以正常使用了:

listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://175.24.115.7:9092

我想我出现这些问题的原因是最开始没有设置listeners和advertised.listeners这两个配置,因为我们的客户端连接kafka的时候首先是与zookeeper连接,然后通过zookeeper获取kafka的ip和端口,如果不设置listeners和advertised.listeners这两个配置,那么zookeeper就用默认的localhost代替kafka的ip,然而我们在远程连接kafka的时候肯定不能够使用localhost去连接,所以需要通过advertised.listeners设置的ip去连接。

推荐阅读