1.宿主机
CENTOS1 10.11.17.248 centos1:rabbit1
CENTOS2 10.11.17.249 centos2:rabbit2
CENTOS3 10.11.17.252 centos3:rabbit3
2.宿主机持久数据目录和hosts配置(每个节点按下列步骤执行)
创建持久数据目录
mkdir /opt/rabbitmq
host配置(rabbitmq集群需要解析主机名)
cd /opt/rabbitmq
vim hosts#输入
10.11.17.248 centos1rabbit1
10.11.17.249 centos2 rabbit2
10.11.17.252 centos3 rabbit3
3.创建容器
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
#容器后台运行
--name rabbit1
#容器名为rabbit1,在宿主机上运行“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=admin
#设置rabbitmq默认用户为admin
-e RABBITMQ_DEFAULT_PASS=admin123
#设置rabbitmq默认密码为admin123
-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这个镜像
4. 设置节点2,加入到集群:
docker exec -it rabbit2 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@centos1
rabbitmqctl start_app
exit
5. 设置节点3,加入到集群:
docker exec -it rabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@centos1
rabbitmqctl start_app
exit
参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。
6. 查询集群状态
rabbitmqctl cluster_status
7.故障节点的处理
docker exec -it rabbit2 /bin/bash
rabbitmqctl stop
#在一个正常的节点上移除有问题的节点
rabbitmqctl -n rabbit@centos1 forget_cluster_node rabbit@centos2