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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3天前
|
Docker 容器
docker部署omni_usdt 0.8.0版本私有链集群环境
docker部署omni_usdt 0.8.0版本私有链集群环境
|
5天前
|
消息中间件 Java API
MQ产品使用合集之RocketMQ dledger集群模式的dledgerpeers端口是集群之间通讯吗
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
14 0
|
5天前
|
消息中间件
rabbitMQ集群
rabbitMQ集群
7 0
|
5天前
|
消息中间件 网络协议 Linux
用docker方式 安装rabbitmq 并配置MQTT
用docker方式 安装rabbitmq 并配置MQTT
15 0
|
5天前
|
监控 Docker 容器
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
【5月更文挑战第8天】本文探讨了Docker Swarm集群的扩展与缩容策略。集群扩展可提高性能、增强可用性和适应业务发展,可通过手动或自动方式实现。缩容则需考虑业务需求、资源利用率和节点状态,可手动或按策略执行。关键步骤包括添加/移除节点及任务迁移。注意数据同步、监控评估和测试验证。案例分析和总结强调了灵活管理对保持集群最佳状态的重要性。
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
|
5天前
|
算法 Nacos Docker
docker部署nacos集群
docker部署nacos集群
31 0
|
5天前
|
NoSQL Redis Docker
使用Docker搭建Redis主从集群
使用Docker搭建Redis主从集群
35 1
|
5天前
|
消息中间件 存储 监控
Docker安装部署RabbitMQ(单机版)
Docker安装部署RabbitMQ(单机版)
33 1
|
5天前
|
消息中间件 JavaScript Docker
rabbitmq 3.9.29 docker mac 管理员页面无法打开
rabbitmq 3.9.29 docker mac 管理员页面无法打开
|
5天前
|
存储 Kubernetes Docker
构建高效稳定的Docker容器集群:从原理到实践
【4月更文挑战第19天】 在当今微服务架构盛行的时代,容器化技术已经成为了软件开发和部署的标准实践。本文深入探讨了如何利用Docker容器技术,结合Kubernetes集群管理工具,构建一个高效、稳定且可扩展的容器化环境。文章首先简述了Docker的核心原理及其优势,接着详细阐述了Kubernetes的基本概念与组件,最后通过一个实际案例来指导读者如何从零开始搭建并优化一个基于Docker和Kubernetes的容器集群系统。
24 1