a. 預設集群模式搭建
首先需要配置一下hosts檔案,因為rabbitmq集群節點名稱是讀取hosts檔案得到的;
一,我們搭建3個節點,它們的名稱分別如下 :
rabbit128
rabbit130
rabbit131
配置hosts檔案如下:
vim /etc/hosts
192.168.10.128 rabbit128
192.168.10.130 rabbit130
192.168.10.131 rabbit131
二,搭建集群時,要關閉防火牆, 讓三颱機器互聯
systemctl status firewalld
systemctl stop firewalld --關閉防火牆
systemctl disable firewalld --開機不啟動防火牆
三,將各個節點的.erlang.cookie檔案內容保持一致,就以某個機器上的檔案為準,複製到另外機器上即可,
複製後記得重啟mq
同時保證檔案的許可權是600;
該檔案是乙個隱藏檔案,需要使用ll -a命令展示出來;erlang.cookie是erlang實現分布式的必要檔案,
erlang分布式的每個節點上要保持相同的.erlang.cookie檔案
.erlang.cookie一般會存在下面這兩個位置: 解壓縮方式安裝的rabbitmq,那麼是$/.erlang.cookie;修改後重啟,讀取配置的節點 和 erlang.cookierpm安裝包方式進行安裝,那麼是/var/lib/rabbitmq目錄下;
reboot
四,建立集群關係
把128、130、131三颱機器上都安裝好erlang和rabbitmq;
分別啟動三颱linux上的rabbitmq;
先讓rabbitmq130 加入rabbitmq128與它構成乙個集群;在rabbitmq130機器上執行命令:
./rabbitmqctl join_cluster rabbit@rabbit128 --ram
- -ram引數表示讓rabbitmq130成為乙個記憶體節點,如果不帶引數預設為disk磁碟節點;
再讓rabbitmq131 加入rabbitmq128與它構成乙個集群;在rabbitmq131機器上執行命令:
./rabbitmqctl join_cluster rabbit@rabbit128 --ram
當執行完操作以後我們在瀏覽器訪問web管控台來看看效果;
也可以使用 ./rabbitmqctl cluster_status 檢視集群狀態;
有關集群的其他命令:
./rabbitmqctl cluster_status 檢視集群狀態
./rabbitmqctl status 查當前單機節點的詳細狀態
b.映象集群模式
映象模式是基於預設集群模式加上一定的配置得來的;
在預設模式下的rabbitmq集群,它會把所有節點的交換機、繫結、佇列的元資料進行複製確保所有節點都有乙份相同的元資料資訊,但是佇列資料分為兩種:一種是佇列的元資料資訊(比如佇列的最大容量,佇列的名稱等配置資訊),另一種是佇列裡面的訊息;
映象模式,則是把所有的佇列資料完全同步,包括元資料資訊和訊息資料資訊,當然這對效能肯定會有一定影響,當對資料可靠性要求較高時,可以使用映象模式;
所有名字開頭為policy_的佇列進行映象,映象數量為2,那麼命令如下(在任意節點執行如下命令):
.
/rabbitmqctl set_policy ha_policy "^policy_"
''
如果要在所有節點所有佇列上進行映象,則(在任意節點執行如下命令):
.
/rabbitmqctl set_policy ha-all "^"
''
Rabbitmq系列之普通集群部署
三 怎麼使用rabbitmq集群?一 為什麼要使用集群?集群是為了解決單機可能出現宕機等引發的不可用的問題,可以有效提高程式的可用性和可靠性以及抗併發的能力。二 什麼是rabbitmq集群?2.1 單一模式 即單機情況不做集群,就單獨執行乙個rabbitmq而已。2.2 普通模式 預設模式,以兩個節...
rabbitmq集群安裝 二
一 前提 搭建集群前各個節點能夠正常訪問。1 更改各個節點的cookie root跟目錄 保持每個rabbitmq的cookie一樣。進入命令 各個節點執行並把cookie碼保持一樣。1 vi erlang.cookie 或者命令 3 sudo vi erlang.cookie 2 設定hosts解...
RabbitMQ集群原理與部署
在專案中想要 rabbitmq 變得更加健壯,就要使得其變成高可用,所以我們要搭建乙個 rabbitmq 集群,這樣你可以從任何一台 rabbitmq 故障中得以倖免,並且應用程式能夠持續執行而不會發生阻塞。而 rabbitmq 本身是基於 erlang 編寫的,erlang 天生支援分布式 通過同...