筆記:RabbitMQ Cluster 搭建步驟

環境說明

假設我們有三台 CentOS Stream 9 Linux 主機,hostname 分別叫做:mq-master、mq-node01、mq-node02

安裝 RabbitMQ

分別在三台主機上安裝 RabbitMQ:

首先安裝 erlang:

$ wget https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.1/erlang-26.2.1-1.el9.x86_64.rpm
$ dnf install -y ./erlang-26.2.1-1.el9.x86_64.rpm

安裝 rabbitmq-server:

$ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.12/rabbitmq-server-3.12.12-1.el8.noarch.rpm
$ dnf install -y ./rabbitmq-server-3.12.12-1.el8.noarch.rpm

啟動 rabbitmq-server:

$ systemctl start rabbitmq-server.service
$ systemctl enable rabbitmq-server.service

設定開啟 Web 管理頁面:

$ rabbitmq-plugins enable rabbitmq_management

設定防火牆:

$ firewall-cmd --add-port={5672,15672}/tcp --permanent
$ firewall-cmd --reload

新增管理 User:帳號 admin、密碼 123456:

$ rabbitmqctl add_user admin 123456
$ rabbitmqctl set_user_tags admin administrator
$ rabbitmqctl set_permissions admin ".*" ".*" ".*"

三台Linux主機分別依照上述步驟安裝 RabbitMQ,安裝完後,使用 http://主機IP:15672 可看到 Web 管理頁面。

Cluster 設定

三台主機上分別修改 /etc/hosts 檔案:

$ vi /etc/hosts

並加入三台主機的 IP 與 hostname:

三台主機上,分別加入防火牆設定:

$ firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent
$ firewall-cmd --reload

先分別停止 mq-ndoe01 跟 mq-node02 的 rabbitmq-server 服務:

$ systemctl stop rabbitmq-server.service

分別複製 mq-master 主機的 erlang.cookie 檔案到 mq-ndoe01 跟 mq-node02 上:

$ scp /var/lib/rabbitmq/.erlang.cookie root@mq-node01:/var/lib/rabbitmq/
$ scp /var/lib/rabbitmq/.erlang.cookie root@mq-node02:/var/lib/rabbitmq/

然後分別檢查三台主機上的 erlang.cookie 內容是否一致:

$ cat /var/lib/rabbitmq/.erlang.cookie

分別重新啟動 mq-ndoe01 跟 mq-node02 上的 rabbitmq-server 服務:

$ systemctl restart rabbitmq-server.service

然後,可以把 mq-node01 加入到 cluster 裡。在 mq-node01 主機上,輸入以下指令:

$ rabbitmqctl stop_app
$ rabbitmqctl reset
$ rabbitmqctl join_cluster rabbit@mq-master
$ rabbitmqctl start_app

把 mq-node02 加入到 cluster 裡。在 mq-node02 主機上,輸入以下指令:

$ rabbitmqctl stop_app
$ rabbitmqctl reset
$ rabbitmqctl join_cluster rabbit@mq-master
$ rabbitmqctl start_app

檢查 Cluster Status:

$ rabbitmqctl cluster_status

開啟三台主機的 Web 管理頁面,都可以看到有三個 Node 了 :