Rabbitmq集群高可用部署詳細

2022-01-12 12:24:53 字數 3329 閱讀 5067

清風萬里的季節,週末本該和親人朋友一起消遣這爛漫的花花草草,或是懶洋洋的曬個太陽聽聽風聲鳥鳴。無奈工作使然,理想使然,我回到啦公司,敲起啦鍵盤,擼起啦**,程式狗的世界一片黯然,一片黯然,願天下所有努力的程式狗都夢想成真吧!!

回到正題,為什麼搭建rabbitmq集群?rabbitmq集群有那些模式?如何搭建rabbitmq集群?rabbitmq映象高可用策略有那些?

1、首先這款產品本身的優點眾多,大家最看好的便是他的非同步化提高系統抗峰值能力,然後便是系統及功能結構解耦,那麼照此兩點來說,他的在整個系統中的作用還是至關重要的,那麼如此重要,當然要考慮他的高可用性,那麼便有啦第乙個問題的解答。

2、rabbitmq有3種模式,但集群模式是2種。詳細如下:

我的環境如下:

1、兩台centos7的機器,hostname分別為:f , g .

3、修改hosts檔案如下,下面是g這台機器的hosts檔案內容,f也需要如下配置:

[root@g bin]# cat /etc/hosts

127.0.0.1 g localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 g localhost localhost.localdomain localhost6 localhost6.localdomain6

172.18.8.224 g

172.18.8.229 f

4、保證兩台機器都能夠相互ping通,如下圖:

好啦,環境到此就就能滿足啦,接下來我們把rabbitmq裝在2臺機器上。

學習不看官方文件,那就別學啦,位址如下:

安裝rabbitmq依賴erlang環境,所以我們要先安裝erlang環境。

這裡安裝啟動成功之後,來幾個常用的操作。

[root@g bin]# ./rabbitmq-server -deched  --後台啟動服務

[root@g bin]# ./rabbitmq-plugins enable rabbitmq_management --啟動web管理外掛程式

[root@g bin]# ./rabbitmqctl add_user zlh zlh --新增使用者,密碼

[root@g bin]# ./rabbitmqctl set_user_tags zlh administrator --設定zlh為administrator許可權

如果你看到如下操作,即表明啟動成功啦,並且web管理頁面的外掛程式也啟動成功,如果下面的6為0,則需要啟動web管理外掛程式

那具體rabbitmqctl 的命令詳細還要看官網文件:

在上述的兩台機器上安裝rabbitmq完成之後,你可以看到你的機器中有如下1個檔案。路徑在$home中或者在/var/lib/rabbitmq中,檔名稱為.erlang.cookie,他是乙個隱藏檔案。那麼這檔案儲存的內容是什麼,是做什麼用的呢?

這樣說吧:rabbitmq的集群是依賴erlang集群,而erlang集群是通過這個cookie進行通訊認證的,因此我們做集群的第一步就是幹cookie。怎麼幹?

1、必須使集群中也就是f,g這兩台機器的.erlang.cookie檔案中cookie值一致,且許可權為owner唯讀。

機器g中的cookie:

機器f中的cookie:

修改檔案許可權如下:

[root@f ~]# chmod 600 .erlang.cookie
2、檢視集群狀態,我的是已經做好的。

[root@f bin]# ./rabbitmqctl cluster_status

cluster status of node rabbit@f ...

[,]},

, ,, ,]}]

3、停止當前機器中rabbitmq的服務

4、把g中的rabbitmq加入到集群中來

[root@f bin]# ./rabbitmqctl join_cluster --ram rabbit@g
5、開啟當前機器的rabbitmq服務

6、開啟網頁管理頁面檢視nodes

如此便可以啦,你可以做下測試,驗證下我們序言中說的普通模式的說明,那必須是槓槓對的。

寫到這裡,接下來,有朋友要請我吃飯啦,我就速戰速決赴會去啦,即便如此該有的也會都有的。go,go,go。

這一節要參考的文件是:

首先映象模式要依賴policy模組,這個模組是做什麼用的呢?

policy中文來說是政策,策略的意思,那麼他就是要設定,那些exchanges或者queue的資料需要複製,同步,如何複製同步?對就是做這些的。

這裡有點內容的,我先上例子慢慢說:

[root@g ~]# ./rabbitmqctl set_policy ha-all "^" ''
引數意思為:

ha-all:為策略名稱。

^:為匹配符,只有乙個^代表匹配所有,^zlh為匹配名稱為zlh的exchanges或者queue。

ha-mode:為匹配型別,他分為3種模式:all-所有(所有的queue),exctly-部分(需配置ha-params引數,此引數為int型別比如3,眾多集群中的隨機3臺機器),nodes-指定(需配置ha-params引數,此引數為陣列型別比如["3rabbit@f","rabbit@g"]這樣指定為f與g這2臺機器。)。

參考示例如下

當然在web管理介面也能配置:

配置完看佇列如下,其中表示ha-haall的說明用我的ha-haall策略啦,屬於映象模式,沒有表示的就是普通模式:

1、希望能關注我其他的文章。

2、部落格裡面有沒有很清楚的說明白,或者你有更好的方式,那麼歡迎加入左上方的2個***,我們一起學習**。

RabbitMQ的高可用集群部署

標籤 空格分隔 訊息佇列 部署 單機情況下不做集群,僅僅執行乙個rabbitmq.docker compose.yml version 3.1 services rabbitmq restart always image rabbitmq management container name rabb...

RabbitMQ搭建高可用集群

修改主機名 首先修改 etc hostname檔案,設定主機名,然後修改hosts檔案,新增所有要進入集群的主機的主機名和ip位址的對映 root mq1 cat etc hosts 127.0.0.1 localhost 192.168.60.196 qh1 192.168.60.197 qh2 ...

RabbitMQ高可用集群介紹

主備模式 用來實現rabbitmq的高可用集群,一般是在併發和資料不是特別多的時候使用,當主節點掛掉以後會從備份節點中選擇乙個節點出來作為主節點對外提供服務。遠端模式 主要用來實現雙活,簡稱為shovel模式,所謂的shovel模式就是讓我們可以把訊息複製到不同的資料中心,讓兩個跨地域的集群互聯。映...