2015-07-11 92 views

回答

4

使用HAProxy。免费,快速和可靠的解决方案,为基于TCP和HTTP的应用程序提供高可用性,负载平衡和代理。它适用于非常高流量的网站。

+0

对于专用MQTT负载平衡,Elastic Beam也可能是一种可行的替代方法:http://www.hivemq.com/blog/scalable-and-secure-mqtt-load-balancing-with-elastic-beam-and- hivemq/ –

+0

Elastic Beam是一个付费应用程序,而HA Proxy是开源的。 –

6

大多数MQTT代理不支持负载均衡MQTT代理。虽然有支持群集的代理。看一下this list找出一个适合你的集群需求的经纪人。

本博客文章是有点过时,但如果你想了解MQTT经纪人集群可能仍然是有用的:http://www.hivemq.com/building-a-high-availability-mqtt-cluster/

要回答你的问题:MQTT经纪人HiveMQ与AWS ELB完美地适用于跨多个负载均衡可用区域。您可能希望将TCP连接的默认ELB超时增加到您用于应用程序的MQTT保持活动时间。如果需要,您甚至可以使用Auto Scaling组进行弹性缩放。 HiveMQ可以使用S3来发现其他集群节点,因此您可以在运行时添加和删除集群节点。

我不知道其他经纪人是否可以像AWS ELB一样无缝工作。如果HiveMQ不适合您的需求,最好的办法是在上面链接的列表中搜索经纪商并尝试它:)

声明:我正在为开发HiveMQ的公司工作。

0

我更喜欢HAProxyAWS ELB,因为您可以在IaaS或PaaS上获得更多灵活性。

使用Docker可以看到haproxy-mqtt。核心haproxy.cfg文件是here

1

您不能加载余额MQTT代理,就像负载均衡Web服务器一样! LB解决方案必须在MQTT主题字段中保留连接,而不是客户端的IP:端口...否则不是所有订户都会获得发布的消息。 “发布者”消息仅发送给单个MQTT代理,因此只有该代理才会重新发送消息。如果相同MQTT主题的'订阅者'转到其他代理,则不会从连接到其他代理的发布者接收消息。当然,您可以连接您的MQTT经纪商,以便他们全部都能收到信息,但那么LB-ing他们有什么意义?在这一点上,你并没有真正扩展它们,这可能就是为什么你想要把它们放在第一位。可以使用F5 BIG-IP来执行真正的MQTT LB,IF您可以创建iRule脚本来执行MQTT主题上的LB决策 。今天有些公司正在这样做。