rabbitmq构建普通集群docker-compose方式

2024-08-28 09:18

本文主要是介绍rabbitmq构建普通集群docker-compose方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.rabbitmq相关操作命令官方文档:rabbitmq操作命令
2.下载延迟插件:延迟插件下载
下载成功后,上传至安装目录,在此我新建个目录专门作为rabbitmq的安装目录
在这里插入图片描述

3.编写Dockerfile构建新镜像,把延迟插件加进去,或者不用编写Dockerfile直接启动,然后把延迟插件复制进去

以下为编写Dockerfile方式:

Dockerfile文件如下

FROM rabbitmq:3.8.10-rc.5-management-alpine
COPY  rabbitmq_delayed_message_exchange-3.8.0.ez   /plugins
RUN rabbitmq-plugins enable --offline rabbitmq_management rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp rabbitmq_delayed_message_exchange rabbitmq_web_stomp rabbitmq_tracing

docker-compose.yml文件如下:

version: '3.9'
services:#服务名称rabbitmq:#构建镜像build: .#镜像名称image: rabbitmq:s1.0#容器名称container_name: rabbitmq#总是重启后启动restart: alwayshostname: rabbitmq01#端口映射ports:- 5672:5672- 15672:15672- 4369:4369- 25672:25672- 61613:61613#挂载volumes:- /data/rabbitmq/data:/var/lib/rabbitmq- /etc/hosts:/etc/hosts- /etc/localtime:/etc/localtimeprivileged: true#环境变量environment:- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=qikecheng- RABBITMQ_ERLANG_COOKIE=BGDMHWCMAFHHPOBZEYMG- RABBITMQ_NODENAME=slave01

4.以上文件编写完成,接下来开始启动单个rabbitmq

#启动并构建镜像
docker-compose up --build -d
#如果已构建过可直接使用
docker-compose up -d
#up命令会创建新的容器,down命令会删除已创建的容器
docker-compose down
#以上两个命令容器会受到影响,如果容器已构建成功,正常的停止启动应该使用以下两个命令
#停止
docker-compose stop
#启动
docker-compose start
#更多命令可查看官网或使用帮助命令
docker-compose --help
#查看启动状态
docker-compose ps

5.启动成功查看延时插件是否添加成功
在这里插入图片描述
如果不成功,则可直接进入到容器中再次运行插件启动命令

#查看容器
docker ps
#进入容器
docker exec -it 镜像id /bin/bash
#启用插件
rabbitmq-plugins enable --offline rabbitmq_management rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp rabbitmq_delayed_message_exchange

不使用Dockerfile构建方式:
1.直接docker-compose启动rabbitmq,然后再将插件添加到容器中,再运行插件启用命令即可

docker-compose.yml

version: '3.9'
services:#服务名称rabbitmq:#镜像名称image: rabbitmq:3.8.10-rc.5-management-alpine#容器名称container_name: rabbitmq#总是重启后启动restart: alwayshostname: rabbitmq01#端口映射ports:- 5672:5672- 15672:15672- 4369:4369- 25672:25672- 61613:61613#挂载volumes:- /data/rabbitmq/data:/var/lib/rabbitmq- /etc/hosts:/etc/hosts- /etc/localtime:/etc/localtimeprivileged: true#环境变量environment:- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=qikecheng- RABBITMQ_ERLANG_COOKIE=BGDMHWCMAFHHPOBZEYMG- RABBITMQ_NODENAME=slave01

2.启动并添加延时插件

#启动并创建容器
docker-compose up -d
#关闭并删除容器,一般不要使用
docker-compose down
#查看启动的容器
docker ps
#将延时插件复制到rabbitmq插件目录中
docker cp rabbitmq_delayed_message_exchange-3.8.0.ez 0f12b4db0d68:/opt/rabbitmq/plugins/
#进入容器
docker exec -it 0f12b4db0d68 /bin/bash
#启用插件
rabbitmq-plugins enable --offline rabbitmq_stomp rabbitmq_delayed_message_exchange
#退出容器
exit

3.重新启动容器,延时插件才会生效

#停止
docker-compose stop
#启动
docker-compose start

4.访问控制台即可查看到容器插件已经添加成功
在这里插入图片描述

构建rabbimq集群:
1.构建前环境准备,我这里构建的集群是分布于三台独立虚拟机的,不是在一台上构建,在同一台上勾建相对简单。
2.配置三台hosts映射,hosts中必须包含刚刚构建yml中指定的虚拟hostname名称
我的三台机器配置如下:
在这里插入图片描述

3.保证三台机.erlang.cookie相同,我这里是在yml中进行了指定,但是新版本已不推荐此方式,如果不在yml中指定,则复制一台机的到另外两台机上,保持一致就行,.erlang.cookie的目录在&HOME目录下,docker-compose方式是存放在映射的目录下,如下图
在这里插入图片描述
4.随便选一台作为集群主机,将其它node节点加入到该集群主机中即可构建成普通集群了

#查看启动的容器
docker ps
#将延时插件复制到rabbitmq插件目录中
docker cp rabbitmq_delayed_message_exchange-3.8.0.ez 0f12b4db0d68:/opt/rabbitmq/plugins/
#进入容器
docker exec -it 0f12b4db0d68 /bin/bash
#停止el虚拟机
rabbitmqctl stop_app
rabbitmqctl reset
#加入集群
rabbitmqctl join_cluster master01@rabbitmq00
#再次启动
rabbitmqctl start_app
#要加入的节点执行以上操作即可加入集群

master01@rabbitmq00名称必须要与主节点一致,不然找不到,会报错,大多错误原因由此引起
在这里插入图片描述

5.加入完成,进行如任意主机页面查看,即可看到构建成功的集群
在这里插入图片描述

6.将slave01@rabbitmq01节点移除集群

rabbitmqctl forget_cluster_node slave01@rabbitmq01

7.至此普通集群已构建完成,如果想设置为镜像队列,可做如下策略设置
设置镜像队列命令:“rabbitmqctl set_policy 名称 匹配模式(正则) 镜像定义”

#设置惊醒队列
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
#查看集群状态
rabbitmqctl status

控制台查看是否成功,也可控制台设置
在这里插入图片描述
创建的测试queue
在这里插入图片描述
在这里插入图片描述

这篇关于rabbitmq构建普通集群docker-compose方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114354

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re