1. 获取RabbitMQ镜像
> docker search rabbitmq
> docker pull rabbitmq:3.12-management
2. 创建集群容器文件夹
mkdir rabbitmqcluster
cd rabbitmqcluster/
mkdir rabbitmq01 rabbitmq02 rabbitmq03
3. 启动3个RabbitMQ容器
docker run -d --hostname rabbitmq01 --name rabbitmqCluster01 --privileged=true -v /home/hunter/rabbitmqcluster/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' rabbitmq:3.12-management
docker run -d --hostname rabbitmq02 --name rabbitmqCluster02 --privileged=true -v /home/hunter/rabbitmqcluster/rabbitmq02:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link rabbitmqCluster01:rabbitmq01 rabbitmq:3.12-management
docker run -d --hostname rabbitmq03 --name rabbitmqCluster03 --privileged=true -v /home/hunter/rabbitmqcluster/rabbitmq03:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link rabbitmqCluster01:rabbitmq01 --link rabbitmqCluster02:rabbitmq02 rabbitmq:3.12-management
说明:
--hostname 指定容器机器名称,也就是一个标识
--name 指定容器名称
--privileged=true 授予root权限,不然会报错
-v 指定文件夹与容器的映射,可以直接进入对应的文件夹查看容器日期
-p 指定容器与外部机器的映射端口
-e 设置环境变量,此处设置了RabbitMQ的cookie环境变量
最后面rabbitmq:3.12-management参数是指定使用哪个镜像
4. 把节点加入集群
- 首先进入第一个节点,重置节点状态,等待其他节点加入
docker exec -it rabbitmqCluster01 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
- 再进入第二个节点,重置状态,然后把第二个节点加入第一个节点的集群
docker exec -it rabbitmqCluster02 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit
- 最后同样的操作,把第三个节点也加入到集群
docker exec -it rabbitmqCluster03 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit