Rabbitmq系列之普通集群部署

2021-10-08 13:10:43 字數 3002 閱讀 7858

三、怎麼使用rabbitmq集群?

一、為什麼要使用集群?

集群是為了解決單機可能出現宕機等引發的不可用的問題,可以有效提高程式的可用性和可靠性以及抗併發的能力。

二、什麼是rabbitmq集群?

2.1、單一模式

即單機情況不做集群,就單獨執行乙個rabbitmq而已。

2.2、普通模式:

預設模式,以兩個節點(rabbit01、rabbit02)為例來進行說明。對於queue來說,訊息實體只存在於其中乙個節點rabbit01(或者rabbit02),rabbit01和rabbit02兩個節點僅有相同的元資料,即佇列的結構。當訊息進入rabbit01節點的queue後,consumer從rabbit02節點消費時,rabbitmq會臨時在rabbit01、rabbit02間進行訊息傳輸,把a中的訊息實體取出並經過b傳送給consumer。所以consumer應盡量連線每乙個節點,從中取訊息。即對於同乙個邏輯佇列,要在多個節點建立物理queue。否則無論consumer連rabbit01或rabbit02,出口總在rabbit01,會產生瓶頸。當rabbit01節點故障後,rabbit02節點無法取到rabbit01節點中還未消費的訊息實體。如果做了訊息持久化,那麼得等rabbit01節點恢復,然後才可被消費;如果沒有持久化的話,就會產生訊息丟失的現象。

2.3、映象模式

三、怎麼使用rabbitmq集群?

3.1、集群的形成的條件

3.1.1、rabbitmq集群的多種方式

- 通過在配置檔案中列出群集節點進行宣告

- 基於dns的發現

- 使用aws(ec2)例項發現(通過外掛程式)

- 使用kubernetes發現(通過外掛程式)

- 基於consul的發現(通過外掛程式)

- 使用基於etcd的發現(通過外掛程式)

- 使用rabbitmqctl手動

3.1.2、集群形成的必要條件先準備三颱伺服器,修改hosts分別為node1,node2,node3。

vim /etc/hostname //在10.211.55.8設定網域名稱為node1

vim /etc/hostname //在10.211.55.9設定網域名稱為node2

vim /etc/hostname //在10.211.55.10設定網域名稱為node2

vim / etc / hosts //分別配置node1、node2、node3的對應關係

10.211.55.8 node1

10.211.55.9 node2

10.211.55.10 node3

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie //拷貝到node2

scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie//拷貝到node3

![在這裡插入描述](
# on node2

# => stopping node rabbit@node2 ...done.

rabbitmqctl reset

# => resetting node rabbit@node2 ...

rabbitmqctl join_cluster rabbit@node1

# => clustering node rabbit@node2 with [rabbit@node1] ...done.

# => starting node rabbit@rabbit2 ...done.

# on node3

# => stopping node rabbit@node3 ...done.

rabbitmqctl reset

# => resetting node rabbit@node3 ...

rabbitmqctl join_cluster rabbit@node1

# => clustering node rabbit@node3 with [rabbit@node1] ...done.

# => starting node [email protected].

需要注意的是rabbit@node2是node的規範名字,前面的rabbit是固定字首。

rabbitmqctl cluster_status//在node1節點檢視狀態

訪問ip得到結果,訪問ip得到結果,集群配置成功,但是這裡第三個節點的rabbitmq應用沒有啟動成功。

經過一段實驗發現,如果按照node1->node2->node3的順序啟動,node3會啟動失敗;如果按照node2->node3->node1或者node3->node2->node1的順序啟動,三個節點是可以啟動成功的。

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

a.預設集群模式搭建 首先需要配置一下hosts檔案,因為rabbitmq集群節點名稱是讀取hosts檔案得到的 一,我們搭建3個節點,它們的名稱分別如下 rabbit128 rabbit130 rabbit131 配置hosts檔案如下 vim etc hosts192.168.10.128 ra...

rabbitmq集群配置

rabbitmq是乙個輕量級的訊息服務系統,切記它只是乙個類似信件郵遞員的功能,而不是快遞,不用把它當成redis在用。一 rabbitmq軟體安裝 1.erlang安裝 安裝erlang,載入官方提供的yum源,然後直接安裝。最新版本的rabbitmq直接依賴erlang,安裝esl erlang...

Rabbitmq 建立集群

更改host 兩台主機rabbit1 192.168.1.112,rabbit2 192.168.1.113 host配置如下 rabbit1 192.168.1.112 rabbit2 192.168.1.113 同步erlang.cookie 將rabbit1 c users erlang.co...