是否有可能对MQTT代理进行负载平衡?我可以使用ELB来负载平衡MQTT吗?关于这方面的任何指针都将是有帮助的。我发现了http://www.slideshare.net/kellogh/mqtt-kafka-33100776,但它并没有提供太多帮助。
是否有可能对MQTT代理进行负载平衡?我可以使用ELB来负载平衡MQTT吗?关于这方面的任何指针都将是有帮助的。我发现了http://www.slideshare.net/kellogh/mqtt-kafka-33100776,但它并没有提供太多帮助。
使用 HAProxy。 这是一个免费、快速且可靠的解决方案,可提供基于TCP和HTTP应用程序的高可用性、负载平衡和代理。它适用于非常高流量的网站。
(在@JD Allens的回答上补充) 在MQTT或TCP中进行负载均衡通常不会按预期工作,如果您在服务器上保留了状态(如MQTT订阅),例如,如果您在LB后面有两个MQTT后端服务器,则一半的MQTT客户端将连接到一个MQTT代理,另一半将连接到另一个代理。由于这两个代理没有任何连接,客户端将不知道另一个代理中正在发生什么(订阅和发布)。您有两个选择:
只需配置负载均衡器,将所有连接定向到单个代理,仅在出现错误时才故障转移至另一个代理。在给定时间内应仅有一个代理处于活动状态(这不是真正的负载均衡)。
使用类似HiveMQ、EMQX等集群MQTT代理,它们将连接后端代理。
我更喜欢使用HAProxy
而不是AWS ELB
,因为在IaaS或PaaS上可以获得更多的灵活性。
您可以查看haproxy-mqtt使用Docker。核心haproxy.cfg
文件在这里。