当前位置: 首页 > news >正文

rabbitmq容器化部署

需求 容器化部署rabbitmq服务

部署服务

找到如下官网信息版本

官网版本发布信息

这里看到最新版本是3.13版本,这里在3.13中找一个版本下载容器镜像即可。

找到dockrhub.com中 找到3.13.2版本镜像。

容器服务安装此处省略

现在下载容器镜像需要配置容器代理

~# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://hub.iyuu.cn","https://docker.1panel.live"]
}

下载rabbitmq镜像

docker pull rabbitmq:3.13.2-management

部署容器服务

docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password  rabbitmq:3.13.2-management

查看容器状态,容器异常退出,查看容器日志

# docker ps -a
CONTAINER ID   IMAGE                        COMMAND                  CREATED             STATUS                           PORTS                                                                                                                                                 NAMES
a739628b8375   rabbitmq:3.13.2-management   "docker-entrypoint.s…"   About an hour ago   Exited (134) About an hour ago      n# docker logs a73
Failed to create thread: Operation not permitted (1)
Aborted (core dumped)

这个报错是容器出现了权限问题,部署容器的时候需要加root特权的,这里加入参数docker时加上参数 --privileged=true
privileged=true:获得真正的root权限

删除这个异常退出的容器 重新部署

 docker run -d -p 15672:15672  -p  5672:5672 --privileged=true --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password  rabbitmq:3.13.2-management
bda51306d6691788437c49f1a5284c84be85abf10653ac5eb8930283a969b6e8
:~# docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED         STATUS        PORTS                                                                                                                                                 NAMES
bda51306d669   rabbitmq:3.13.2-management   "docker-entrypoint.s…"   2 seconds ago   Up 1 second   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   some-rabbit

查看到容器服务已正常运行 无报错

验证及访问服务

访问 web端 用IP地址+15672  账号密码 user/password

到这里 mq服务部署 配置无误。

rabbitmq配置LTS

这边配置LTS依然在容器环境下

以下代码在宿主机上运行

# 创建 CA 证书
# 创建一个 CA 密钥文件,用于签发证书。
openssl genrsa -out ca_key.pem 4096# 使用 CA 密钥创建一个自签名的 CA 证书。
openssl req -new -x509 -days 3650 -key ca_key.pem -out ca_certificate.pem -subj "/C=US/ST=California/L=San Francisco/O=YourOrg/CN=YourOrg CA"# 创建服务器证书和密钥
# 创建一个服务器密钥文件。
openssl genrsa -out server_key.pem 4096# 使用服务器密钥创建一个证书请求。
openssl req -new -key server_key.pem -out server_csr.pem -subj "/C=US/ST=California/L=San Francisco/O=YourOrg/CN=yourserver.example.com"# 使用 CA 证书签发服务器证书。
openssl x509 -req -in server_csr.pem -CA ca_certificate.pem -CAkey ca_key.pem -CAcreateserial -out server_certificate.pem -days 365

确认所有证书文件都已正确生成:

•ca_key.pem:CA 密钥文件

•ca_certificate.pem:CA 证书文件

•server_key.pem:服务器密钥文件

•server_certificate.pem:服务器证书文件

以下代码在宿主机运行

提前把配置文件从容器服务中取出来配置文件路径是/etc/rabbitmq/conf.d/10-defaults.conf

docker cp 容器名称:/etc/rabbitmq/conf.d/10-defaults.conf .

把配置文件获取到本地后开始编辑配置文件,追加以下配置文件

listeners.ssl.default = 5671ssl_options.cacertfile = /etc/rabbitmq/ca_certificate.pem
ssl_options.certfile   = /etc/rabbitmq/server_certificate.pem
ssl_options.keyfile    = /etc/rabbitmq/server_key.pem
ssl_options.verify     = verify_peer
ssl_options.fail_if_no_peer_cert = true

注意  上面生成的ssl配置文件是在宿主机的路径下,配置文件指定的路径是容器内的路径,这里要注意替换配置文件路径。

这里需要提前给上面的配置文件和秘钥授权不然会有如下报错。

报错参考如下:这里是因为秘钥文件在宿主机是因root创建的,容器内是已rabbitmq用户运行的程序,这里权限访问不到,会报错路径找不到文件。

2024-09-14 07:05:01.736878+00:00 [error] <0.156.0> ssl_options.keyfile invalid, file does not exist or cannot be read by the node
2024-09-14 07:05:01.747045+00:00 [error] <0.156.0> Error preparing configuration in phase validation:
2024-09-14 07:05:01.747111+00:00 [error] <0.156.0>   - ssl_options.keyfile invalid, file does not exist or cannot be read by the node2024-09-14 07:05:01.749037+00:00 [error] <0.156.0>
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0> BOOT FAILED
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0> ===========
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0> Error during startup: {error,failed_to_prepare_configuration}
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0>

进入容器查看服务运行的用户,容器内是用rabbitmq用户运行的程序

解决以上报错给文件授权

# 在配置文件和秘钥文件 的存储目录执行
chmod 777 *

