(二)RabbitMQ普通集群與靜態集群搭建

2021-10-19 14:03:23 字數 2367 閱讀 3464

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;

rpm安裝包方式進行安裝,那麼是/var/lib/rabbitmq目錄下;

修改後重啟,讀取配置的節點 和 erlang.cookie

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 天生支援分布式 通過同...