一、Rocketmq 最新版本5.3.0,采用docker镜像安装方式

在这里插入图片描述

二、官方rocketmq镜像对内存等参数配置非常不灵活便利

为了快速、灵活部署rocketmq,以及能方便对其内存等参数进行设置,特意制作了关于它的docker镜像。

三、镜像获取

最新rocketmq-5.3.0及其dashboard镜像,已上传阿里云镜像仓库

在这里插入图片描述在这里插入图片描述

采用以下命令可以直接拉取

docker pull registry.cn-hangzhou.aliyuncs.com/sinhy/rocketmq:sinhy-5.3.0
docker pull registry.cn-hangzhou.aliyuncs.com/sinhy/rocketmq-dashboard:sinhy-5.3.0

拉取后,需要将镜像标签重命名一下

docker tag registry.cn-hangzhou.aliyuncs.com/sinhy/rocketmq:sinhy-5.3.0 rocketmq:sinhy-5.3.0
docker tag registry.cn-hangzhou.aliyuncs.com/sinhy/rocketmq-dashboard:sinhy-5.3.0 rocketmq-dashboard:sinhy-5.3.0

四、Rocketmq docker 镜像部署脚本

内存,挂载路径自行根据修改配置,运行起来了,别忘了回来点个赞啊,祝工作开心~

准备工作

  1. JDK需要你自己挂载到一个目录下*(1.8及以上,建议17及以上)*,对应docker里面的jdk目录:
    /data/env/jdk
  2. 两台linux服务器(最低配置4核8g,生产环境建议最低4核16G),设置好内网ip(这里以172.16.10.90和172.16.10.91两台Linux环境做部署介绍),安装好docker等基础环境。

以集群部署【2m-2s-sync】方式介绍

1. namesrv配置

a. namesrv-a.properties (172.16.10.90)
listenPort=9876
b. namesrv-b.properties (172.16.10.91)
listenPort=9876

2. broker配置(a,b-s,b,a-s四个配置文件)

公共配置(为了避免重复,将以下4个broker配置的公共部分提前介绍)

# 是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false

# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false

# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4

# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824

#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=75

#限制消息内容大小,默认为4M 
maxMessageSize=65536

#发送消息线程池数量
sendMessageThreadPoolNums=128

#拉消息线程池数量
pullMessageThreadPoolNums=128

#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true

# 清理过期请求时,如果请求线程的创建时间到当前系统时间间隔大于 waitTimeMillsInSendQueue(默认 200ms,可以配置)就会清理这个请求, 然后给 Producer 返回一个系统繁忙的状态码
waitTimeMillsInSendQueue=300
broker-a.properties配置 (172.16.10.90)
# 整个broker集群名称,或者说是RocketMq集群的名称
brokerClusterName=SinhyBrokerCluster

# 指定master-slave集群的名称,一个rocketMq集群可以包含多个master-slave集群
brokerName=broker-a

# 集群中0表示Master,>0表示Slave
brokerId=0

# 删除消息存储过期文件的时间,默认凌晨四点
deleteWhen=04

# 指定未发生更新的消息存储文件的保留时间为默认48消失,过期将被删除
fileReservedTime=48

# broker的角色(主节点)
brokerRole=SYNC_MASTER

# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

# nameServer地址,集群用分号分割
namesrvAddr=172.16.10.90:9876;172.16.10.91:9876

# 指定broker的IP,需要根据每台机器进行修改,官方介绍可为空,系统默认自动识别,但多网卡时IP地址读取可能出错。
brokerIP1=172.16.10.90

# broker对外服务的监听端口
listenPort=10911
broker-b-s.properties配置 (172.16.10.90)
# 整个broker集群名称,或者说是RocketMq集群的名称
brokerClusterName=SinhyBrokerCluster

# 指定master-slave集群的名称,一个rocketMq集群可以包含多个master-slave集群
brokerName=broker-b

# 集群中0表示Master,>0表示Slave
brokerId=1

# 删除消息存储过期文件的时间,默认凌晨四点
deleteWhen=04

# 指定未发生更新的消息存储文件的保留时间为默认48消失,过期将被删除
fileReservedTime=48

# broker的角色(主节点)
brokerRole=SLAVE

# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

# nameServer地址,集群用分号分割
namesrvAddr=172.16.10.90:9876;172.16.10.91:9876

# 指定broker的IP,需要根据每台机器进行修改,官方介绍可为空,系统默认自动识别,但多网卡时IP地址读取可能出错。
brokerIP1=172.16.10.90

# broker对外服务的监听端口
listenPort=10711
broker-b.properties配置 (172.16.10.91)
brokerClusterName=SinhyBrokerCluster

# 指定master-slave集群的名称,一个rocketMq集群可以包含多个master-slave集群
brokerName=broker-b

# 集群中0表示Master,>0表示Slave
brokerId=0

