Docker搭建RabbitMQ集群(多台服務器)


前言:本文章是基於docker在多台服務器下搭建的普通集群環境

 

一、准備工作

集群所需要的服務器環境(根據自身的集群需要來准備),我這里測試用的是3台;機器准備好后,安裝好docke環境等集群所需要的依賴

 

二、拉取RabbitMQ鏡像

在線拉取鏡像:

docker pull rabbitmq:management

查看鏡像信息:

[root@VM-12-6-centos ~]# docker images
REPOSITORY      TAG          IMAGE ID       CREATED         SIZE
rabbitmq        management   4b5f4b2a3227   28 hours ago    256MB

rabbitmq.conf文件:

loopback_users.guest = false  #禁用默認賬號
listeners.tcp.default = 5672  #監聽對外通信端口配置
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config  #集群節點發現配置
cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq1  #集群節點1
cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq2  #集群節點2
cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq3  #集群節點3

.erlang.cookie文件:

WVNQHBGKPJFHPXZCGSPN  #cookie值

cookie獲取:

從之前啟動的rabbitMQ容器獲取cookie值
docker exec -it mq cat /var/lib/rabbitmq/.erlang.cookie

Tips:將以上rabbitmq.conf文件和.erlang.cookie文件存放到各台服務器的/home/rabbitmq目錄下(自定義目錄存放)

[root@VM-12-6-centos rabbitmq]# ll -a
總用量 16
drwxr-xr-x   2 root    root 4096 3月  17 17:33 .
drwxr-xr-x. 10 root    root 4096 3月  17 15:08 ..
-rw-------   1 polkitd root   21 3月  17 15:08 .erlang.cookie
-rw-r--r--   1 root    root  257 3月  18 10:34 rabbitmq.conf
[root@VM-12-6-centos rabbitmq]# pwd
/home/rabbitmq

 

三、在集群機器上進行部署

  • 服務器1  42.192.139.111
  • 服務器2  106.13.27.111
  • 服務器3  120.77.239.111

創建mq-net網絡:

docker network create mq-net

服務器1執行:

docker run  -d --hostname rabbitmq1 \
--add-host rabbitmq2:42.192.139.111 \
--add-host rabbitmq3:120.77.239.111 \
--restart unless-stopped \
--name rabbitmq1 \
--net mq-net \
-p 4369:4369 \
-p 25672:25672 \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-v mq-plugins:/plugins \
-v /home/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /home/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
4b5f4b2a3227

服務器2執行:

docker run -d --hostname rabbitmq2 \
--add-host rabbitmq3:120.77.239.111 \
--add-host rabbitmq1:106.13.27.111 \
--restart unless-stopped \
--name rabbitmq2 \
--net mq-net \
-p 4369:4369 \
-p 25672:25672 \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=root \
-v mq-plugins:/plugins \
-v /home/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /home/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
4b5f4b2a3227

服務器3執行:

docker run  -d --hostname rabbitmq3 \
--add-host rabbitmq2:42.192.139.111 \
--add-host rabbitmq1:106.13.27.111 \
--restart unless-stopped \
--name rabbitmq3 \
--net mq-net \
-p 4369:4369 \
-p 25672:25672 \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-v mq-plugins:/plugins \
-v /home/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /home/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
4b5f4b2a3227

參數解析:

-d 容器后台運行
--hostname rabbitmq1 容器的主機名為 rabbitmq1
--add-host rabbitmq2:42.192.139.111  修改容器內部的hosts,添加的集群服務器都需要添加進來
--restart=unless-stopped docker 容器重啟后重啟MQ
--name rabbitmq1 容器名為rabbitma1,在宿主機上運行“docker ps”命令時顯示的名稱
-p "5672:5672" 消息通訊端口
-p "15672:15672" 后台管理端口
-p "4369:4369" 在 Erlang 集群中相當於 dns 的作用,綁定在4369端口上
-p "25672:25672" 25672端口用於節點間和CLI工具通信(Erlang分發服務器端口)
-e RABBITMQ_DEFAULT_USER=admin 設置rabbitmq默認用戶為admin
-e RABBITMQ_DEFAULT_PASS=admin 設置rabbitmq默認密碼為admin

 

搭建完畢!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM