2014-10-09 201 views

回答

12

你不能做蚊子聚类。

一些其他MQTT经纪人那里支持集群,包括HiveMQ。 HiveMQ具有自动发现和分布式无主架构的弹性集群能力,并且非常适合AWS或Azure等云提供商。

您可以看到支持集群here的所有经纪商的完整列表。

声明:我是HiveMQ的开发者,所以这个答案可能有偏差。

+0

HiveMQ在Azure上的表现如何?默认情况下,Azure虚拟机具有ICMP阻塞,并且使用普通的Mosquitto实例,因此我们遇到了很多断开连接。你能确认HiveMQ在最新的Azure虚拟机上运行良好吗? – qgicup 2016-01-19 09:51:45

2

它不在Dominik提到的列表中,但Solace Systems有一个支持集群的MQTT设备。每个代理支持数十万个并发的客户端连接。

免责声明:我在安慰

2

已经设置一个HAProxy的前端,反向代理几个听我的经纪人已经解决了mosquitto集群方式的系统工程师。

我也走了一步,利用DNS SD它与-S标志mosquitto支持最新版本。

但是已有一些头痛这样的设计,即在dnssd和libresolv库在大多数发行版不遵守resolv.conf中的域名和搜索领域的应用支持。

因此,如果您在传统环境中工作,那么我会建议您查看rabbitmq,hivemq或redis pubsub以获取更多生产级解决方案,以便将其锁定到现有的脚印中。

7

此答案的原始数据来源:Horizontal scaling for brokers。我只是添加了插件支持。 mosquitto经纪人合并的

两种功能可以被用来设置一个n节点群集。

  1. Mosquitto桥梁支座。
  2. 支持插件 - mosquitto认证 - 塞(1

桥的功能只是用来同步所有mosquitto经纪人之间的消息,而mosquitto认证 - 插件可以用来保存授权和访问控制列表中单个数据库后端。

虽然搭好桥,看到的输入/输出桥主题的使用,以避免转发环路(2)。该模式是格式

topic pattern [[[ out | in | both ] qos-level] local-prefix remote-prefix] 

报价mosquitto.conf手册页(3),对于进来的话题,大桥将预先准备的格局与远程前缀和订阅所产生的话题上,远程代理。当接收到匹配的传入消息时,远程前缀将从主题中删除,然后添加本地前缀。反之亦然

示例mosquitto.conf 3节点群集在下面。要用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  +-------------+ 
              +-----^--^--------+ 
               | | 
               | | 
               + + 
+0

http://stackoverflow.com/a/36283565/504554 – hardillb 2016-04-02 19:34:39

+0

@hardillb我应该删除此答案还是需要更清楚的来源归因? – Kiran 2016-04-02 19:37:48

+0

本来很高兴能说出想法的来源 – hardillb 2016-04-02 19:38:31

1

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

VerneMQ和EMQ都用Erlang编写的,这是非常适合分布式消息,所有的复制都是建立在(Erlang)语言的工具集中的。

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

您也可以看看HiveMQ这是块最古老的孩子,却没有祈祷,许可证不能使用。

0

你可以看看Bevywise IoT Platform。这是一个商业产品。这可以选择尽可能多的经纪人来扩大规模。这支持MQTT和MQTT-SN协议。

声明:我为Bevywise Networks工作。