# 删除消息存储过期文件的时间,默认凌晨四点
deleteWhen=04

# 指定未发生更新的消息存储文件的保留时间为默认48消失,过期将被删除
fileReservedTime=48

# broker的角色(主节点)
brokerRole=SYNC_MASTER

# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

# nameServer地址,集群用分号分割
namesrvAddr=172.16.10.90:9876;172.16.10.91:9876

# 指定broker的IP,需要根据每台机器进行修改,官方介绍可为空,系统默认自动识别,但多网卡时IP地址读取可能出错。
brokerIP1=172.16.10.91

# broker对外服务的监听端口
listenPort=10911
broker-a-s.properties配置 (172.16.10.91)
# 整个broker集群名称,或者说是RocketMq集群的名称
brokerClusterName=SinhyBrokerCluster

# 指定master-slave集群的名称,一个rocketMq集群可以包含多个master-slave集群
brokerName=broker-a

# 集群中0表示Master,>0表示Slave
brokerId=1

# 删除消息存储过期文件的时间,默认凌晨四点
deleteWhen=04

# 指定未发生更新的消息存储文件的保留时间为默认48消失,过期将被删除
fileReservedTime=48

# broker的角色(主节点)
brokerRole=SLAVE

# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

# nameServer地址,集群用分号分割
namesrvAddr=172.16.10.90:9876;172.16.10.91:9876

# 指定broker的IP,需要根据每台机器进行修改,官方介绍可为空,系统默认自动识别,但多网卡时IP地址读取可能出错。
brokerIP1=172.16.10.91

# broker对外服务的监听端口
listenPort=10711

3. Docker部署脚本

namesrv-a (172.16.10.90)
# 创建namesrv日志目录
mkdir -p /data/docker-containers/rocketmq/namesrv/logs

# 创建namesrv gc日志目录
mkdir -p /data/docker-containers/rocketmq/namesrv/gclogs

# 创建namesrv数据存储路径
mkdir -p /data/docker-containers/rocketmq/namesrv/store

# 创建namesrv配置目录
mkdir -p /data/docker-containers/rocketmq/namesrv/conf

# 创建namesrv容器
# WARNING: Published ports are discarded when using host network mode
# 提示解释:docker启动时指定--network=host或-net=host,如果还指定了-p或-P,那这个时候就会有此警告,并且通过-p或-P设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。
docker run -d \
  --restart=always \
  --privileged=true \
  -p 9876:9876 \
  --volume /data/docker-containers/rocketmq/namesrv/logs:/root/logs \
  --volume /data/docker-containers/rocketmq/namesrv/gclogs:/data/rocketmq/gclogs \
  --volume /data/docker-containers/rocketmq/namesrv/store:/root/store \
  --volume /data/docker-containers/rocketmq/namesrv/conf/2m-2s-sync:/data/rocketmq/conf/2m-2s-sync \
  --volume /data/env/jdk:/data/env/jdk \
  --name namesrv-a \
  --network host \
  -e xss="512k" \
  -e xms="512m" \
  -e xmx="1024m" \
  -e maxDirectMemorySize="512m" \
  -e metaspaceSize="64m" \
  -e maxMetaspaceSize="256m" \
  -e JAVA_OPT_EXT="--add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED" \
  rocketmq:sinhy-5.3.0 \
  nohup bash ./bin/namesrv-start.sh -c /data/rocketmq/conf/2m-2s-sync/namesrv-a.properties
namesrv-b (172.16.10.91)
# 创建namesrv日志目录
mkdir -p /data/docker-containers/rocketmq/namesrv/logs

# 创建namesrv gc日志目录
mkdir -p /data/docker-containers/rocketmq/namesrv/gclogs

# 创建namesrv数据存储路径
mkdir -p /data/docker-containers/rocketmq/namesrv/store

# 创建namesrv配置目录
mkdir -p /data/docker-containers/rocketmq/namesrv/conf
docker run -d \
  --restart=always \
  --privileged=true \
  -p 9876:9876 \
  --volume /data/docker-containers/rocketmq/namesrv/logs:/root/logs \
  --volume /data/docker-containers/rocketmq/namesrv/gclogs:/data/rocketmq/gclogs \
  --volume /data/docker-containers/rocketmq/namesrv/store:/root/store \
  --volume /data/docker-containers/rocketmq/namesrv/conf/2m-2s-sync:/data/rocketmq/conf/2m-2s-sync \
  --volume /data/env/jdk:/data/env/jdk \
  --name namesrv-b \
  --network host \
  -e xss="512k" \
  -e xms="512m" \
  -e xmx="1024m" \
  -e maxDirectMemorySize="512m" \
  -e metaspaceSize="64m" \
  -e maxMetaspaceSize="256m" \
  -e JAVA_OPT_EXT="--add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED" \
  rocketmq:sinhy-5.3.0 \
  nohup bash ./bin/namesrv-start.sh -c /data/rocketmq/conf/2m-2s-sync/namesrv-b.properties
