在上一章中,我們介紹了如何在一臺Windows機器上創(chuàng )建一個(gè)RabbitMQ集群。創(chuàng )建好以后自然就是如何來(lái)管理和使用了。這一章,我們將介紹如何對RabbitMQ集群進(jìn)行監控,并部署集群隊列。
1. 如何安裝RabbitMQ的監控插件。
正如我們所知道的那樣,在一臺機器上部署應用最痛苦的莫過(guò)于對于端口的修改了。RabbitMQ的rabbitmq_management插件,需要先enable一下才可以使用。在RabbitMQ的包中提供了rabbitmq-plugins.bat,來(lái)管理本機RabbitMQ實(shí)例的plugin組件。這里需要對該腳本做一點(diǎn)修改,如下:
a. 首先,需要在該腳本中設置一下環(huán)境參數,以rabbitmq-plugins-cluster1.bat為例
set APPDATA="D:\09-Opensource\rabbitmq\workspace"
set RABBITMQ_CONFIG_FILE="D:\09-Opensource\rabbitmq\workspace\config\1\rabbitmq"
b. 在腳本中指定對應的RabbitMQ實(shí)例名
set RABBITMQ_NODENAME=rabbit1@Cluster-Node1
這樣就可以使用rabbitmq-plugins-cluster1.bat來(lái)管理Node1了。Node2同理。
c. 修改Rabbitmq的配置文件,修改rabbitmq_management的默認監聽(tīng)端口
rabbitmq_management的默認監聽(tīng)端口是15672。 因為在一臺機器上配置集群,就需要修改默認端口。這里在Node對應的rabbitmq.config文件中增加配置:{listener, [{port, 8001}]}.
d.啟用rabbitmq_management插件
使用命令rabbitmq-plugins-cluster1.bat enable rabbitmq_management,重起Rabbitmq即可啟用。(注意:如果在步驟2之前啟用了該插件,并重起Rabbitmq的話(huà),有很大的可能會(huì )導致Rabbitmq啟動(dòng)不了。)
e. 通過(guò)Web登陸Rabbitmq management
登陸localhost:8001(localhost:8002), 用戶(hù)名/密碼 guest/guest。就可以登陸management。這里需要注意的是,一個(gè)Node的management就可以管理cluster的其它節點(diǎn)了。
2. 如何在Rabbitmq集群上部署隊列
在Rabbitmq上建立隊列的核心是ha。因為雖然Rabbitmq已經(jīng)建立了集群,但是在其上部署的隊列默認只是建立在一個(gè)Node實(shí)例上的。這種情況下,如果從集群中的其它隊列嘗試獲取該隊列的信息,那是ok的。但這種情況下并沒(méi)有實(shí)現負載均衡,所有的消息均由消息隊列所在的Node傳輸給訪(fǎng)問(wèn)Node,然后再給客戶(hù)端;如果隊列所在的Node宕機了,那么恭喜你,沒(méi)法玩了~~。除非該Node重新啟動(dòng),否則該隊列壓根就無(wú)法被訪(fǎng)問(wèn)到了。這種情況就是常說(shuō)的偽HA。
為了讓我們的HA真正可以實(shí)現高可用和負載均衡,這里需要實(shí)現不同Node節點(diǎn)間的隊列同步。配置也很簡(jiǎn)單,在控制界面中Admin->Policy->HA mode即可??梢赃x擇針對所有的隊列,也可以選擇針對所有的exchange或者兩者都針對。還可以根據情況做一個(gè)過(guò)濾(pattern)。一旦設置了該policy,那么RabbitMQ中的資源就徹底實(shí)現了高可用了。(這里還需要完善一下如何用腳本建立)
一旦資源在多個(gè)RabbitMQ節點(diǎn)中實(shí)現了共享(而且是同步式的),那么一個(gè)消息從任意一個(gè)節點(diǎn)中獲取都沒(méi)有問(wèn)題啦,再加上Connection時(shí)可以配置多個(gè)Address地址,這樣隨便哪個(gè)Node宕機了都不會(huì )影響到最終的應用了,nice??!
但是這里還需要注意一點(diǎn)。在實(shí)際測試中,當一個(gè)節點(diǎn)宕機后再起來(lái),如果原來(lái)集群中的隊列中還保存有消息的話(huà),會(huì )有一個(gè)等待Synchronized的人工操作。但是據我觀(guān)察,實(shí)際的數據這里已經(jīng)都同步了啊。(這里需要研究一下,看看后續是否可以改為自動(dòng))。
不管怎么樣,這樣的一個(gè)集群環(huán)境加上Client端的muti-address配置,讓我們的程序/架構變的異常健壯了,這無(wú)疑是我們都愿意看到的。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。