mosquitto集羣配置

--------------------------------------------------------前言-------------------------------------------------------------------node

目前,官方的版本中,是沒有集羣功能的。官方說,能夠使用bridge功能,將多個mqtt broker鏈接在一塊兒。服務器

筆者查找了網上的配置,大部分爲以下配置:負載均衡

                                          圖一tcp

 

 在主節點192.168.1.1的mosquitto.conf中,配置:ui

connection nodeA
address 192.168.1.5:1883
topic # both 0

connection nodeB
address 192.168.1.6:1883
topic # both 0

  

如上圖所示,確實能夠實現集羣,可是有一個問題,若是主(192.1638.1.3)服務器down機,則全部的從服務器將會變成孤立的節點。spa

這個時候,筆者第一反應是,在添加一個主服務器,不就能夠了嗎,以下圖所示:.net

 

 

                                          圖二3d

 bridge-2與bridge的配置相同。在筆者沾沾自喜之際,同組的同事問我,是我一直在向mosquitto中寫消息嗎。code

 仔細檢查配置,怎麼會一直寫消息呢,查看消息,是同樣的。是的,死循環了。orm

mosquitto的橋接模式,本質上是pub/sub。

橋接配置中,在topic後有一個both/in/out的配置,是配置topic中的消息被轉發的方向的,both:雙向,in:進,out:出

筆者在圖二中,都配置了both,則出現了死循環。如消息發送到3 , 3--->5 , 5--->4 , 4--->3  。

------------------------------------------------正文-----------------------------------------------------------------------------------------

 

 

仍然存在的問題:

(1)若是在增長bridge節點,須要修改多個節點的配置,而且重啓,維護成本高。

(2)tcp長鏈接的負載均衡,由客戶端來創建鏈接。客戶端鏈接斷開後,再次請求會從新創建鏈接,這時候,lvs將鏈接轉發到存活節點,並創建長連接。當down機節點啓動後,已經鏈接到其餘節點的鏈接,不會再被負載到這臺機器,只能等待從新鏈接,容易形成負載不均衡。

(3)keepalived的檢查。keepalived在檢查時,會不停的請求1883端口。

 參考:

https://blog.csdn.net/Z729685731/article/details/70142182

https://stackoverflow.com/questions/26280208/cluster-forming-with-mosquitto-broker

相關文章
相關標籤/搜索