在CentOS上實現RabbitMQ的高可用性,通常是通過搭建RabbitMQ集群來實現的。以下是詳細的步驟:
首先,在所有節點上安裝Erlang和RabbitMQ??梢允褂霉俜教峁┑陌惭b包進行安裝。
# 安裝Erlang
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
# 安裝RabbitMQ
sudo yum install rabbitmq-server
RabbitMQ集群中的節點通過Erlang Cookie進行認證。確保所有節點的Erlang Cookie相同。
# 在任意節點上找到Erlang Cookie
cat /var/lib/rabbitmq/.erlang.cookie
# 將Cookie復制到其他節點
scp /var/lib/rabbitmq/.erlang.cookie user@other_node:/var/lib/rabbitmq/
確保所有節點的主機名可以相互解析。
# 修改主機名
hostnamectl set-hostname rabbit@node1
hostnamectl set-hostname rabbit@node2
hostnamectl set-hostname rabbit@node3
在所有節點上啟動RabbitMQ服務。
# 啟動RabbitMQ服務
sudo systemctl start rabbitmq-server
選擇一個節點作為主節點(通常配置為磁盤節點),然后將其他節點加入到集群中。
# 在主節點上停止RabbitMQ服務
sudo rabbitmqctl stop_app
# 將其他節點加入到主節點
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1
# 啟動RabbitMQ服務
sudo rabbitmqctl start_app
使用以下命令查看集群狀態。
# 查看集群狀態
sudo rabbitmqctl cluster_status
為了進一步提高可用性,可以將隊列配置為鏡像隊列。
# 設置隊列鏡像策略
sudo rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
確保防火墻允許RabbitMQ使用的端口(默認是5672)。
# 打開端口
sudo firewall-cmd --add-port=5672/tcp --permanent
sudo firewall-cmd --reload
啟用RabbitMQ管理插件以便通過Web界面管理集群。
# 啟用管理插件
sudo rabbitmq-plugins enable rabbitmq_management
[1] 一文帶你吃透 RabbitMQ 的高可用架構 [2] 高可用RabbitMQ集群的搭建及原理分析 [3] RabbitMQ 集群高可用部署詳細介紹 [4] centos9 stream 下rabbitmq高可用集群搭建及使用 [5] CentOS下RabbitMq高可用集群環境搭建 [6] CentOS7實現RabbitMQ高可用集群 [7] centos7 rabbitmq集群搭建高可用 [8] CentOS下RabbitMQ集群安裝配置教程 [9] Centos6.9下RabbitMQ集群部署記錄 [10] 在centos中安裝rabbitmq服務 [11] centos安裝rabbitmq_手工部署RabbitMQ(CentOS 7.4 - 酷盾) [12] RabbitMQ在CentOS中的安裝和配置教程[@ref]