Docker搭建rabbitmq集群

前言

了解下Docker的rabbit的版本:
官方文档地址:https://www.rabbitmq.com/
从官方文档上我们了解有以下几个版本:
在这里插入图片描述
其中management版本是带有web页面的,其他版本需要下载页面插件才可以
。(这里博主就是吃了没看文档的亏,怎么也找不到页面 !!!∑(゚Д゚ノ)ノ)


如果你pull了rabbitmq 的其他版本镜像包,需要做以下操作

docker exec -itd 镜像ID /bin/bash  # 进入容器
进入容器后执行以下操作,即可安装web管理插件
rabbitmq-plugins enable rabbitmq_management  #这条命令是安装web插件的,执行完就可以用web页面了。

———————————————————————————————————
为了避免以上错误,我们接下来的操作直接使用rabbitmq:management版本的

搭建基础环境

  1. 创建数据目录
 mkdir -p /data/mqdata{01..03}

在这里插入图片描述

  1. 拉取并运行rebbitmq容器
docker run -d --hostname rabbit01 --name mq01  -v /data/mqdata01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456  -e RABBITMQ_ERLANG_COOKIE='HOUCUGJDZYTFZDSWXTHJ' rabbitmq:management

docker run -d --hostname rabbit02 --name mq02 -v /data/mqdata02:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -e RABBITMQ_ERLANG_COOKIE='HOUCUGJDZYTFZDSWXTHJ'   --link mq01:rabbit01 rabbitmq:management

docker run -d --hostname rabbit03 --name mq03 -v /data/mqdata03:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -e RABBITMQ_ERLANG_COOKIE='HOUCUGJDZYTFZDSWXTHJ'   --link mq01:rabbit01  --link mq02:rabbit02  rabbitmq:management
	--name          		  :容器名字
	--hostname                :容器内部的名字
	--RABBITMQ_DEFAULT_USER   :登陆用户名
	--RABBITMQ_DEFAULT_PASS   :登陆密码
	--RABBITMQ_ERLANG_COOKIE  :集群cookie 要保持一致
	--link  				  :应为我们不确定容器各节点的ip地址是否会更变,所以使用--link
								来连接,格式为 容器名:容器内部的名字
  1. 进行访问 宿主机ip:15672 ,可以看到只有一个节点
    在这里插入图片描述

搭建集群

  1. 进入mq01节点容器 停止 start_app服务
docker exec -it mq01 bash   #进入容器
rabbitmqctl stop_app     #停止rabbit应用
rabbitmqctl reset      # 重置rabbit应用
rabbitmqctl start_app  #启动 rabbir 应用
  1. 进入mq02节点容器 加入节点mq01
docker exec -it mq02 bash

rabbitmqctl stop_app  #停止rabbit应用

rabbitmqctl reset    #重置rabbitmq

rabbitmqctl join_cluster --ram rabbit@rabbit01 ## -ram 设置内存节点,后面设置的是rabbit01这个节点,这个ID是--hostname的
rabbitmqctl start_app #启动rabbit应用

  1. 进入mq03节点容器 加入节点mq01
docker exec -it mq03 bash

rabbitmqctl stop_app  #停止rabbit应用

rabbitmqctl reset    #重置rabbitmq

rabbitmqctl join_cluster --ram rabbit@rabbit02 ## --ram 设置内存节点,后面设置的是rabbit01这个节点,这个ID是--hostname的

rabbitmqctl start_app #启动rabbit应用

  1. 实现镜像集群

docker exec -it mq01 bash   #进入mq01 容器
rabbitmqctl set_policy-p/ha-all"^"'{"ha-mode":"all"}'  #策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。
  1. 刚问web页面 ,可以看到集群搭建成功

在这里插入图片描述

其他问题

挂载卷后 如果删除容器,请把卷也删掉。
另外cookie 要保持一致 可以不用提前指定,可以复制成三份
怎么查看各个节点的cookie呢?

docker logs 容器名称

在这里插入图片描述
例如这个容器, 他的cookie就是 “/var/lib/rabbitmq/.erlang.cookie”
另外复制之后,记得进入容器 给予400权限 ,即 容器内操作“chmod 600 /var/lib/rabbitmq/.erlang.cookie”

拓展

以上集群已经搭建完毕
如果需要高可用,可以使用 HAproxy / Nginx + keeplived 做负载和高可用
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

king config

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值