一、宿主机环境准备
HOSTA 192.168.51.121 hostname:rabbit1 HOSTB 192.168.51.155 hostname:rabbit2 HOSTC 192.168.51.122 hostname:rabbit3
二、宿主机持久数据目录和host配置
创建持久数据目录
mkdir /opt/rabbitmq
host配置(rabbitmq集群需要解析主机名)
cd /opt/rabbitmq sudo vim hosts #输入 192.168.51.121 rabbit1 rabbit1 192.168.51.155 rabbit2 rabbit2 192.168.51.122 rabbit3 rabbit3
三、创建容器
sudo docker run -d --net host --name rabbit1 --log-opt max-size=10m --log-opt max-file=3 -v /opt/rabbitmq:/var/lib/rabbitmq:z -v /opt/rabbitmq/hosts:/etc/hosts -e RABBITMQ_DEFAULT_USER=user01 -e RABBITMQ_DEFAULT_PASS=password01 -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3.6.15-management
参数说明
-d 容器后台运行 --hostname rabbit1 容器的主机名为 rabbit1,容器内部的hostname --name rabbit1 容器名为rabbit39,在宿主机上运行“docker ps”命令时显示的名称 --log-opt max-size=10m 日志文件单个最大10M --log-opt max-file=3 日志文件最多保留3个 -v /data/rabbitmq:/var/lib/rabbitmq:z 将宿主机目录/data/rabbitmq挂载到容器的/var/lib/rabbitmq目录。z是一个标记,在selinux环境下使用。 -v /opt/rabbitmq/hosts:/etc/hosts 略 -e RABBITMQ_DEFAULT_USER=user01 设置rabbitmq默认用户为user01 -e RABBITMQ_DEFAULT_PASS=password01 设置rabbitmq默认密码为password01 -e RABBITMQ_ERLANG_COOKIE='secret cookie here' 设置rabbitmq的cookie为“secret cookie here”,可以自定义为其他文本,三个容器保持一致即可。 reg.onlymin.com/public/rabbitmq:3.6.15-management 使用reg.onlymin.com/public/rabbitmq:3.6.15-management这个镜像
三台机器都执行上面的命令,hostname和容器name需要修改
四、将节点2,3加入集群
在rabbit2机器进入容器的命令行sudo docker exec -it rabbit2 /bin/bash
加入集群
rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@rabbit1 rabbitmqctl start_app
rabbit3执行相同的命令
查询集群状态
rabbitmactl cluster_status
五、故障节点的处理
docker exec -it rabbit2 /bin/bash rabbitmqctl stop #在一个正常的节点上移除有问题的节点 rabbitmqctl -n rabbit@rabbit1 forget_cluster_node rabbit@rabbit2
未经允许不得转载:大自然的搬运工 » 如何在Docker容器中搭建分布式RabbitMQ集群