把run命令 准备好,一般建议放到sh文件中。(注意秘钥文件路径)

 docker run -d     --hostname my-rabbit  --privileged=true   --name some-rabbit     -v /root/rabbitmq/10-defaults.conf:/etc/rabbitmq/conf.d/10-defaults.conf     -v /root/rabbitmq/ca_certificate.pem:/etc/rabbitmq/ca_certificate.pem     -v /root/rabbitmq/server_certificate.pem:/etc/rabbitmq/server_certificate.pem     -v /root/rabbitmq/server_key.pem:/etc/rabbitmq/server_key.pem     -e RABBITMQ_DEFAULT_USER=user     -e RABBITMQ_DEFAULT_PASS=password  -p 5671:5671   -p 5672:5672     -p 15672:15672     rabbitmq:3.13.2-management

查看容器日志信息

2024-09-14 08:05:32.133593+00:00 [info] <0.669.0> Ready to start client connection listeners
2024-09-14 08:05:32.135054+00:00 [info] <0.822.0> started TCP listener on [::]:5672
2024-09-14 08:05:32.136665+00:00 [info] <0.842.0> started TLS (SSL) listener on [::]:5671completed with 6 plugins.
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> Server startup complete; 6 plugins started.
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0>  * rabbitmq_prometheus
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0>  * rabbitmq_federation
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0>  * rabbitmq_management
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0>  * rabbitmq_management_agent
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0>  * rabbitmq_web_dispatch
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0>  * oauth2_client
2024-09-14 08:05:32.218109+00:00 [info] <0.9.0> Time to start RabbitMQ: 5468 ms
2024-09-14 08:05:45.800176+00:00 [info] <0.886.0> Waiting for Mnesia tables for 30000 ms, 9 retries left
2024-09-14 08:05:45.800326+00:00 [info] <0.886.0> Successfully synced tables from a peer
2024-09-14 08:05:46.794458+00:00 [info] <0.914.0> Waiting for Mnesia tables for 30000 ms, 9 retries left
2024-09-14 08:05:46.794598+00:00 [info] <0.914.0> Successfully synced tables from a peer
2024-09-14 08:44:57.191730+00:00 [notice] <0.1672.0> TLS server: In state hello at tls_record.erl:561 generated SERVER ALERT: Fatal - Unexpected Message
2024-09-14 08:44:57.191730+00:00 [notice] <0.1672.0>  - {unsupported_record_type,13}

最重要的要搜索到以下两句话,这个是可以证明TLS已启用状态了,基本可以说是没有问题了。

2024-09-14 08:05:32.135054+00:00 [info] <0.822.0> started TCP listener on [::]:5672
2024-09-14 08:05:32.136665+00:00 [info] <0.842.0> started TLS (SSL) listener on [::]:5671

参考官网链接

服务验证

这里访问 IP地址+端口号  先测试一下 管理端是否可以访问,账号密码是 user/password,就是上面容器传进去的变量。这边可以访问到,就证明MQ是没有明显报错的。

TLS验证

先在其它宿主机上telnet 5671 TLS的专用端口 是否可以通,目前看到端口可以通,基本无误,可以联系研发进行 下一步程序连接TLS端口的测试和验证。

/rabbitmq# telnet 110.120.110.110 5671
Trying 110.120.110.110...
Connected to 110.120.110.110.
Escape character is '^]'.

参考官网的配置文件

相关文章:

rabbitmq容器化部署

需求 容器化部署rabbitmq服务 部署服务 找到如下官网信息版本 官网版本发布信息 这里看到最新版本是3.13版本&#xff0c;这里在3.13中找一个版本下载容器镜像即可。 找到dockrhub.com中 找到3.13.2版本镜像。 容器服务安装此处省略 现在下载容器镜像需要配置容器代理 ~#…...

如何用 Helm Chart 安装指定版本的 GitLab Runner?

本分分享如何使用 Helm 来在 Kubernetes 集群上安装极狐GitLab Runner。整体步骤分为&#xff1a;Helm 的安装、vaules.yaml 文件的配置、Runner 的安装、Runner 的测试。 极狐GitLab 为 GitLab 在中国的发行版&#xff0c;中文版本对中国用户更友好。极狐GitLab 支持一键私有…...

el-table使用合计和固定列时,滚动条被覆盖区域无法拖拽问题

pointer-events文档 解决思路为通过pointer-events实现事件穿透&#xff0c;不响应固定列的拖拽&#xff0c;而是响应其子元素的拖拽事件 /deep/.el-table__fixed, /deep/.el-table__fixed-right {pointer-events: none; } /deep/.el-table__fixed *, /deep/.el-table__fixed-…...

【疑难杂症2024-005】docker-compose中设置容器的ip为固定ip后,服务无法启动

本文由Markdown语法编辑器编辑完成。 1.背景&#xff1a; 我们的产品是通过docker image的方式发布&#xff0c;并且编排在docker-compose.yml中发布。在同一个docker-compose.yml中的服务&#xff0c;相互之间&#xff0c;可以通过对方的服务名和端口&#xff0c;来直接访问…...

