两台VM部署Kafka单向访问正常反向提示Broker不可用如何解决
问题根因及解决步骤
一、优先解决网络层问题(telnet返回No route to host属于网络不通,是第一优先级排查项)
- 2号虚拟机端口放行检查:默认系统防火墙会拦截外部端口访问,在2号机执行以下命令放通Kafka用到的端口:
# firewalld 体系执行 firewall-cmd --add-port=9092/tcp --add-port=9093/tcp --permanent firewall-cmd --reload # iptables 体系执行 iptables -I INPUT -p tcp --dport 9092 -j ACCEPT iptables -I INPUT -p tcp --dport 9093 -j ACCEPT service iptables save
- 1号虚拟机域名解析配置:2号机的
advertised.listeners使用hostnamemybox-1.localdomain对外宣告,1号机无对应解析规则会导致访问失败,在1号机的/etc/hosts文件中新增以下规则:
10.35.121.127 mybox-1.localdomain
- 虚拟机网络连通性检查:分别在两台机器上ping对方的IP地址,ping不通则需要排查虚拟机的网段配置、网关规则、上层网络ACL限制。
二、Kafka配置修正(网络通后需要调整的配置项)
- 2号机监听地址修正:当前
listeners绑定hostnamemybox-1.localdomain,如果该hostname默认解析到127.0.0.1,会导致外部无法访问,修改为绑定所有网卡即可:
listeners=PLAINTEXT://0.0.0.0:9093,SSL://0.0.0.0:9092
advertised.listeners保持原有配置不变,用于对外宣告访问地址。
- 跨机访问协议适配:1号机全局配置了
security.protocol=SSL,如果访问2号机的9092 SSL端口,需要把2号机的truststore文件复制到1号机,在访问客户端配置中补充ssl.truststore.location、ssl.truststore.password等SSL参数;如果不需要加密访问,可以指定走2号机的9093明文端口,同时将访问的security.protocol修改为PLAINTEXT。 - 集群配置注意:当前两台Kafka的
broker.id均为0,后续如果要搭建集群必须修改为不同的ID,单节点独立运行不影响跨机访问。
内容的提问来源于stack exchange,提问作者Hardik Rana
相关产品推荐
相关产品推荐

