RabbitMQ 集群與高可用配置

2021-10-09 13:48:34 字數 2692 閱讀 5795

首先rabbitmq 這款產品本身的優點眾多,大家最看好的便是他的非同步化提高系統抗峰值能力,然後便是系統及功能結構解耦,那麼照此兩點來說,他的在整個系統中的作用還是至關重要的,那麼如此重要,當然要考慮他的高可用性,通過 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 監控外掛程式:

進入bin目錄下執行 ./rabbitmq-plugins enable rabbitmq_management --啟動web管理外掛程式
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 # rabbitmqctl join_cluster rabbit@node1

此時 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

附加說明:

[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許可權

RabbitMQ 集群與高可用配置

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

RabbitMQ 集群與高可用配置

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

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