2团
Published on 2024-08-16 / 16 Visits
0
0

RokcetMQ连接报错:connect remote host[172.17.0.1:30911] failed

1.前言

最近环境中负载较高,于是协调运维给集群中的机器做了升配,调整MQ的配置并逐个进行重启。

但是在重启后,发现业务服务器连接MQ报createChannel: connect remote host[172.17.0.1:30911] failed错误,比较奇怪的点是,RocketMQ是Dledger模式部署的,其IP分别为192.168.157.7,192.168.157.8以及192.168.157.9,没有设置172.17.0.1这个IP。

2.问题排查

应用的mq配置基本如下:

rocketmq:
  name-server: rocketmq1.xsk.top:9876;rocketmq2.xsk.top:9876;rocketmq3.xsk.top:9876;rocketmq4.xsk.top:9876
  producer:
    group: connector-producer-group
    enable-msg-trace: false
    send-message-timeout: 10000

然后在主机的hosts(/etc/hosts)文件里配置:

182.168.157.7 rocketmq1.xsk.top
182.168.157.8 rocketmq2.xsk.top
182.168.157.9 rocketmq3.xsk.top

在应用机器上,分别尝试ping rocketmq1.xsk.toprocketmq2.xsk.toprocketmq3.xsk.top,均可以正常响应。

于是回顾MQ部署节点,联想172.17.0.1可能是docker启动的docker0网桥地址,于是检查报错的MQ broker地址,发现确实存在一个Docker容器在运行。

那么问题就比较明确了,Broker启动时,因为未指定监听的地址信息,Broker监听到172.17.0.1这个地址上了。

3.解决方案

image-vlqk.png

去官网上查询,只需要在配置文件中添加brokerIP1属性,即可指定Broker服务监听的地址。

于是在配置文件中添加此属性,发现服务恢复正常运行。


Comment