如上图所示,我有两个客户端想要进行通信,但是因为使用了集群与nginx的负载均衡,在进行通信的时候如果两个客户端没有分布在相同节点下的时候,他们就无法进行通信;目前是使用共享订阅来处理消息接收的问题。但是因为有一个节点是在外面的设备,无法修改为共享订阅,需要如何让不同节点间的设备进行互相访问。
对应的nginx配置:
stream {
upstream mqtt_tcp_server {
zone tcp_servers 64k;
# hash $remote_addr;
# least_conn;
server 127.0.0.1:1884 max_fails=2 fail_timeout=30s;
server 192.168.20.2:1883 max_fails=2 fail_timeout=30s;
}
server {
listen 1883;
#status_zone tcp_server;
proxy_pass mqtt_tcp_server;
proxy_connect_timeout 150s;
proxy_buffer_size 3M;
proxy_timeout 150s;
proxy_protocol on;
set_real_ip_from 192.168.20.7;
tcp_nodelay on;
}
}
防火墙端口没开放导致。。。