下載安裝包
http://mosquitto.org/files/source/ python
安裝依賴
yum install -y gcc gcc-c++ libstdc++-devel
yum install -y openssl-devel
yum install -y c-ares-devel
yum install -y uuid-devel
yum install -y libuuid-devel
yum install -y wget
yum install -y cmake
yum install -y build-essential python quilt devscripts python-setuptools python3?
yum install -y libssl-dev libc-ares-dev uuid-dev daemon openssl-develc++
安裝mosquitto:
tar zxvf mosquitto-1.4.tar.gz
cd mosquitto-1.4
make
make install
cd /etc/mosquitto/
cp mosquitto.conf.example mosquitto.conf服務器
修改配置文件 mosquitto.conf
一、修改用戶(或增長用戶mosquitto,adduser mosquitto)
user mosquitto 修改成 user rootsession
二、修改端口號
port 1883測試
啓動mosquitto服務:
mosquitto -c /etc/mosquitto/mosquitto.conf字體
重啓Mosquitto
在網上找了不少資料都沒有提起怎樣重啓服務器,而且在官網上也沒有相應命令提示。
因此咱們使用Liunx終止進程命令,強行退出。
先kill掉,再重啓:
kill -9 21674ui
調測問題:
報錯./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解決:執行如下命令:
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
ldconfig調試
調試步驟:
一、先開啓一個客戶端,模擬broker
mosquitto -c /etc/mosquitto/mosquitto.conf -v進程
二、再開啓一個客戶端,模擬訂閱
mosquitto_sub -v -t topic01ip
三、最後開啓一個客戶端,模擬發佈
mosquitto_pub -t topic01 -m mmmmmmmmsss
四、訂閱界面能夠實時收到發佈消息
安裝成功
集羣搭建:
一、開啓服務器橋鏈接
進入安裝目錄
cd mosquitto-1.4.9/
打開config.mk文件
vi config.mk
找到WITH_BRIDGE:=yes 將簽名的「#」號去掉開啓橋鏈接模式。(默認是開啓的,爲了無誤查看一下)
二、配置Mosquitto.conf的橋鏈接屬性
進入etc目錄,而且打開Mosquitto.conf文件
cd /etc/mosquitto/
vi mosquitto.conf
找到Bridges節點,在下面加入以下代碼:
connection mytest
address 172.30.60.11: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表明只有一次(能夠查看第一篇博文對MQTT的詳細介紹)
sensor/ 本地前綴標識,能夠隨便命名
myhouse/ 遠程前綴標識,能夠隨便命名
bridge_protocol_version mqttv311 橋鏈接協議版本MQTT3.11
notifications 是否發佈橋接的狀態信息
cleansession 橋接斷開時,是否清除遠程服務器中的消息
start_type 橋接模式,目前有三種:automatic、lazy、once
設置好以後保存退出。
三、開啓服務器
第一步先確保從服務器先開啓,第二步從新啓動主服務器的Mosquitto服務。
四、驗證發佈/訂閱
集羣的特色在任何服務器上均可以訂閱與發佈,而且訂閱者能夠收到在任何服務器中發送去信息。
測試場景:在從服務器中訂閱一條信息,在主服務器中發佈一條信息,從服務器的訂閱者能夠收到從主服務器中發佈的消息。
(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臺服務集羣做爲演示。
一、安裝服務器
首先在上述2臺服務器基礎上,再增長一臺服務器,配置步驟請參考
二、配置服務器
假設有3臺服務器分別是
172.30.60.1
172.30.60.11
172.30.60.13
其中1爲主服務器,11與13爲從服務器。
因此在11與13上只須要正常安裝Mosquitto服務便可,其餘不須要作任何配置。
重點仍是在1的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 172.30.60.11:1883
topic room1/# both 2 sensor/ myhouse/
connection mytest2
address 172.30.60.13:1883
topic room1/# both 2 sensor/ myhouse/
bridge_protocol_version mqttv311
notifications true
cleansession true
try_private true
start_type automatic
複製代碼
紅色部分爲新增長的服務器。重啓Mosquitto服務器便可。
三、測試訂閱、發佈
測試理論與第一節相似:
分別在11與13服務器中輸入mosquitto_sub -t myhouse/room1/# 訂閱信息
在1服務器中輸入mosquitto_pub -t sensor/room1/temperature -m '27.8' 發佈消息
同事11與13都會收到「27.8」這條信息。若是隻有一臺服務器收到說明配置有問題。