Kafka服务端部署于A服务器,B服务器消费端连接失败求助
解决Kafka消费端无法连接远程Broker的问题
Hey,我之前也碰到过这个一模一样的问题!你看到的Connection to node -1 could not be established警告,本质是消费端没法正确连接到A机上的Kafka Broker,咱们一步步来排查:
第一步:先确认网络连通性
在B机上先测试和A机的网络是否通畅:- 执行
ping 192.168.78.131,如果ping不通,先解决网络路由或者防火墙的基础问题。 - 测试9092端口是否可访问:执行
telnet 192.168.78.131 9092或者nc -zv 192.168.78.131 9092,如果连接失败,说明A机的防火墙挡住了9092端口,需要在A机上开放该端口(比如用firewalld的话,执行firewall-cmd --add-port=9092/tcp --permanent然后firewall-cmd --reload)。
- 执行
第二步:检查Kafka Broker的核心配置(最容易踩坑!)
登录A机,找到Kafka的server.properties配置文件,重点检查两个参数:listeners:不能设置为PLAINTEXT://localhost:9092或PLAINTEXT://127.0.0.1:9092,否则Broker只监听本地请求。改成PLAINTEXT://0.0.0.0:9092(监听所有网卡)或者PLAINTEXT://192.168.78.131:9092(指定A机的内网IP)。advertised.listeners:这个是Broker对外宣告的地址,必须设置为B机能访问到的A机地址,也就是PLAINTEXT://192.168.78.131:9092。如果这个参数缺失或设为localhost,消费端会拿到localhost地址,自然无法连接。
修改完配置后,一定要重启Kafka服务才能生效。
第三步:确认目标Topic是否存在
虽然错误提示是连接问题,但也可以顺带确认下test主题是否存在。在A机执行:bin/kafka-topics.sh --list --bootstrap-server localhost:9092如果没有
test主题,先创建它:bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1第四步:检查版本兼容性
偶尔版本差异过大也会导致连接问题,分别在A机和B机执行bin/kafka-topics.sh --version查看版本,尽量保证两者版本一致或在官方兼容范围内。
我当时碰到这个问题就是因为advertised.listeners没设置对外IP,改完重启就好了,你按上面的步骤排查应该能解决!
内容的提问来源于stack exchange,提问作者Linuxea
相关产品推荐
相关产品推荐

