与Mosquitto经纪人形成集群

Abh*_*ari 8 mqtt mosquitto

我正在使用Mosquitto代理来实现MQTT协议.但我无法找到如何在蚊子经纪人的情况下进行聚类.对于可以与一个代理服务的客户端数量也有任何限制.

Dom*_*ier 16

你不能用mosquitto进行聚类.

其他一些支持集群的MQTT代理,包括HiveMQ.HiveMQ具有弹性群集功能,具有自动发现功能和分布式无主站架构,可在AWS或Azure等云提供商上运行良好.

您可以在此处查看支持群集的所有代理的完整列表.

免责声明:我是HiveMQ的开发者,所以这个答案可能有偏见.


Kir*_*ran 8

这个答案的原始来源:经纪人的横向缩放.我刚刚添加了插件支持.

mosquitto broker的两个功能组合可用于设置n节点集群.

  1. Mosquitto桥支持.
  2. 插件支持 - mosquitto-auth-plug(1)

桥接功能仅用于同步所有mosquitto代理之间的消息,而mosquitto-auth-plugin可用于在单个数据库后端保存授权和ACL.

在设置网桥时,请注意输入/输出网桥主题的使用以避免转发循环(2).模式是格式

topic pattern [[[ out | in | both ] qos-level] local-prefix remote-prefix]
Run Code Online (Sandbox Code Playgroud)

引用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        +-------------+
                                           +-----^--^--------+
                                                 |  |
                                                 |  |
                                                 +  +
Run Code Online (Sandbox Code Playgroud)


syb*_*ten 5

有 2 个(在撰写本文时)支持大规模 MQTT 部署和集群的主要开源项目

VerneMQ 和 EMQ 都是用 Erlang 编写的,非常适合分布式消息传递,所有复制都内置在(Erlang)语言的工具集部分。

VerneMQ 有商业企业支持,而 EMQ 计划在不久的将来,这两个项目都有大公司作为赞助商支持。

您还可以查看 HiveMQ,它是该块中最年长的孩子,但如果没有付费许可证就无法使用。