haproxy+三节点EMQ X Broker,不能直连MQTT

问题描述

haproxy+三节点EMQ X Broker
haproxy ip 192.168.10.11
Broker三个节点IP为:192.168.10.20 192.168.10.21 192.168.10.22
haproxy监听的1883端口可以连接到mqtt服务器(客户端连接192.168.10.11的1883端口可以连接)
直连节点的mqtt端口无法连接(连接192.168.10.20和21 和22 都无法连接)

环境信息

  • EMQ X 版本:4.2.9
  • 操作系统及版本:cnetos 7
  • 其他

相应的配置文件内容


详细日志


相关截图

1 个赞

Broker三个节点如果你没改的话默认的端口是18083,你把这个端口从防火墙开出去了吗?

HTTP的18083网页端口可以打开,网页可以访问,用mqtt客户端无法连接,防火墙关闭的,

建议多抓包看看… 大概就能推测得出来 那个节点网络/报文出错了

你确定你连接到haproxy的时候,emqx上也有客户端连接?
比如nginx做负载到三台emqx,如果我把三台emqx都关了,那么也是可以连接到nginx开放的哪个端口的。我认为你上图的连接仅仅是连接到代理 haproxy,而不是通过代理haproxy负载到了emqx上,查看是不是emqx的问题。

用haproxy端口连接过来的时候,EMQX后台有客户端连接。主题订阅都能在后台看得到。

无法连接的时候的提示是啥,还有emqx后台日志,有没有这个连接的信息

你看我帖子的截图,没有任何提示,就是连接不上。后台没有连接的日志。用haproxy连接后台有连接和断开的日志

2021-04-01 10:39:24.814 [error] supervisor: ‘esockd_connection_sup - <0.1804.0>’
errorContext: connection_shutdown
reason: {invalid_proxy_info,<<16,30,0,4,77,81,84,84,4,192,0,10>>}
offender: [{pid,<0.2035.0>},
{name,connection},
{mfargs,
{emqx_connection,start_link,
[[{deflate_options,[]},
{max_conn_rate,10000},
{active_n,100},
{zone,external}]]}}]

服务器报错日志,应该怎么处理呀?

这个就是连接mqtt协议然后被判断为代理的协议,然后按照代理协议解析出错

应该是你mqtt配置了代理,但是实际没有代理导致

好的谢谢。
在 Dashboard 里面的模块内把emqx_mod_subscription停用了。
emqx.conf配置文件里面也没发现配置了代理规则,还有那些地方要修改的呢?
停用模块后重启了emqx服务 还是不能连接

处理好了。是因为打开了这个配置。listener.tcp.external.proxy_protocol = on