Docker分布式部署RabbitMQ集群

Docker分布式部署RabbitMQ集群

1.宿主机

HOSTA 192.168.51.121 hostname:rabbit1
HOSTB 192.168.51.155 hostname:rabbit2
HOSTC 192.168.51.122 hostname:rabbit3

2.宿主机持久数据目录和hosts配置

创建持久数据目录

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

3.创建容器

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需要修改

4.将节点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

5.故障节点的处理

docker exec -it rabbit2 /bin/bash
rabbitmqctl stop
#在一个正常的节点上移除有问题的节点
rabbitmqctl  -n rabbit@rabbit1 forget_cluster_node rabbit@rabbit2




相关

非docker方式部署rabbitmq集群

你可能感兴趣的:(linux运维)