RocketMQ通过端口映射/nginx转发后无法访问broker导致的消费数据问题

最近因为正好用到了RocketMQ,配置了后因为网络安全原因,需要做多层转发到外网访问,并添加了acl控制,内网测试时一切正常,但是发现9876映射出去后,发现消费端消费不到数据并且无报错,因此兜兜转转花了2天多才解决

1.首先说说为什么消费不到数据,是因为只做了9876的映射,实际broker的端口有4个,9876,10911, 10912, 10909

官网解释如下

而后我把测试环境只开放9876,然后复现,消费者确实无法获取数据

通过wireshark抓包也能看见9876中返回10911的连接方式,逻辑是mq内部处理的

2.开放端口后还是获取不到数据,通过wireshark的抓包分析,发现rocketmq还是发送的内网IP,并不是公网IP,后经查询,是需要通过配置broker.conf实现

具体就是这两个属性(注意IP大写,注意IP大写,注意IP大写!!!),brokerIP1配置外网IP,brokerIP2配置内网IP

通过抓包可知,确实映射了外网IP出来

到这一步理论上应该结束了,但是通过报文可以知道,发出来的走的是10911,但是正常为了安全考虑,一般不会映射默认端口出来,所以还得改broker.conf中的listenPort(Broker 对外服务的监听端口),要与映射端口一致才可以,配置好后外网正常取数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值