mosquitto集群配置

Posted yimiyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mosquitto集群配置相关的知识,希望对你有一定的参考价值。

--------------------------------------------------------前言-------------------------------------------------------------------

目前,官方的版本中,是没有集群功能的。官方说,可以使用bridge功能,将多个mqtt broker连接在一起。

笔者查找了网上的配置,大部分为如下配置:

技术分享图片

                                          图一

 

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

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机,则所有的从服务器将会变成孤立的节点。

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

 

 技术分享图片

                                          图二

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

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

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

 

以上是关于mosquitto集群配置的主要内容,如果未能解决你的问题,请参考以下文章

Centos7.2 MQTT的学习之Mosquitto搭建&集群搭建&使用

Mosquitto的配置文件mosquitto.conf

Mosquitto搭建Android推送服务Mosquitto服务器用户登录与权限配置

MQTT--Mosquitto的配置文件

Mosquitto搭建Android推送服务Mosquitto简介及搭建

Mosquitto搭建Android推送服务Mosquitto简介及搭建