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版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
719 6
|
11月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
837 79
|
10月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
614 18
|
边缘计算 负载均衡 NoSQL
FreeMQTT Plus: 一个新型 MQTT Broker 集群的实现
FreeMQTT Plus 是一款基于 MQTT 协议的高性能消息中间件,采用分布式架构解决单点瓶颈问题。其核心由 Nginx 负载均衡器、黑(A)节点(MQTT Broker)、白(B)节点(消息路由)和日志(L)节点组成。通过无主从设计,支持高可用性、负载均衡与灵活扩展。针对会话同步、消息路由等挑战,FreeMQTT Plus 利用 MQTT5 特性定义元命令,实现节点间高效通信,无需依赖第三方组件。适用于物联网海量设备接入与高并发场景,为未来边缘计算和多级集群部署提供坚实基础。
1820 74
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
1775 91
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
743 161
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
886 163
|
消息中间件 存储 运维
2024最全RabbitMQ集群方案汇总
本文梳理了RabbitMQ集群的几种方案,主要包括普通集群、镜像集群(高可用)、Quorum队列(仲裁队列)、Streams集群模式(高可用+负载均衡)和插件方式。重点介绍了每种方案的特点、优缺点及适用场景。搭建步骤包括安装Erlang和RabbitMQ、配置集群节点、修改hosts文件、配置Erlang Cookie、启动独立节点并创建集群,以及配置镜像队列以提高可用性和容错性。推荐使用Quorum队列与Streams模式,其中Quorum队列适合高可用集群,Streams模式则同时支持高可用和负载均衡。此外,还有Shovel和Federation插件可用于特定场景下的集群搭建。
3322 2
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
366 12
|
消息中间件 RocketMQ
2024最全RocketMQ集群方案汇总
在研究RocketMQ集群方案时,发现网上存在诸多不一致之处,如组件包含NameServer、Broker、Proxy等。通过查阅官方文档,了解到v4.x和v5.x版本的差异。v4.x部署模式包括单主、多主、多主多从(异步复制、同步双写),而v5.x新增Local与Cluster模式,主要区别在于Broker和Proxy是否同进程部署。Local模式适合平滑升级,Cluster模式适合高可用需求。不同模式下,集群部署方案大致相同,涵盖单主、多主、多主多从等模式,以满足不同的高可用性和性能需求。
1913 0