1、先在之前启动的mq容器中获取一个cookie值,作为集群的cookie
docker exec -it rabbit cat /var/lib/rabbitmq/.erlang.cookie
2、停止并删除当前的mq容器,重新搭建集群。
docker rm -f 容器名
3、在/tmp目录新建一个配置文件 rabbitmq.conf
cd /tmp
# 创建文件
touch rabbitmq.conf
4、保存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@mq1 #集群的容器名称
cluster_formation.classic_config.nodes.2 = rabbit@mq2
cluster_formation.classic_config.nodes.3 = rabbit@mq3
5、创建一个文件,记录cookie
cd /tmp
# 创建cookie文件
touch .erlang.cookie
# 写入cookie
echo "GIIKNSACLCUKKXCZEHQD" > .erlang.cookie
# 修改cookie文件的权限
chmod 600 .erlang.cookie
6、准备三个目录,mq1、mq2、mq3
cd /tmp
# 创建目录
mkdir mq1 mq2 mq3
7、然后拷贝rabbitmq.conf、cookie文件到mq1、mq2、mq3
# 进入/tmp
cd /tmp
# 拷贝
cp rabbitmq.conf mq1
cp rabbitmq.conf mq2
cp rabbitmq.conf mq3
cp .erlang.cookie mq1
cp .erlang.cookie mq2
cp .erlang.cookie mq3
8、创建网络
docker network create mq-net
docker volume create
9、分别启动三个容器
1.启动mq1
docker run -d --net mq-net -v /tmp/mq1/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf -v /tmp/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name mq1 --hostname mq1 -p 8071:5672 -p 8081:15672 rabbitmq
2.启动mq2
docker run -d --net mq-net -v /tmp/mq1/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf -v /tmp/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name mq2 --hostname mq2 -p 8072:5672 -p 8082:15672 rabbitmq
3.启动mq3
docker run -d --net mq-net -v /tmp/mq1/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf -v /tmp/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name mq3 --hostname mq3 -p 8073:5672 -p 8083:15672 rabbitmq