Docker分布式部署RabbitMQ集群

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

你可能感兴趣的:(Docker分布式部署RabbitMQ集群)