一、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 镜像部署脚本
内存,挂载路径自行根据修改配置,运行起来了,别忘了回来点个赞啊,祝工作开心~
准备工作
- JDK需要你自己挂载到一个目录下(1.8及以上,建议17及以上),对应docker里面的jdk目录:**/data/env/jdk**。
- 两台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 \-p9876: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 \--networkhost\-exss="512k"\-exms="512m"\-exmx="1024m"\-emaxDirectMemorySize="512m"\-emetaspaceSize="64m"\-emaxMetaspaceSize="256m"\-eJAVA_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 \nohupbash ./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 \-p9876: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 \--networkhost\-exss="512k"\-exms="512m"\-exmx="1024m"\-emaxDirectMemorySize="512m"\-emetaspaceSize="64m"\-emaxMetaspaceSize="256m"\-eJAVA_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 \nohupbash ./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 \-p10911: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 \--networkhost\-exss="512k"\-exms="512m"\-exmx="2048m"\-emaxDirectMemorySize="1024m"\-emetaspaceSize="64m"\-emaxMetaspaceSize="256m"\-eJAVA_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 \nohupbash ./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 \-p10711: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 \--networkhost\-exss="512k"\-exms="512m"\-exmx="2048m"\-emaxDirectMemorySize="1024m"\-emetaspaceSize="64m"\-emaxMetaspaceSize="256m"\-eJAVA_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 \nohupbash ./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 \-p10911: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 \--networkhost\-exss="512k"\-exms="512m"\-exmx="2048m"\-emaxDirectMemorySize="1024m"\-emetaspaceSize="64m"\-emaxMetaspaceSize="256m"\-eJAVA_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 \nohupbash ./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 \-p10711: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 \--networkhost\-exss="512k"\-exms="512m"\-exmx="2048m"\-emaxDirectMemorySize="1024m"\-emetaspaceSize="64m"\-emaxMetaspaceSize="256m"\-eJAVA_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 \nohupbash ./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 \-p19876: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 \--networkhost\-exss="512k"\-exms="128m"\-exmx="512m"\-emaxDirectMemorySize="128m"\-emetaspaceSize="64m"\-emaxMetaspaceSize="256m"\-eJAVA_OPT_EXT=""\-eSERVER_PORT=19876\-eNAMESRV_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镜像介绍!!
版权归原作者 龙殿殿主 所有, 如有侵权,请联系我们删除。