RabbitMQ 集群與高可用配置

2021-07-11 17:36:20 字數 2657 閱讀 1897

此文**:

未實驗過

通過 erlang 的分布式特性(通過 magic cookie 認證節點)進行 rabbitmq 集群,各 rabbitmq 服務為對等節點,即每個節點都提供服務給客戶端連線,進行訊息傳送與接收。

這些節點通過 

rabbitmq ha 佇列(映象佇列)進行訊息佇列結構複製。本方案中搭建 3 個節點,並且都是磁碟節點(所有節點狀態保持一致,節點完全對等),只要有任何乙個節點能夠工作,rabbitmq 集群對外就能提供服務。

rabbitmq 集群安裝在 3 個節點上:192.168.1.1、192.168.1.2、192.168.1.3;

haproxy 安裝在 192.168.1.4 上,用於對外提供 rabbitmq 均衡。

所需安裝包 

1. 安裝 erlang、rabbitmq

在 192.168.1.1、192.168.1.2、192.168.1.3 三個節點上安裝,然後開啟 rabbitmq 監控外掛程式:

rabbitmq-pluginsenablerabbitmq_management

2. 修改 /etc/hosts

加入集群 3 個節點的描述:

192.168.1.1 node1

192.168.1.2 node2

192.168.1.3 node3

3. 設定 erlang cookie

erlang cookie 檔案:/var/lib/rabbitmq/.erlang.cookie。這裡將 node1 的該檔案複製到 node2、node3,由於這個檔案許可權是 400,所以需要先修改 node2、node3 中的該檔案許可權為 777:

# chmod 777 /var/lib/rabbitmq/.erlang.cookie

然後將 node1 中的該檔案拷貝到 node2、node3,最後將許可權和所屬使用者/組修改回來:

# chmod 400 /var/lib/rabbitmq/.erlang.cookie

# chown rabbitmq /var/lib/rabbitmq/.erlang.cookie

# chgrp rabbitmq /var/lib/rabbitmq/.erlang.cookie

4. 使用 -detached 引數執行各節點

# rabbitmqctl stop

# rabbitmq-server -detached

5. 組成集群

將 node2、node3 與 node1 組成集群:

node2

node2# rabbitmqctl join_cluster rabbit@node1

node2

node3

node3# rabbitmqctl join_cluster rabbit@node1

node3

此時 node2 與 node3 也會自動建立連線;如果要使用記憶體節點,則可以使用

node2 # rabbitmqctl join_cluster 

--ram rabbit@node1 加入集群。

集群配置好後,可以在 rabbitmq 任意節點上執行 rabbitmqctl cluster_status 來檢視是否集群配置成功。

6. 設定映象佇列策略

在任意乙個節點上執行:

# rabbitmqctl set_policy ha-all "^" ''

將所有佇列設定為映象佇列,即佇列會被複製到各個節點,各個節點狀態保持一直。

完成這 6 個步驟後,rabbitmq 高可用集群就已經搭建好了,最後乙個步驟就是搭建均衡器。

7. 安裝並配置 haproxy

在 192.168.1.4 上安裝 haproxy,然後修改 /etc/haproxy/haproxy.cfg:

listen rabbitmq_cluster 0.0.0.0:5672

mode tcp

balance roundrobin

server   node1 192.168.1.1:5672 check inter 2000 rise 2 fall 3

server   node2 192.168.1.2:5672 check inter 2000 rise 2 fall 3

server   node2 192.168.1.3:5672 check inter 2000 rise 2 fall 3

RabbitMQ 集群與高可用配置

通過 erlang 的分布式特性 通過 magic cookie 認證節點 進行 rabbitmq 集群,各 rabbitmq 服務為對等節點,即每個節點都提供服務給客戶端連線,進行訊息傳送與接收。這些節點通過 rabbitmq ha 佇列 映象佇列 進行訊息佇列結構複製。本方案中搭建 3 個節點,...

RabbitMQ 集群與高可用配置

首先rabbitmq 這款產品本身的優點眾多,大家最看好的便是他的非同步化提高系統抗峰值能力,然後便是系統及功能結構解耦,那麼照此兩點來說,他的在整個系統中的作用還是至關重要的,那麼如此重要,當然要考慮他的高可用性,通過 erlang 的分布式特性 通過 magic cookie 認證節點 進行 r...

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 ...