解决连接虚拟机内kafka出现Connection to node 0 /192.168.204.131:9092 could not be established.Broker may not be available.
问题: 在我尝试使用Springboot集成虚拟机内运行的kafka服务器时,出现了以下问题。
原因:可能出现的原因主要有以下几点:
- 防火墙未关闭,导致外部无法访问虚拟机中的服务。
- kafka未配置advertised.listeners导致没有开放外部代理地址。
- 有可能是因为使用kafka自带zookeeper的原因。
解决方法:我在解决这个问题时,查阅了很多网上很多资料,根据我的解决过程,我总结出来如下解决方法。
- 首先我们不再使用kafka自带的zookeeper服务。下载zookeeper安装包—解压到home目录下—用sample文件新建一个zoo.cfg文件—开启zookeeper服务。
wget https://downloads.apache.org/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /home
cd /home/apache-zookeeper-3.5.9-bin/config
mv zoo_sample.cfg zoo.cfg
../bin/zkServer.sh start
- 增加新的配置信息到kafka的配置文件server.properties如下。
# 允许外部端口连接
listeners=PLAINTEXT://0.0.0.0:9092
# 外部代理地址
advertised.listeners=PLAINTEXT://你的虚拟机IP:9092
启动kafka。
./kafka-server-start.sh ../config/server.properties
- 最后,关闭系统防火墙。
systemctl stop firewalld
完成后,重新在Springboot中请求kafka服务,发现已经可以进行连接了。