uView使用心得

说实话我不爱用这个库&#xff0c;感觉很鸡肋&#xff0c;坑很多&#xff0c;可能没用习惯 picker选择器 绑定默认值是通过设置index&#xff0c;并且这个index需要通过api设置进去&#xff0c;设置defalutindex绑定值无效&#xff08;只有初始化可以&#xff0c;后面动态改变…...

RabbitMQ(高阶使用)死信队列

文章内容是学习过程中的知识总结&#xff0c;如有纰漏&#xff0c;欢迎指正 文章目录 一、什么是死信队列&#xff1f; 二、死信队列使用场景 三、死信队列如何使用 四、打车超时处理 1.打车超时实现 以下是本篇文章正文内容 一、什么是死信队列&#xff1f; 先从概念解释上搞…...

怎么安装docker-compose

使用下列命令下载docker-compose&#xff08;可选择其他版本&#xff09; wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 --no-check-certificate然后把该文件移动到/usr/local/bin/并重命名 mv docker-compose-linux-x86_…...

【机器学习】--- 自监督学习

1. 引言 机器学习近年来的发展迅猛&#xff0c;许多领域都在不断产生新的突破。在监督学习和无监督学习之外&#xff0c;自监督学习&#xff08;Self-Supervised Learning, SSL&#xff09;作为一种新兴的学习范式&#xff0c;逐渐成为机器学习研究的热门话题之一。自监督学习…...

【Linux修行路】网络套接字编程——UDP

目录 ⛳️推荐 前言 六、Udp Server 端代码 6.1 socket——创建套接字 6.2 bind——将套接字与一个 IP 和端口号进行绑定 6.3 recvfrom——从服务器的套接字里读取数据 6.4 sendto——向指定套接字中发送数据 6.5 绑定 ip 和端口号时的注意事项 6.5.1 云服务器禁止直接…...

哈希表数据结构学习

哈希表数据结构学习 哈希表基本概念哈希方法单值哈希与多值哈希哈希冲突1. 开放寻址法&#xff08;Open Addressing&#xff09;2. 链地址法&#xff08;Chaining&#xff09;3. 再哈希法&#xff08;Rehashing&#xff09;4. 建立公共溢出区&#xff08;Overflow Area&#xf…...

数据结构——“二叉搜索树”

二叉搜索树是一个很重要的数据结构&#xff0c;它的特殊结构可以在很短的时间复杂度找到我们想要的数据。最坏情况下的时间复杂度是O(n)&#xff0c;最好是O(logn)。接下来看一看它的接口函数的实现。 为了使用方便&#xff0c;这里采用模版的方式&#xff1a; 一、节点 temp…...

Java零基础-Java对象详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云/阿里云/华为云/51CTO&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互…...

从Prompt到创造:解锁AI的无限潜能

文章目录 &#x1f34a;AI内容创作核心&#xff1a;提示词Prompt1 什么是提示词工程?1.1 提示词的原理是什么&#xff1f;1.2 提示词工程师&#xff1a;百万年薪的职业&#xff1f;1.3 谁都能成为提示词工程师吗&#xff1f; 2 提示词书写的基本技巧3 常见的提示词框架3.1 CO-…...

sqlgun靶场攻略

打开界面 1.输入框测试回显点 -1union select 1,2,3#出现回显点 2.查看数据库名 -1union select 1,2,database()# 3.查看表名 -1union select 1,2,group_concat(table_name) from information_schema.tables where table_schemasqlgunnews# 4.查看admin表中列名 -1union se…...

《网络协议 - HTTP传输协议及状态码解析》

文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码&#xff08;英语&#xff1a;HTTP Status Code&#xff09;是用以表示网页服务器超文本传…...

9.11 QT ( Day 4)

一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…...

利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(四)

简介 随着生成式人工智能的兴起&#xff0c;传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求&#xff0c;今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight&#xff0c;利用生成式AI的能力来加速业务决策&#xff0c;从而提高业务生产力。…...

2024.9最新:CUDA安装,pytorch库安装

目录 一、CUDA安装 1.查看自己电脑适配的CUDA的最高版本 2.安装CUDA 3.检查环境变量是否配置&#xff0c;安装是否成功 二、pytorch库安装 1.pytorch库下载 2.选择合适的版本 3.查看版本 一、CUDA安装 1.查看自己电脑适配的CUDA的最高版本 在命令提示符里输入nvidia-…...

Vue3.0组合式API:setup()函数

1、什么是组合式API Vue 3.0 中新增了组合式 API 的功能&#xff0c;它是一组附加的、基于函数的 API&#xff0c;可以更加灵活地组织组件代码。通过组合式 API 可以使用函数而不是声明选项的方式来编写 Vue 组件。因此&#xff0c;使用组合式 API 可以将组件代码编写为多个函…...

利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)

简介 随着生成式人工智能的兴起&#xff0c;传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求&#xff0c;今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight&#xff0c;利用生成式AI的能力来加速业务决策&#xff0c;从而提高业务生产力。…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...