我正在使用Mosquitto broker来实现MQTT协议。但我无法找到如何在蚊子经纪人的情况下进行聚类。对于可以与一个经纪人一起提供服务的客户数量也有任何限制。
答案 0 :(得分:15)
你无法与mosquitto进行聚类。
其他一些支持群集的MQTT代理,包括HiveMQ。 HiveMQ具有弹性集群功能,具有自动发现功能和分布式无主站架构,可在AWS或Azure等云提供商上运行良好。
您可以查看支持群集here的所有代理的完整列表。
免责声明:我是HiveMQ的开发人员,所以这个答案可能有偏见。
答案 1 :(得分:8)
这个答案的原始来源:Horizontal scaling for brokers。我刚刚添加了插件支持。
mosquitto broker的两个功能组合可用于设置n
节点集群。
网桥功能仅用于同步所有mosquitto代理之间的消息,而mosquitto-auth-plugin可用于在单个数据库后端保存授权和ACL。
在设置网桥时,请注意输入/输出网桥主题的使用,以避免转发循环(2)。格式为
topic pattern [[[ out | in | both ] qos-level] local-prefix remote-prefix]
引用mosquitto.conf手册页(3),对于传入主题,网桥将使用远程前缀添加模式,并在远程代理上订阅生成的主题。收到匹配的传入消息后,将从主题中删除远程前缀,然后添加本地前缀。对于外向主题,反之亦然
下面是3节点集群的示例 mosquitto.conf 。要使用mqtt-malaria(4)进行负载测试,更重要的是对使用 clean_session 标志连接到false的客户端的影响,。
+-------------------+
+------------------> BRIDGE BROKER <------------+
| | 192.168.1.1 | |
| +--------^----------+ |
| | |
| | |
| | |
Broker A | Broker B | | Broker C
| | |
+----------------------+--+ +----------------+--------+ +--+----------------------+
| connection A | | connection B | | connection C |
| | | | | |
| address 192.168.1.1:1883| | address 192.168.1.1:1883| | address 192.168.1.1:1883|
| | | | | |
| topic # out 2 "" A/ | | topic # out 2 "" B/ | | topic # out 2 "" C/ |
| topic # in 2 "" B/ | | topic # in 2 "" A/ | | topic # in 2 "" A/ |
| topic # in 2 "" C/ | | topic # in 2 "" C/ | | topic # in 2 "" B/ |
+----------------------^--+ +----------------^--------+ +--+----------------------+
| | ^
| | |
| | |
| +-------+---------+ |
+-------------------+ HA PROXY +-------------+
+-----^--^--------+
| |
| |
+ +
答案 2 :(得分:3)
有2个(在本文撰写时)主要的开源 支持大规模MQTT部署和集群的项目
VerneMQ和EMQ都是用Erlang编写的,它非常适合于分布式消息传递,所有复制都是(Erlang)语言的内置工具集部分。
VerneMQ拥有商业企业支持,而EMQ计划在不久的将来,两个项目都有大公司支持他们作为赞助商。
您也可以查看HiveMQ,这是该区块中最老的孩子,但没有付费许可证就无法使用。
答案 3 :(得分:2)
它不在Dominik提到的列表中,但Solace Systems有一个支持群集的MQTT设备。每个代理支持数十万个并发客户端连接。
免责声明:我是Solace的系统工程师
答案 4 :(得分:2)
我解决mosquitto群集问题的方法是建立一个反向代理几个听取代理的haproxy前端。
我还更进一步利用DNS SD,最新版本的mosquitto支持-S
标志。
然而,这种设计存在一些令人头疼的问题,即在大多数发行版的dnssd和libresolv的应用程序支持中,不尊重resolv.conf中的域和搜索字段。
因此,如果您在遗留环境中工作,那么我建议您查看rabbitmq,hivemq或redis pubsub以获得更多生产级别的解决方案,这些解决方案可以用于现有的足迹。
答案 5 :(得分:1)
您可以查看Bevywise IoT Platform。这是一个商业产品。这可以选择添加尽可能多的经纪商来扩大规模。这支持MQTT和MQTT-SN协议。
免责声明:我为Bevywise Networks工作。
答案 6 :(得分:0)
您还可以检查EMQX对MQTT的群集支持。