一 机器准备
准备三台虚拟机:
192.168.56.102
102.168.56.103
102.168.56.104
二 拉取镜像
在三台虚拟机上分别执行:
docker pull rabbitmq:3.9.5-management
三 启动容器
103:
docker run -d --hostname node2 --add-host=node3:192.168.56.104 --add-host=node1:192.168.56.102 --name rabbitmq1 --net host -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_ERLANG_COOKIE='rabbit_mq' rabbitmq:3.9.5-management
104:
docker run -d --hostname node3 --add-host=node2:192.168.56.103 --add-host=node1:192.168.56.102 --name rabbitmq2 --net host -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_ERLANG_COOKIE='rabbit_mq' rabbitmq:3.9.5-management
105:
docker run -d --hostname node1 --add-host=node3:192.168.56.104 --add-host=node2:192.168.56.103 --name rabbitmq3 --net host -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_ERLANG_COOKIE='rabbit_mq' rabbitmq:3.9.5-management
其中:
--hostname rabbitmq1 容器的主机名为 rabbitmq1
--add-host=node3:192.168.56.104 修改容器内部的hosts
-e RABBITMQ_DEFAULT_USER=admin 设置rabbitmq默认用户为admin
-e RABBITMQ_DEFAULT_PASS=admin 设置rabbitmq默认密码为admin
-e RABBITMQ_ERLANG_COOKIE='rabbit_mq' 设置rabbitmq的cookie为“rabbit_mq”,可以自定义为其他文本,容器保持一致即可
四 相关配置
分别进入到docker容器中 docker exec -it {containerName} bash
103:
#首先停止当前MQ
rabbitmqctl stop_app
#resetMQ
rabbitmqctl reset
#重新启动MQ
rabbitmqctl start_app
退出容器
exit
104:
#首先停止当前MQ
rabbitmqctl stop_app
#resetMQ
rabbitmqctl reset
#跟机器1的消息队列建立关系
rabbitmqctl join_cluster --ram rabbit@node2
#重新启动MQ
rabbitmqctl start_app
退出容器
exit
102:
#首先停止当前MQ
rabbitmqctl stop_app
#resetMQ
rabbitmqctl reset
#跟机器1的消息队列建立关系
rabbitmqctl join_cluster --ram rabbit@node2
#重新启动MQ
rabbitmqctl start_app
退出容器
exit
五 注意事项
节点间通信的cookie一定要相同
如果在执行第4步骤(相关配置出现报错:可以重复执行一次。如果还报错,可以查看一下报错原因,具体分析)
部署完成之后,查看控制台信息,确认集群启动成功: