Docker搭建rabbitmq集群

简介: 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}

2.拉取并运行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
              来连接,格式为 容器名:容器内部的名字

3.进行访问 宿主机ip:15672 ,可以看到只有一个节点

搭建集群

1.进入mq01节点容器 停止 start_app服务


docker exec -it mq01 bash #进入容器

rabbitmqctl stop_app #停止rabbit应用

rabbitmqctl reset # 重置rabbit应用

rabbitmqctl start_app #启动 rabbir 应用

2.进入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应用


3.进入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应用


4.实现镜像集群


docker exec -it mq01 bash #进入mq01 容器

rabbitmqctl set_policy-p/ha-all"^"’{“ha-mode”:“all”}’ #策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。


5.刚问web页面 ,可以看到集群搭建成功

20210316115028334.png

其他问题

挂载卷后 如果删除容器,请把卷也删掉。

另外cookie 要保持一致 可以不用提前指定,可以复制成三份

怎么查看各个节点的cookie呢?

docker logs 容器名称

20210316115632643.png

例如这个容器, 他的cookie就是 “/var/lib/rabbitmq/.erlang.cookie”

另外复制之后,记得进入容器 给予400权限 ,即 容器内操作“chmod 600 /var/lib/rabbitmq/.erlang.cookie”

拓展

以上集群已经搭建完毕

如果需要高可用,可以使用 HAproxy / Nginx + keeplived 做负载和高可用

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
网络安全 Docker 容器
|
3月前
|
安全 Docker 容器
|
3月前
|
网络安全 Docker 容器
|
3月前
|
网络安全 数据安全/隐私保护 Docker
|
14天前
|
消息中间件 存储 运维
2024最全RabbitMQ集群方案汇总
本文梳理了RabbitMQ集群的几种方案,主要包括普通集群、镜像集群(高可用)、Quorum队列(仲裁队列)、Streams集群模式(高可用+负载均衡)和插件方式。重点介绍了每种方案的特点、优缺点及适用场景。搭建步骤包括安装Erlang和RabbitMQ、配置集群节点、修改hosts文件、配置Erlang Cookie、启动独立节点并创建集群,以及配置镜像队列以提高可用性和容错性。推荐使用Quorum队列与Streams模式,其中Quorum队列适合高可用集群,Streams模式则同时支持高可用和负载均衡。此外,还有Shovel和Federation插件可用于特定场景下的集群搭建。
115 2
|
1月前
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
53 8
|
1月前
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
99 8
|
1月前
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
52 6
|
14天前
|
消息中间件 RocketMQ
2024最全RocketMQ集群方案汇总
在研究RocketMQ集群方案时,发现网上存在诸多不一致之处,如组件包含NameServer、Broker、Proxy等。通过查阅官方文档,了解到v4.x和v5.x版本的差异。v4.x部署模式包括单主、多主、多主多从(异步复制、同步双写),而v5.x新增Local与Cluster模式,主要区别在于Broker和Proxy是否同进程部署。Local模式适合平滑升级,Cluster模式适合高可用需求。不同模式下,集群部署方案大致相同,涵盖单主、多主、多主多从等模式,以满足不同的高可用性和性能需求。
74 0
|
2月前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。