建议食用本文前请先阅读【RabbitMq 普通集群搭建】篇
一、RabbitMq镜像
- 镜像:
rabbitmq:3.8-management - 启动参数:
--name: 容器名称-h / --hostname:rabbitMq默认节点的host-v:文件挂载映射-p:端口映射- 5672:容器内默认的
rabbitMq启动端口 - 15672:容器内默认的
rabbitMq管理插件启动端口
- 5672:容器内默认的
- 环境变量:(支持所有
rabbitMq环境变量)RABBITMQ_NODENAME:节点名称,缺省为rabbit@[hostname]RABBITMQ_DEFAULT_USER:默认用户名,缺省为gusetRABBITMQ_DEFAULT_PASS:默认密码,缺省为guestRABBITMQ_DEFAULT_VHOST:默认虚拟主机,缺省为/RABBITMQ_ERLANG_COOKIE:erlang.cookie值
二、搭建集群
- 启动多份
rabbitMq容器# 启动节点一 docker run -d --hostname clusterRabbit1 --name clusterRabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -v /opt/ci123/www/html/rabbitMq/clusterRabbit1:/var/lib/rabbitmq rabbitmq:3.8-management # 启动节点二 docker run -d --hostname clusterRabbit2 --name clusterRabbit2 -p 5673:5672 --link clusterRabbit1:clusterRabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -v /opt/ci123/www/html/rabbitMq/clusterRabbit2:/var/lib/rabbitmq rabbitmq:3.8-management
/var/lib/rabbitmq是容器内部文件数据存放目录,使用-v进行文件目录挂载。- 多个容器之间使用
--link <name or id>:alias连接,否则需要自行在各个容器添加供rabbitMq相互访问的host。 Erlang Cookie值必须相同,rabbitMQ是通过Erlang实现的,Erlang Cookie相当于不同节点之间相互通讯的秘钥,Erlang节点通过交换Erlang Cookie获得认证。
- 启动集群
- 设置节点二
rabbit@clusterRabbit2,加入节点一rabbit@clusterRabbit1的集群rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@clusterRabbit1 rabbitmqctl start_app - 查看
rabbitMq管理后台集群数据
- 设置节点二
-
一键化启动脚本
#!bin/sh # 启动节点一 docker run -d --hostname clusterRabbit1 --name clusterRabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -v /opt/ci123/www/html/rabbitMq/clusterRabbit1:/var/lib/rabbitmq rabbitmq:3.8-management # 启动节点二 docker run -d --hostname clusterRabbit2 --name clusterRabbit2 -p 5673:5672 --link clusterRabbit1:clusterRabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -v /opt/ci123/www/html/rabbitMq/clusterRabbit2:/var/lib/rabbitmq rabbitmq:3.8-management echo "即将开始初始化" sleep 5 # 加入集群 docker exec -it clusterRabbit2 sh -c 'rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@clusterRabbit1 && rabbitmqctl start_app' # 添加虚拟主机 docker exec -it clusterRabbit1 sh -c 'rabbitmqctl add_vhost cluster' # 添加用户 docker exec -it clusterRabbit1 sh -c 'rabbitmqctl add_user api_management shijiemori2012' # 添加用户权限 docker exec -it clusterRabbit1 sh -c 'rabbitmqctl set_permissions -p cluster api_management ".*" ".*" ".*"' # 设置用户标签 docker exec -it clusterRabbit1 sh -c 'rabbitmqctl set_user_tags api_management administrator'

《RabbitMq 使用docker搭建集群》上有1条评论