[VerneMQ]_建立VerneMQ叢集(Cluster)
今天來測試VerneMQ叢集的功能,從官方的文件整理簡潔的步驟
https://vernemq.com/docs/clustering/
https://vernemq.com/docs/clustering/communication.html
我這次測試只有兩個Node,一個是RPI3一個是VM內的UBUNTU 14.04
1.首先提到必須於vernemq.conf中,將nodename改掉,預設大家都是[email protected],請你換一個名子,或者確保沒有其他Node跟這個名子一致
於是我改了UBUNTU 14.04,變成[email protected]
以及RPI上,變成[email protected]
2.然後你必須要設定這些NODE的vernemq.conf,
listener.vmq.clustering = 0.0.0.0:44053要改為listener.vmq.clustering = 你node自己的ip位置:44053
而這個PORT官方也有提到每台機器可以不一樣,因為會自動PROBE
設定好後,重新啟動verneMQ
3.接著就是加入Cluster,這個指令相當酷,在Cluster中你不需要指定哪一台當作master因此只要你輸入其他nodename即可,而且只要有其中一台node做就可以
例如我RPI上面輸入:
vmq-admin cluster join [email protected]
代表跟UBUNTU 14.04一起加入CLUSTER,如果成功的話,會顯示一個done
這時你在雙方機器上輸入 sudo vmq-admin cluster status
ntl@ubuntu:~$ sudo vmq-admin cluster status +--------------------+-------+ | Node |Running| +--------------------+-------+ | [email protected] | true | |[email protected]| true | +--------------------+-------+
都可以看到目前Cluster的狀態
若要UBUNTU這個NODE離開Cluster,則:
vmq-admin cluster leave [email protected]
這個指令要NODE自己下或者在Cluster內的其他NODE下都可以,但需要注意的是官方有說到,下此指令之後不會馬上離開
因為上面還會等待預設1分鐘的grace period讓subscriber能夠轉移以及migrate topic Queue至其他的Node
因此若要強制關閉所有subscriber連線,則:
vmq-admin cluster leave node=<NodeThatShouldGo> -k
其中離開cluster的指令事實上做了相當多的事情,讓現存的subscriber以及topic Queue能夠安全的轉移,可以參考官方文件會比較詳細一些
若都加入完成,就會自動地同步所有NODE之間的Topic,並能夠讓進入A NODE的PUB,由B NODE訂閱相同TOPIC的SUB傳出來。
你也可以在任一節點訂閱在CLUSTER其他任一節點的狀態,例如可以在RPI上訂閱UBUNTU的$SYS狀態
mosquitto_sub -t “\$SYS/[email protected]/#” -d
而若其中node斷線時:
ntl@ubuntu:~$ sudo vmq-admin cluster status +--------------------+-------+ | Node |Running| +--------------------+-------+ |[email protected]| true | |[email protected]| false | +--------------------+-------+
且在該段線的NODE恢復之後verneMQ重新啟動則會自動加回cluster,不須再手動去下join指令!
Leave a comment
很抱歉,必須登入網站才能發佈留言。