Mosquito集群模式


參考鏈接:

http://blog.csdn.net/z729685731/article/details/70142182

http://blog.csdn.net/yuhaiyang457288/article/details/73927889

集群效果:無論在哪台服務器中訂閱的信息,無論在哪台服務器上發布了信息,訂閱者都可以收到發布的信息。

集群部署:橋接模式

  • 橋接方式的實現需要修改config.mk與mosquitto.conf文件。
  • 每台服務器都開啟了“橋接”模式,更改任何一台服務器上的Mosquitto.conf文件,其他服務器的Mosquitto.conf文件隨之變化。
  • 新服務器的加入或刪除只需要修改主服務器的Mosquitto.conf即可。

 

一、雙節點模式

1、開啟服務器橋接模式(默認開啟)

進入安裝目錄
cd mosquitto-1.4.9/
vi config.mk
找到WITH_BRIDGE:=yes 去掉#注釋。

2、配置Mosquitto.conf的橋連接屬性

進入etc目錄,並且打開Mosquitto.conf文件

cd /etc/mosquitto/
vi mosquitto.conf

找到Bridges節點,在下面加入如下代碼:


connection mytest
address 10.19.22.53:1883
topic room1/# both 2 sensor/ myhouse/
bridge_protocol_version mqttv311
notifications true
cleansession true
try_private true
start_type automatic

---------------------------------------------------------------------------------

connection 連接名稱,可以隨便取

address 連接的另外服務器地址和端口號,如果有多台服務器,可以寫多個address

topic 主題名稱,“#”為通配符,表示發布端可以在room1/后面接任何文字

both 服務質量,2代表只有一次

sensor/ 本地前綴標識,可以隨便命名

myhouse/ 遠程前綴標識,可以隨便命名

bridge_protocol_version mqttv311 橋連接協議版本MQTT3.11

notifications 是否發布橋接的狀態信息

cleansession 橋接斷開時,是否清除遠程服務器中的消息

start_type 橋接模式,目前有三種:automatic、lazy、once

設置好之后保存退出。

3、開啟服務器

第一步先確保從服務器先開啟,第二步重新啟動主服務器的Mosquitto服務。如果配置無誤主服務器在開啟的時候,會自動連接所有從服務器

Mytest是在Mosquitto.conf配置中設定的我的連接名稱,后面是從服務器的地址與端口號。主服務器與從服務器已經橋接完成。

4、驗證發布/訂閱

集群的特點在任何服務器上都可以訂閱與發布,並且訂閱者可以收到在任何服務器中發送去信息。

測試場景:在從服務器中訂閱一條信息,在主服務器中發布一條信息,從服務器的訂閱者可以收到從主服務器中發布的消息。

(1)在從服務器中鍵入一下命令:

mosquitto_sub -t myhouse/room1/#
注意:myhouse/ 是編寫Mosquitto.conf中topic的遠程前綴,room1/#是topic中的訂閱主題


(2)在主服務器中鍵入一下命令:
mosquitto_pub -t sensor/room1/temperature -m '26.3'
注意:sensor/ 是編寫Mosquitto.conf中topic的本地前綴,room1/ 是topic中的訂閱主題,temperature 相當與“#”通配符 

如果Mosquitto.conf配置無誤,並且本地前綴與遠程前綴拼寫正確,在從服務器訂閱主題,在主服務器發布消息,從服務器訂閱者收到信息。

二、多節點集群

配置3台服務集群與3+n台理論一樣,所以這里配置3台服務集群作為演示。

1、安裝服務器

首先在上述2台服務器基礎上,再增加一台服務器,配置步驟請參考第二篇博文。

2、配置服務器

假設有3台服務器分別是

192.168.0.53
192.168.0.88
192.168.0.89
其中53為主服務器,88與89為從服務器。
所以在88與89上只需要正常安裝Mosquitto服務即可,其他不需要做任何配置。
重點還是在53的mosquitto.conf中配置。

依然打開mosquitto.conf,找到Bridge節點,每個配置項的含義

#connection <name>
#address <host>[:<port>] [<host>[:<port>]]
#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]

如果想增加一台服務器只需要重新添加connection、address、topic節點即可。因此Bridge節點變成下面形式:

connection mytest
address 192.168.0.88:1883
topic room1/# both 2 sensor/ myhouse/

connection mytest2
address 192.168.0.89:1883
topic room1/# both 2 sensor/ myhouse/

bridge_protocol_version mqttv311
notifications true
cleansession true
try_private true
start_type automatic

紅色部分為新增加的服務器。重啟Mosquitto服務器即可。

3、測試訂閱、發布

分別在88與89服務器中輸入mosquitto_sub -t myhouse/room1/# 訂閱信息

在53服務器中輸入mosquitto_pub -t sensor/room1/temperature -m '26.3' 發布消息

同事88與89都會收到“26.3”這條信息。如果只有一台服務器收到說明配置有問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM