七、Mosquito 集群搭建
本章主要講述Mosquitto 集群搭建的兩種方式
1、進行雙服務器搭建
2、進行多服務器搭建
一、Mosquitto的分布式集群部署
如果需要做并發量很大的時候就需要考慮做集群處理,但是我在查找資料的時候發現并不多,所以整理了一下,搭建簡單的Mosquitto集群模式。
首先集群需要2臺以上的Mosquitto服務器。安裝方式同上。
先了解下Mosquitto集群模式的邏輯圖,如下:
?
可以看出,無論在那臺服務器中訂閱了信息,無論在那臺服務器上發布信息,訂閱者都可以收到發布的信息。那么下一步我們著手搭建集群服務器,為了方便只演示2臺服務器之間的集群搭建。
集群部署有一個專有名詞叫做“橋接”,實現橋接的方式需要修改config.mk與mosquitto.conf文件。值得說明的是如果有10臺服務器做Mosquitto集群,每臺服務器上將橋連接打開,然后只需要更改一臺服務器上的Mosquitto.conf文件即可,其他服務器的Mosquitto.conf文件不需要做任何改動。大大方便了集群的維護。如果有新的服務器加入或刪除只需要修改主服務器的Mosquitto.conf即可。
1、開啟服務器橋連接
進入安裝目錄
cd mosquitto-1.4.9/
打開config.mk文件
vi config.mk
找到WITH_BRIDGE:=yes 將簽名的“#”號去掉開啟橋連接模式。(默認是開啟的,為了無誤查看一下)
2、配置Mosquitto.conf的橋連接屬性
進入etc目錄,并且打開Mosquitto.conf文件
cd /etc/mosquitto/
vi mosquitto.conf
找到Bridges節點,在下面加入如下代碼:
connection master
address 172.16.192.103: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服務。如果配置無誤主服務器在開啟的時候,會自動連接所有從服務器,顯示如下:
master實在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只能有一個IP地址,address紅色的部分是留有多個ip的保存。(貌似是對前地址的一個備份,如果前地址服務器掛了可以立馬接手備用服務器,筆者尚未證實)
如果想增加一臺服務器只需要重新添加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”這條信息。如果只有一臺服務器收到說明配置有問題。
轉載于:https://www.cnblogs.com/yueli/p/7655809.html
總結
以上是生活随笔為你收集整理的七、Mosquito 集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物联网协议之CoAP协议开发学习笔记之术
- 下一篇: 快速得到栈、队列的最大值