broker-a (172.16.10.90)
# 创建broker日志目录
mkdir -p /data/docker-containers/rocketmq/broker/a/logs

# 创建namesrv gc日志目录
mkdir -p /data/docker-containers/rocketmq/broker/a/gclogs

# 创建broker数据存储路径
mkdir -p /data/docker-containers/rocketmq/broker/a/store

# 创建broker各节点的配置文件路径
mkdir -p /data/docker-containers/rocketmq/broker/a/conf

# 创建broker-a节点容器
docker run -d\
  --restart=always \
  --privileged=true \
  -p 10911:10911 \
  --volume /data/docker-containers/rocketmq/broker/a/logs:/root/logs \
  --volume /data/docker-containers/rocketmq/broker/a/gclogs:/data/rocketmq/gclogs \
  --volume /data/docker-containers/rocketmq/broker/a/store:/root/store \
  --volume /data/docker-containers/rocketmq/broker/conf/2m-2s-sync:/data/rocketmq/conf/2m-2s-sync \
  --volume /data/env/jdk:/data/env/jdk \
  --name broker-a-10911 \
  --network host \
  -e xss="512k" \
  -e xms="512m" \
  -e xmx="2048m" \
  -e maxDirectMemorySize="1024m" \
  -e metaspaceSize="64m" \
  -e maxMetaspaceSize="256m" \
  -e JAVA_OPT_EXT="-XX:+IgnoreUnrecognizedVMOptions --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED" \
  rocketmq:sinhy-5.3.0 \
  nohup bash ./bin/broker-start.sh -c /data/rocketmq/conf/2m-2s-sync/broker-a.properties
broker-b-s (172.16.10.90)
# 创建broker日志目录
mkdir -p /data/docker-containers/rocketmq/broker/b-s/logs

# 创建namesrv gc日志目录
mkdir -p /data/docker-containers/rocketmq/broker/b-s/gclogs

# 创建broker数据存储路径
mkdir -p /data/docker-containers/rocketmq/broker/b-s/store

# 创建broker各节点的配置文件路径
mkdir -p /data/docker-containers/rocketmq/broker/conf

# 创建broker-a节点容器(一定要用bash执行sh脚本,否则遇到[[]]这种命令无法执行)
docker run -d\
  --restart=always \
  --privileged=true \
  -p 10711:10711 \
  --volume /data/docker-containers/rocketmq/broker/b-s/logs:/root/logs \
  --volume /data/docker-containers/rocketmq/broker/b-s/gclogs:/data/rocketmq/gclogs \
  --volume /data/docker-containers/rocketmq/broker/b-s/store:/root/store \
  --volume /data/docker-containers/rocketmq/broker/conf/2m-2s-sync:/data/rocketmq/conf/2m-2s-sync \
  --volume /data/env/jdk:/data/env/jdk \
  --name broker-b-s-10711 \
  --network host \
  -e xss="512k" \
  -e xms="512m" \
  -e xmx="2048m" \
  -e maxDirectMemorySize="1024m" \
  -e metaspaceSize="64m" \
  -e maxMetaspaceSize="256m" \
  -e JAVA_OPT_EXT="-XX:+IgnoreUnrecognizedVMOptions --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED" \
  rocketmq:sinhy-5.3.0 \
  nohup bash ./bin/broker-start.sh -c /data/rocketmq/conf/2m-2s-sync/broker-b-s.properties
broker-b (172.16.10.91)
# 创建broker日志目录
mkdir -p /data/docker-containers/rocketmq/broker/b/logs

# 创建namesrv gc日志目录
mkdir -p /data/docker-containers/rocketmq/broker/b/gclogs

# 创建broker数据存储路径
mkdir -p /data/docker-containers/rocketmq/broker/b/store

# 创建broker各节点的配置文件路径
mkdir -p /data/docker-containers/rocketmq/broker/conf

# 创建broker-a节点容器
docker run -d\
  --restart=always \
  --privileged=true \
  -p 10911:10911 \
  --volume /data/docker-containers/rocketmq/broker/b/logs:/root/logs \
  --volume /data/docker-containers/rocketmq/broker/b/gclogs:/data/rocketmq/gclogs \
  --volume /data/docker-containers/rocketmq/broker/b/store:/root/store \
  --volume /data/docker-containers/rocketmq/broker/conf/2m-2s-sync:/data/rocketmq/conf/2m-2s-sync \
  --volume /data/env/jdk:/data/env/jdk \
  --name broker-b-10911 \
  --network host \
  -e xss="512k" \
  -e xms="512m" \
  -e xmx="2048m" \
  -e maxDirectMemorySize="1024m" \
  -e metaspaceSize="64m" \
  -e maxMetaspaceSize="256m" \
  -e JAVA_OPT_EXT="-XX:+IgnoreUnrecognizedVMOptions --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED" \
  rocketmq:sinhy-5.3.0 \
  nohup bash ./bin/broker-start.sh -c /data/rocketmq/conf/2m-2s-sync/broker-b.properties
