东营中移动网站建设/网络优化报告
一、问题
在线下集群搭建好大数据集群环境之后,同一局域网内的其他机器(非集群机器),想往 kafka 集群写数据,发现无法写入,broker配置为:192.168.17.41:9092,192.168.17.42:9092,192.168.17.43:9092。
kafka 版本为:0.10.2
报错如下
二、解决
在集群上修改 advertised.host.name 参数如下:
重启 kafka 集群,即可正常访问
三、原因分析
在 client 里断点跟踪一下,发现是 findLeader 的时候返回的元信息是机器名而不是 ip,客户端无法解析这个机器名,无法访问到,所以出现了前面的异常。
可以在客户端本地加 /etc/hosts ,做一个映射,让客户端可以识别到 机器名,也是可以解决问题。但这样的话,每个客户端都要配置一个无关的参数,不优雅。
在kafka 服务器端这边修改 advertised.host.name 参数后,返回的就是 ip 了,这样客户端就可以顺利访问到。