与Mosquitto经纪人形成集群

时间:2014-10-09 13:50:43

标签: mqtt mosquitto

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

7 个答案:

答案 0 :(得分:15)

你无法与mosquitto进行聚类。

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

您可以查看支持群集here的所有代理的完整列表。

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

答案 1 :(得分:8)

这个答案的原始来源:Horizontal scaling for brokers。我刚刚添加了插件支持。

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

  1. Mosquitto桥支持。
  2. 插件支持 - mosquitto-auth-plug(1
  3. 网桥功能仅用于同步所有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的群集支持。

EMQX MQTT Broker