前言:本文章是基於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
搭建完畢!!!