项目场景:
软硬件背景:
Operating System: Kylin Linux Advanced Server V10 (Tercel)
操作系统:麒麟V10
内核程序:Linux 4.19.90
问题描述
复合型问题:
docker容器,监听部分启动参数:
# 外部监听,使用docker镜像时设置为外部地址,使客户端正确连接(或者可以称为客户端连接地址)
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://ip:9092 \
# (kafka)内部监听,kafka所绑定的ip:端口
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
情况1,当使用ip作为外部监听时
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://ip:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
服务器报错信息1:
connection to node 1004 (/ip:9092) could not be established.
Broker may not be available.(org.apache,kafka.clients.NetworkClient)
提示无法连接当前外部监听地址
情况2,当使用本地(localhost/127.0.0.1)作为外部监听时,服务器恢复正常,kafka正常发送/接收消息
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
但客户端报错信息2:
#报错(1)获取不到元数据
Error while fetching metadata with correlation id 1430 : {questionnaireNotice=INVALID_REPLICATION_FACTOR}
#报错(2)无法连接等
connection to node -1(localhost/127.0.0.1:9092) could not be established
Bootstrap broker ip:9092 (id: -1 rack: null) disconnected
此时尚在怀疑排查docker容器中,并未想到环境问题
解决方案:
docker容器,监听部分启动参数:
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://ip:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
一直处理排查容器,最终确认网络问题
本地telnet ip 9092,无论容器启动停止都不通
排查转向为网络问题,结论是麒麟系统类似CentOS 7,防火墙无论启动停止都是算启动情况,是操作系统问题(开始已经关闭防火墙)
#防火墙状态
systemctl status firewalld
#防火墙启动
systemctl start firewalld
#防火墙查询策略列表
firewall-cmd --list-ports
#防火墙增加端口策略
firewall-cmd --permanent --zone=public --add-port=9092/tcp
#防火墙重新载入策略
firewall-cmd --reload
最终解决
未完待续...
仰望星空,砥砺前行