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

docker安装rockerMQ

参考Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)_rocketmq不推荐用docker部署-CSDN博客

 镜像拉取

镜像地址: https://hub.docker.com/r/apache/rocketmq/tags
我在部署的时候最新发行版是5.1.0可以根据需求自行选择一个5.x的版本,部署流程不会有太大改变。

docker pull apache/rocketmq:5.1.0

 

部署NameServer

NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现,几乎无状态节点,因此可集群部署,节点之间无任何信息同步,所谓的集群部署和单机部署其实是一样的,需要多个NameServer保持高可用只需独立部署即可。

创建挂载文件夹

或者 

mkdir -p ./nameserver/logs
mkdir -p ./nameserver/bin

设置权限:如果不设置会导致NameServer容器内部无法写日志文件 

chmod 777 -R /opt/service/slhy-hywl-rocketmq-docker/nameserver/*

 

参考:

创建挂载文件 

NameServer启动脚本中有一个自动计算最大堆内存和新生代内存的函数会导致在不同硬件环境下设置最大堆内存和新生代内存环境变量不被应用,,这里先提前copy一份容器内部启动脚本做挂载,如果想自定义内存可以自己调整。

1、启动容器

docker run -d \
--privileged=true \
--name rmqnamesrv \
apache/rocketmq:5.1.0 sh mqnamesrv

 

 

2、复制容器内启动脚本到挂载目录

docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /opt/service/slhy-hywl-rocketmq-docker/nameserver/bin/runserver.sh

3、修改runserver.sh

vi /opt/service/slhy-hywl-rocketmq-docker/nameserver/bin/runserver.sh

找到调用calculate_heap_sizes函数的位置注释掉保存即可,拉到脚本最底部就能找到 

 

4、停止&删除容器

docker stop rmqnamesrv
docker rm rmqnamesrv

5、启动NameServer 

sudo docker run -d \
--privileged=true \
--restart=always \
--name rmqnamesrv \
-p 9876:9876  \
-v /opt/service/slhy-hywl-rocketmq-docker/nameserver/logs:/home/rocketmq/logs \
-v /opt/service/slhy-hywl-rocketmq-docker/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
apache/rocketmq:5.1.0 sh mqnamesrv
docker ps -a | grep rmqnamesrv

 

 

 

 
 部署Broker

创建的挂载文件夹

提前创建挂载目录用于挂载容器内部数据、配置文件、以及日志。

mkdir /opt/service/slhy-hywl-rocketmq-docker/broker/logs -p
mkdir /opt/service/slhy-hywl-rocketmq-docker/broker/store -p
mkdir /opt/service/slhy-hywl-rocketmq-docker/broker/conf -p
mkdir /opt/service/slhy-hywl-rocketmq-docker/broker/bin -p

 

设置权限

chmod 777 -R /opt/service/slhy-hywl-rocketmq-docker/broker/*

 

创建broker.conf文件

在/usr/local/rocketmq/broker/conf文件夹下创建broker.conf文件

vi /opt/service/slhy-hywl-rocketmq-docker/broker/conf/broker.conf

添加以下配置信息到broker.conf

# NameServer 地址,外部访问配置为宿主机 IP 和映射端口
namesrvAddr = 37.121.124.108:9876# 集群名称
brokerClusterName = DefaultCluster# Broker 名称
brokerName = broker-a# Broker ID,0 表示 Master,其他正整数表示 Slave
brokerId = 0# Broker 服务地址,内外都配置为宿主机 IP
brokerIP1 = 37.121.124.108# HA 地址,一般和 brokerIP1 相同
brokerIP2 = 37.121.124.108# Broker 角色
brokerRole = ASYNC_MASTER# 刷盘方式
flushDiskType = ASYNC_FLUSH# 删除过期文件时间点(默认凌晨 4 点)
deleteWhen = 04# 文件保留时间(小时)
fileReservedTime = 72# 是否允许自动创建 Topic(生产环境建议关闭)
autoCreateTopicEnable=true# 是否允许自动创建订阅组(生产环境建议关闭)
autoCreateSubscriptionGroup=true

说明:建立broker.conf文件,通过这个文件把RocketMQ的broker管理起来 

当你在 另一个容器(Broker 容器) 中启动 Broker 时,namesrvAddr 指向 宿主机的 IP 地址 37.121.124.108:9876,那么:

  • Broker 容器会尝试通过 宿主机网络访问 37.121.124.108:9876

  • 如果宿主机上的 9876 端口确实被 NameServer 容器监听并正确映射,Broker 就能访问到 NameServer

参考:

外部使用 指的是 外部网络中的服务需要访问这个 Broker

  • 公网 IP: 是指可以通过互联网访问的 IP 地址。例如:37.121.124.108

假设你的 Broker 在服务器上运行,这个服务器有一个公网 IP,那么你希望外部服务(例如其他系统、客户端)也能访问这个 Broker:

配置:

brokerIP1 = 37.121.124.108

RocketMq部署windos服务器,本地怎么访问!!!RocketMQ连接报错RemotingConnectException: connect to 解决-CSDN博客

Docker安装RocketMQ教程-CSDN博客 

拷贝容器内Broker启动脚本到宿主机(如果不需要自定义堆内存可以跳过)
Broker启动脚本中有一个自动计算最大堆内存和新生代内存的函数会导致在不同硬件环境下设置最大堆内存和新生代内存环境变量不被应用,,这里先提前copy一份容器内部启动脚本做挂载,如果想自定义内存可以自己调整。

1、启动容器

docker run -d \
--name rmqbroker \
--privileged=true \
apache/rocketmq:5.1.0 \
sh mqbroker

 

2、复制容器内启动脚本到挂载目录

docker cp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /opt/service/slhy-hywl-rocketmq-docker/broker/bin/runbroker.sh 

vi /opt/service/slhy-hywl-rocketmq-docker/broker/bin/runbroker.sh 

找到调用calculate_heap_sizes函数的位置注释掉保存即可,拉到脚本最底部就能找到

 

 

docker stop rmqbroker
docker rm rmqbroker
docker run -d \
--restart=always \
--name rmqbroker \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /opt/service/slhy-hywl-rocketmq-docker/broker/logs:/root/logs \
-v /opt/service/slhy-hywl-rocketmq-docker/broker/store:/root/store \
-v /opt/service/slhy-hywl-rocketmq-docker/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /opt/service/slhy-hywl-rocketmq-docker/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
apache/rocketmq:5.1.0 \
sh mqbroker -c /opt/service/slhy-hywl-rocketmq-docker/broker/conf/broker.conf

 

 部署RocketMQ控制台

镜像拉取

拉取最新版即可

docker pull apacherocketmq/rocketmq-dashboard:latest
docker run -d \
--restart=always \
--name rmqdashboard \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=37.121.124.108:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8083:8080 \
apacherocketmq/rocketmq-dashboard

 

参考: 

 

然后访问

8083端口

 

停止容器:

docker stop rmqdashboard

 

 

http://www.lryc.cn/news/2379892.html

相关文章:

  • 交叉引用、多个参考文献插入、跨文献插入word/wps中之【插入[1-3]、连续文献】
  • PLC双人舞:profinet转ethernet ip网关奏响施耐德与AB的协奏曲
  • Image and depth from a conventional camera with a coded aperture论文阅读
  • 缺乏团队建设活动,如何增强凝聚力?
  • 特征筛选方法总结
  • 力扣HOT100之二叉树:230. 二叉搜索树中第 K 小的元素
  • pinia.defineStore is not a function
  • 入职软件开发与实施工程师了后........
  • PCL点云库点云数据处理入门系列教材目录(2025年5月更新....)
  • Linux面试题集合(5)
  • python动漫论坛管理系统
  • 【ubuntu24.04】pycharm 死机结束进程
  • Java 中Supplier延迟生成值的原因
  • 设置windows10同时多用户登录方法
  • Web 技术与 Nginx 网站环境部署
  • 分组背包问题:如何最大化背包价值?
  • nodejs快速入门到精通1
  • FP8精度革命:Hopper架构下大模型训练的误差传播控制方法
  • 手动制做一个Transformer
  • 已解决——如何让网站实现HTTPS访问?
  • WebRTC技术EasyRTC嵌入式音视频通信SDK助力智能电视搭建沉浸式实时音视频交互
  • Unreal Engine: Windows 下打包 AirSim项目 为 Linux 平台项目
  • Spring MVC HttpMessageConverter 的作用是什么?
  • 小乌龟git中的推送账户、作者账户信息修改
  • Kubernetes MCP服务器(K8s MCP):如何使用?
  • Node.js聊天室开发:从零到上线的完整指南
  • R²AIN SUITE 亮相第九届智能工厂高峰论坛
  • 深入理解仿函数(Functors):从概念到实践
  • InternLM 论文分类微调实践(XTuner 版)
  • 《Python星球日记》 第88天:ChatGPT 与 LangChain