Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)

这篇具有很好参考价值的文章主要介绍了Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


官网地址:https://rocketmq.apache.org/

镜像拉取(使用apache/rocketmq镜像包含NameServer+Broker+Proxy…)

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

docker pull apache/rocketmq:5.1.0

Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)

Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)

部署NameServer

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

创建挂载文件夹

# 日志目录
mkdir /usr/local/rocketmq/nameserver/logs -p
# 脚本目录
mkdir /usr/local/rocketmq/nameserver/bin -p

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

# 777 文件所属者、文件所属组和其他人有读取 & 写入 & 执行全部权限。rwxrwxrwx
chmod 777 -R /usr/local/rocketmq/nameserver/*

创建挂载文件

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

1、启动容器

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

2、复制容器内启动脚本到挂载目录/usr/local/rocketmq/nameserver/bin

docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /usr/local/rocketmq/nameserver/bin/runserver.sh

3、修改runserver.sh

# 打开脚本文件
vi /usr/local/rocketmq/nameserver/bin/runserver.sh 

找到调用calculate_heap_sizes函数的位置注释掉保存即可,拉到脚本最底部就能找到
Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)
4、停止&删除容器

docker stop rmqnamesrv
docker rm rmqnamesrv

启动NameServer

sudo docker run -d \
--privileged=true \
--restart=always \
--name rmqnamesrv \
-p 9876:9876  \
-v /usr/local/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /usr/local/rocketmq/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部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)

  • 参数说明

注意个别参数有两个减号

参数 说明
-d 以守护进程的方式启动
–restart=always docker重启时候容器自动重启
–name rmqnamesrv 把容器的名字设置为rmqnamesrv
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面,宿主机端口:容器内部端口
-v /usr/local/rocketmq/nameserver/logs:/home/rocketmq/logs 挂载容器内日志
-v /usr/local/rocketmq/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 启动namesrv服务

部署Broker

创建需要映射的文件夹和文件

创建的挂载文件夹

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

# 创建需要的挂载目录
mkdir /usr/local/rocketmq/broker/logs -p \
mkdir /usr/local/rocketmq/broker/data -p \
mkdir /usr/local/rocketmq/broker/conf -p \
mkdir /usr/local/rocketmq/broker/bin -p

设置权限

# 777 文件所属者、文件所属组和其他人有读取 & 写入 & 执行全部权限。rwxrwxrwx
chmod 777 -R /usr/local/rocketmq/broker/*

创建broker.conf文件

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

vi /usr/local/rocketmq/broker/conf/broker.conf

添加以下配置信息到broker.conf,这里不对参数做过多的说明,在下面Broker配置详解中有对Broker常用参数做详细介绍

# nameServer 地址多个用;隔开 默认值null
# 例:127.0.0.1:6666;127.0.0.1:8888 
namesrvAddr = 192.168.10.220:9876
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# Broker服务地址	String	内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = 192.168.10.220
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 72
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

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

拷贝容器内Broker启动脚本到宿主机(如果不需要自定义堆内存可以跳过)

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

1、启动容器

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

2、复制容器内启动脚本到挂载目录/usr/local/rocketmq/nameserver/bin

docker cp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /usr/local/rocketmq/broker/bin/runbroker.sh

3、修改runbroker.sh

# 打开脚本文件
vi /usr/local/rocketmq/broker/bin/runbroker.sh 

找到调用calculate_heap_sizes函数的位置注释掉保存即可,拉到脚本最底部就能找到
Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)

4、停止&删除容器

docker stop rmqbroker
docker rm rmqbroker

启动Broker

docker run -d \
--restart=always \
--name rmqbroker \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /usr/local/rocketmq/broker/logs:/root/logs \
-v /usr/local/rocketmq/broker/store:/root/store \
-v /usr/local/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /usr/local/rocketmq/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 /home/rocketmq/broker.conf

Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)

  • 参数说明

注意个别参数有两个减号

参数 说明
-d 以守护进程的方式启动
–restart=always docker重启时候容器自动重启
–name rmqbroker 把容器的名字设置为rmqbroker
-p 10911:10911 把容器内的端口10911 挂载到宿主机10911 上面,宿主机端口:容器内部端口
-p 10909:10909 把容器内的端口10909 挂载到宿主机10909 上面,宿主机端口:容器内部端口
-v /usr/local/rocketmq/broker/logs:/root/logs 挂载容器内日志
-v /usr/local/rocketmq/broker/store:/root/store 挂载数据目录
-v /usr/local/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf 挂载启动配置文件
-v /usr/local/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh 挂载broker启动脚本,需要自己定义堆内存时使用
-e “MAX_HEAP_SIZE=512M” 设置最大堆内存和堆内存初始大小
-e “HEAP_NEWSIZE=256M” 设置新生代内存大小
apache/rocketmq:5.1.0 使用的镜像名称+版本
sh mqbroker -c /home/rocketmq/broker.conf 启动broker服务 使用自定义配置文件

部署Proxy

这里暂时不对Proxy进行部署,单机版本没必要,不使用Proxy和之前的4.x版本基本一致

部署RocketMQ控制台(rocketmq-dashboard)

镜像拉取

拉取最新版即可

docker pull apacherocketmq/rocketmq-dashboard:latest

启动RocketMQ控制台(rocketmq-dashboard)

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

Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)文章来源地址https://www.toymoban.com/news/detail-459836.html

Broker配置详解

# nameServer 地址多个用;隔开 默认值null
# 例:127.0.0.1:6666;127.0.0.1:8888 
namesrvAddr = 127.0.0.1:6666
# 集群名称 单机配置可以随意填写,如果是集群部署在同一个集群中集群名称必须一致类似Nacos的命名空间
brokerClusterName = DefaultCluster
# broker节点名称 单机配置可以随意填写,如果是集群部署在同一个集群中节点名称不要重复
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# Broker 对外服务的监听端口 默认值10911
# 端口(注意:broker启动后,会占用3个端口,分别在listenPort基础上-2,+1,供内部程序使用,所以集群一定要规划好端口,避免冲突)
listenPort=10911
# Broker服务地址	String	内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = 127.0.0.1
# BrokerHAIP地址,供slave同步消息的地址 内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP2 = 127.0.0.1

# Broker角色 默认值ASYNC_MASTER
# ASYNC_MASTER 异步复制Master,只要主写成功就会响应客户端成功,如果主宕机可能会出现小部分数据丢失
# SYNC_MASTER 同步双写Master,主和从节点都要写成功才会响应客户端成功,主宕机也不会出现数据丢失
# SLAVE
brokerRole = ASYNC_MASTER
# 刷盘方式
# SYNC_FLUSH(同步刷新)相比于ASYNC_FLUSH(异步处理)会损失很多性能,但是也更可靠,所以需要根据实际的业务场景做好权衡,默认值ASYNC_FLUSH
flushDiskType = ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 72

# 消息大小 单位字节 默认1024 * 1024 * 4
maxMessageSize=4194304

# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数,默认值4
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

# 失败重试时间,默认重试16次进入死信队列,第一次1s第二次5s以此类推。
# 延时队列时间等级默认18个,可以设置多个比如在后面添加一个1d(一天),使用的时候直接用对应时间等级即可,从1开始到18,如果添加了第19个直接使用等级19即可
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

# 指定TM在20秒内应将最终确认状态发送给TC,否则引发消息回查。默认为60秒
transactionTimeout=20
# 指定最多回查5次,超过后将丢弃消息并记录错误日志。默认15次。
transactionCheckMax=5
# 指定设置的多次消息回查的时间间隔为10秒。默认为60秒。
transactionCheckInterval=10

到了这里,关于Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker安装nacos单机版,配置发布时报错:发布失败,请检查参数是否正确

    今天想模拟一下开发环境nacos路由发布时出现删除某一个路由配置会导致gateway不可用,由于开发环境一直在使用,为此自己使用docker搭建一下nacos想复现一下场景。 根据相关博客搭建完成后,自己新建配置时,点击发布,就报了错误\\\"发布失败,请检查参数是否正确\\\"。 “发布

    2024年02月09日
    浏览(39)
  • 【RocketMQ】RocketMQ5.0新特性(一)- Proxy

    为了向云原生演进,提高资源利用和弹性能力,RocketMQ在5.0进行了架构的调整与升级,先来看新特性之一,增加了Proxy层。 计算存储分离 计算存储分离是一种分层架构,将计算层与存储层分开。 计算层指的是一些消耗计算资源的功能模块比如协议解析、消费管理等,存储指的

    2024年02月08日
    浏览(26)
  • ElasticSearch第一讲 Docker-compose 单机部署Elasticsearch kibana esHead与配置认证证书设置密码

    docker安装 docker-compose安装配置,如果还有没安装docker的可以参考我的docker/docker-compose安装配置 本次讲解的是安装ES 7.13.3 现在目前官网给出的最新ES版本已经是8.x了,ElasticSearch官网:https://www.elastic.co/guide/index.html 好了长话短说,我们直接上docker配置文件,对于一些配置文件和数

    2024年02月03日
    浏览(33)
  • docker安装单机nacos、rocketmq、reids、xxl-job、minio、elasticsearch、kibana、gogs、nginx

    目录在右侧中部 启动容器报错 直接删除那个name后边的就可以 首先需要拉取对应的镜像文件: docker pull nacos/nacos-server 挂载目录: 修改custom.properties配置文件: 启动nacos容器: 浏览器登录:ip:8848/nacos 账号:nacos 密码:nacos 设置nacos自启动: docker update --restart=always nacos 拉取镜

    2024年02月07日
    浏览(34)
  • docker安装单机nacos、rocketmq、reids、xxl-job、minio、elasticsearch、kibana、gogs、nginx、mongo

    目录在右侧中部 启动容器报错 直接删除那个name后边的就可以 首先需要拉取对应的镜像文件: docker pull nacos/nacos-server 挂载目录: 修改custom.properties配置文件: 启动nacos容器: 浏览器登录:ip:8848/nacos 账号:nacos 密码:nacos 设置nacos自启动: docker update --restart=always nacos 拉取镜

    2024年02月09日
    浏览(29)
  • Docker部署nacos 添加配置文件提示: 发布失败。请检查参数是否正确。

    网络上解法一 :mysql和nacos的版本不对应导致 网络上解法二 :配置表缺少encrypted_data_key字段 执行建表语句从别人的博客中复制的sql,这两个字段初始化就是不允许为null; encrypted_data_key修改微允许为null即可; 备注: 以上只是我配置nacos的时候遇到的问题以及解决办法,希望

    2024年02月12日
    浏览(41)
  • 【docker】docker部署单机redis

    一、搜索redis镜像 二、拉取镜像 三、创建容器,设置端口映射 四、使用外部机器连接redis

    2024年02月15日
    浏览(28)
  • K8S Helm安装RocketMQ standalone单机版,配置外网地址注册到nameserver中方便本地开发

    rocketmq 3.0.2 · sir5kong/rocketmq helm repo add rocketmq https://helm-charts.itboon.top/rocketmq helm pull rocketmq/rocketmq tar -xvf rocketmq-3.0.2.tgz 修改这个无效 /root/rocketmq/rocketmq/templates/broker/configmap.yaml 文件头有注释 {{/* 3.0 废弃 */}} 修改外网配置namesrvAddr、brokerIP1、listenPort vi /root/rocketmq/rocketmq/template

    2024年02月03日
    浏览(43)
  • rocketMQ5.0启动broker报错:module java.base does not export sun.nio.ch to unnamed module

    最近在搭建RocketMQ5.0,然后按照官方流程:https://rocketmq.apache.org/zh/docs/quickStart/02quickstart 先启动namesrv完,再启动broker的时候遇到以下错误。 之前大家如果搭建过老版本的RocketMQ基本都遇到过,因为使用jdk版本高的原因,jdk1.8以上涉及到导包的问题,所以RocketMQ启动命令不兼容

    2024年02月12日
    浏览(32)
  • docker 部署单机 seata

    下镜像 配置宿主机文件挂载 seata 两个配置文件 seata-config文件夹下 registry.conf  (改nacos配置) seata-config文件夹下 file.conf  (改sql配置) sql  seata 配置放入nacos,建议config.txt 放在data/seata下,nacos-config.sh 放入data/seata/test 创建文件 config.txt 创建文件 nacos-config.sh config.txt内容

    2023年04月18日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包