2015-07-11 94 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決策 。今天有些公司正在這樣做。