1、拉取镜像,启动单个rabbitmq容器
docker pull rabbitmq
docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq
2、创建网络
docker network create mq-net
注意:3.8以上的mq不需要设置镜像策略;直接用Quorum类型队列代替
3、先在单个启动的mq容器中获取一个cookie值,作为集群的cookie
docker exec -it rabbit cat /var/lib/rabbitmq/.erlang.cookie
4、创建一个文件,记录cookie
cd /home/mxy
# 创建cookie文件
touch .erlang.cookie
# 写入cookie
echo "GIIKNSACLCUKKXCZEHQD" > .erlang.cookie
# 修改cookie文件的权限
chmod 600 .erlang.cookie
5、停止并删除当前的mq容器,重新搭建集群。
docker rm -f rabbit
6、在/home/mxy目录新建一个配置文件 rabbitmq.conf
cd /home/mxy
# 创建文件
touch rabbitmq.conf
7、 配置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 多个节点就多加几行配置
8、启动服务1
docker run -d --name rabbitmq1 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 -v mq-plugins:/plugins --net mq-net --hostname rabbitmq1 -v /home/mxy/rabbitmq.conf:/etc/rabbitmq.conf -v /home/mxy/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie --add-host rabbitmq2:服务2的ip --restart unless-stopped rabbitmq
9、启动服务2
docker run -d --name rabbitmq2 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 -v mq-plugins:/plugins --net mq-net --hostname rabbitmq2 -v /home/mxy/rabbitmq.conf:/etc/rabbitmq.conf -v /home/mxy/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie --add-host rabbitmq1:服务1的ip --restart unless-stopped rabbitmq
10、从Docker上拉取的镜像是阉割版的,所以要手动安装Web插件。进入容器
docker exec -it 容器id /bin/bash
11、启动插件
rabbitmq-plugins enable rabbitmq_management
12、访问rabbitmq页面
13、查看节点
14、使rabbitmq2加入rabbit@rabbitmq1节点
docker exec -it rabbitmq2 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq1
rabbitmqctl start_app