broker-a-s (172.16.10.91)
# 创建broker日志目录
mkdir -p /data/docker-containers/rocketmq/broker/a-s/logs

# 创建namesrv gc日志目录
mkdir -p /data/docker-containers/rocketmq/broker/a-s/gclogs

# 创建broker数据存储路径
mkdir -p /data/docker-containers/rocketmq/broker/a-s/store

# 创建broker各节点的配置文件路径
mkdir -p /data/docker-containers/rocketmq/broker/conf

# 创建broker-a节点容器
docker run -d\
  --restart=always \
  --privileged=true \
  -p 10711:10711 \
  --volume /data/docker-containers/rocketmq/broker/a-s/logs:/root/logs \
  --volume /data/docker-containers/rocketmq/broker/a-s/gclogs:/data/rocketmq/gclogs \
  --volume /data/docker-containers/rocketmq/broker/a-s/store:/root/store \
  --volume /data/docker-containers/rocketmq/broker/conf/2m-2s-sync:/data/rocketmq/conf/2m-2s-sync \
  --volume /data/env/jdk:/data/env/jdk \
  --name broker-a-s-10711 \
  --network host \
  -e xss="512k" \
  -e xms="512m" \
  -e xmx="2048m" \
  -e maxDirectMemorySize="1024m" \
  -e metaspaceSize="64m" \
  -e maxMetaspaceSize="256m" \
  -e JAVA_OPT_EXT="-XX:+IgnoreUnrecognizedVMOptions --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED" \
  rocketmq:sinhy-5.3.0 \
  nohup bash ./bin/broker-start.sh -c /data/rocketmq/conf/2m-2s-sync/broker-a-s.properties

最后是简单的rocketmq-dashboard的docker镜像部署

# 创建dashboard日志目录
mkdir -p /data/docker-containers/rocketmq/dashboard/logs

# 创建dashboard gc日志目录
mkdir -p /data/docker-containers/rocketmq/dashboard/gclogs

# 创建dashboard 临时数据存储路径
mkdir -p /data/docker-containers/rocketmq/dashboard/tmp

# 创建broker-a节点容器
docker run -d\
  --restart=always \
  --privileged=true \
  -p 19876:19876 \
  --volume /data/docker-containers/rocketmq/dashboard/logs:/root/logs \
  --volume /data/docker-containers/rocketmq/dashboard/gclogs:/data/rocketmq-dashboard-application/gclogs \
  --volume /data/docker-containers/rocketmq/dashboard/tmp:/tmp \
  --volume /data/env/jdk:/data/env/jdk \
  --name rocketmq-dashboard-5.3.0 \
  --network host \
  -e xss="512k" \
  -e xms="128m" \
  -e xmx="512m" \
  -e maxDirectMemorySize="128m" \
  -e metaspaceSize="64m" \
  -e maxMetaspaceSize="256m" \
  -e JAVA_OPT_EXT="" \
  -e SERVER_PORT=19876 \
  -e NAMESRV_ADDR="172.16.10.90:9876,172.16.10.91:9876" \
  rocketmq-dashboard:sinhy-5.3.0

五、启动成功界面

在这里插入图片描述在这里插入图片描述在这里插入图片描述

六、总结

好了,以上就是关于rocketmq最新版本5.3.0的docker镜像安装部署介绍(基于【2m-2s-sync】集群模式),喜欢的朋友,记得点赞,收藏,关注我,后期会有更多经典docker镜像介绍!!

GitHub 加速计划 / da / dashboard
7
2
下载
General-purpose web UI for Kubernetes clusters
最近提交(Master分支:4 个月前 )
9a476333 Bumps [jest-preset-angular](https://github.com/thymikee/jest-preset-angular) from 14.2.0 to 14.2.2. - [Release notes](https://github.com/thymikee/jest-preset-angular/releases) - [Changelog](https://github.com/thymikee/jest-preset-angular/blob/main/CHANGELOG.md) - [Commits](https://github.com/thymikee/jest-preset-angular/compare/v14.2.0...v14.2.2) --- updated-dependencies: - dependency-name: jest-preset-angular dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 4 个月前
11b7e82e Bumps [cypress](https://github.com/cypress-io/cypress) from 13.13.1 to 13.13.2. - [Release notes](https://github.com/cypress-io/cypress/releases) - [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md) - [Commits](https://github.com/cypress-io/cypress/compare/v13.13.1...v13.13.2) --- updated-dependencies: - dependency-name: cypress dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 4 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