此文**:
未實驗過
通過 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-plugins
enable
rabbitmq_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 ...