mosquitto集群配置

--------------------------------------------------------前言-------------------------------------------------------------------node

目前,官方的版本中,是没有集群功能的。官方说,能够使用bridge功能,将多个mqtt broker链接在一块儿。服务器

笔者查找了网上的配置,大部分为以下配置:负载均衡

                                          图一tcp

 

 在主节点192.168.1.1的mosquitto.conf中,配置:ui

connection nodeA
address 192.168.1.5:1883
topic # both 0

connection nodeB
address 192.168.1.6:1883
topic # both 0

  

如上图所示,确实能够实现集群,可是有一个问题,若是主(192.1638.1.3)服务器down机,则全部的从服务器将会变成孤立的节点。spa

这个时候,笔者第一反应是,在添加一个主服务器,不就能够了吗,以下图所示:.net

 

 

                                          图二3d

 bridge-2与bridge的配置相同。在笔者沾沾自喜之际,同组的同事问我,是我一直在向mosquitto中写消息吗。code

 仔细检查配置,怎么会一直写消息呢,查看消息,是同样的。是的,死循环了。orm

mosquitto的桥接模式,本质上是pub/sub。

桥接配置中,在topic后有一个both/in/out的配置,是配置topic中的消息被转发的方向的,both:双向,in:进,out:出

笔者在图二中,都配置了both,则出现了死循环。如消息发送到3 , 3--->5 , 5--->4 , 4--->3  。

------------------------------------------------正文-----------------------------------------------------------------------------------------

 

 

仍然存在的问题:

(1)若是在增长bridge节点,须要修改多个节点的配置,而且重启,维护成本高。

(2)tcp长链接的负载均衡,由客户端来创建链接。客户端链接断开后,再次请求会从新创建链接,这时候,lvs将链接转发到存活节点,并创建长连接。当down机节点启动后,已经链接到其余节点的链接,不会再被负载到这台机器,只能等待从新链接,容易形成负载不均衡。

(3)keepalived的检查。keepalived在检查时,会不停的请求1883端口。

 参考:

https://blog.csdn.net/Z729685731/article/details/70142182

https://stackoverflow.com/questions/26280208/cluster-forming-with-mosquitto-broker

相关文章
相关标签/搜索