使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解

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

镜像拉取

提前先拉取需要的镜像文件,避免后面部署的时候出现镜像拉取失败的问题。

拉取RocketMQ服务镜像(使用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-compose部署RocketMQ5.x 单机部署+配置参数详解
使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解

拉取RocketMQ控制台镜像(rocketmq-dashboard)

拉取最新版即可

docker pull apacherocketmq/rocketmq-dashboard:latest

安装docker-compose v2版本并赋予权限(已经安装跳过这一步)

这里使用compose v2版本
1、下载(使用get.daocloud.io国内链接下载)

sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2、添加执行权限

chmod +x /usr/local/bin/docker-compose

3、验证

# docker Compose v2版本命令
docker compose version
Docker Compose version v2.15.1
# docker Compose v1版本命令
docker-compose -version

4、删除docker-compose

sudo rm /usr/local/bin/docker-compose

比对docker版本对应的Compose file format

编写前先比对一下自己的docker版本对应的Compose file format,我的docker用的版本比较新这里可以用3.8或者直接写3也行
https://docs.docker.com/compose/compose-file/compose-versioning/

docker --version

使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解

使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解

创建需要挂载的文件夹和文件

创建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-compose部署RocketMQ5.x 单机部署+配置参数详解
4、停止&删除容器

docker stop rmqnamesrv
docker rm rmqnamesrv

创建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常用参数做详细介绍

# 集群名称
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-compose部署RocketMQ5.x 单机部署+配置参数详解

4、停止&删除容器

docker stop rmqbroker
docker rm rmqbroker

编写docker-compose.yml文件

进入/usr/local/rocketmq目录,创建docker-compose.yml文件,将下面的编排信息写入

cd /usr/local/rocketmq
vi docker-compose.yml
version: '3.8'
services:
  rmqnamesrv:
    image: apache/rocketmq:5.1.0
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    restart: always
    privileged: true
    volumes:
      - /usr/local/rocketmq/nameserver/logs:/home/rocketmq/logs
      - /usr/local/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh
    environment:
      - MAX_HEAP_SIZE=256M
      - HEAP_NEWSIZE=128M
    command: ["sh","mqnamesrv"]
  broker:
    image: apache/rocketmq:5.1.0
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
    restart: always
    privileged: true
    volumes:
      - /usr/local/rocketmq/broker/logs:/home/rocketmq/logs
      - /usr/local/rocketmq/broker/store:/home/rocketmq/logs
      - /usr/local/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf
      - /usr/local/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh
    depends_on:
      - 'rmqnamesrv'
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
      - MAX_HEAP_SIZE=512M
      - HEAP_NEWSIZE=256M
    command: ["sh","mqbroker","-c","/home/rocketmq/broker.conf"]
  rmqdashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rocketmq-dashboard
    ports:
      - 8080:8080
    restart: always
    privileged: true
    depends_on:
      - 'rmqnamesrv'
    environment:
      - JAVA_OPTS= -Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false

启动服务

# docker Compose v2版本命令
docker compose up -d #  -d 指后台运行
# docker Compose v1版本命令
docker-compose up -d #  -d 指后台运行

使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解
启动成功访问控制台
http://192.168.10.220:8080
使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解文章来源地址https://www.toymoban.com/news/detail-473769.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-compose部署RocketMQ5.x 单机部署+配置参数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 使用 docker-compose 部署 Jenkins

    使用 docker-compose 部署 Jenkins

    注:我是在虚拟机(Ubuntu)上部署了 docker-compose,然后才使用 docker-compose 部署 Jenkins! 关于如何在 Ubuntu 部署 docker-compose,可以看我其它的文章。 docker_jenkins_compose 目录下创建 docker-compose.yml 文件: 进入 docker-compose.yml 文件: 按下键盘上的 i ,进入可以编写的模式。 将下面的

    2024年02月17日
    浏览(16)
  • 【Docker】(七)使用docker-compose一键部署环境

    【Docker】(七)使用docker-compose一键部署环境

    本系列文章记录了从0开始学习Docker的过程,Docker系列历史文章: (一)基本概念与安装使用 (二)如何使用Docker发布一个SpringBoot服务 (三)使用registry远程镜像仓库管理镜像 (四)使用volume持久化Docker容器中的Redis数据 (五)使用bind mounts修改Docker容器中的Nginx配置 (六)

    2024年02月08日
    浏览(14)
  • docker部署(使用docker-compose)手把手教程

    docker部署(使用docker-compose)手把手教程

    docker-compose.yml 文件内容  安装成功后,运行 docker ps 出现如下报错  表示未启动docker,运行下列语句即可 安装完成后,运行 赋予权限即可 在服务器上单独新建文件夹名为ruoyi-admin dockerfile文件如下  执行如下命令 这就构建出本地的镜像了。   依次再构建出ruoyi/ruoyi-xxl-job-adm

    2024年02月01日
    浏览(20)
  • 使用docker-compose 部署 MySQL(所有版本通用)

    使用docker-compose 部署 MySQL(所有版本通用)

    我这里使用的是MySQL8.0.18,可以自行选择需要的版本。 这里需要给MySQL做点自定义的配置,比如时区字符编码等。 以交互式命令进入容器,也可以使用navicat等客户端连接,使用Docker安装MySQL会给root用户开启远程访问。 使用MySQL自带客户端连接工具连接 PS:如果远程连接不上可

    2024年02月04日
    浏览(15)
  • web3:使用Docker-compose方式部署blockscout

    最近做的项目,需要blockscout来部署一个区块链浏览器,至于blockscout是什么,咱们稍后出一篇文章专门介绍下,本次就先介绍一下如何使用Docker-compose方式部署blockscout,以及过程中遇到的种种坑

    2024年02月12日
    浏览(16)
  • [云原生1. ] 使用Docker-compose一键部署Wordpress平台

    [云原生1. ] 使用Docker-compose一键部署Wordpress平台

    docker-compose 是实现在单机上对容器集群编排管理的工具。 docker-compose 是基于python开发的,能运行docker的平台,都能用docker-compose编排管理容器。 本质就是在 yaml格式 的 docker-compose配置模板文件 里定义多个容器的启动参数和依赖关系,并使用 docker-compose 根据这个模板文件的配

    2024年02月07日
    浏览(39)
  • 【微服务部署】一、使用docker-compose部署Jenkins、SonarQube、PostgreSQL

    【微服务部署】一、使用docker-compose部署Jenkins、SonarQube、PostgreSQL

    一、安装 1、编写docker-compose部署Postgres、SonarQube、Jenkins的yml文件jenkins-compose.yml Postgres:作为SonarQube的数据库存储 SonarQube:代码质量检查 Jenkins:jenkins/jenkins:lts镜像,jenkinsci/blueocean镜像缺少node运行时环境,导致node无法运行。 关键配置说明( 宿主机 : Docker容器): /data/doc

    2024年02月09日
    浏览(11)
  • CentOS7下使用docker-compose安装部署superset

    见 docker在CentOS下安装 和 Docker-compose安装。 官网指引: https://superset.apache.org/docs/installation/installing-superset-using-docker-compose 注:此处使用自己搭建的 mysql 作为数据的存储 该文件在 ./superset/docker 目录下,使用 ls -a 进行查看该隐藏文件 注: 1、增加自行搭建的 mysql 地址、账号和

    2024年02月06日
    浏览(20)
  • ubuntu部署个人网盘nextCloud使用docker-compose方式

    ubuntu部署个人网盘nextCloud使用docker-compose方式

    当下各大网盘的容量都是有限制的,而且xx云不开会员网速就拉跨。 所以就想搭建一个自己的盘,并且可以控制用户的权限分组; nextCloud 就很合适 我这边都是自己用偶尔给其他人使用下,所以直接 docker 部署了。 ubuntu 版本: 20.04 docker 版本: Docker version 24.0.2, build cb74dfc d

    2024年02月07日
    浏览(30)
  • 【Docker从入门到入土 5】 使用Docker-compose一键部署Wordpress平台

    【Docker从入门到入土 5】 使用Docker-compose一键部署Wordpress平台

    YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。 类似于 json 数据描述语言,语法比 json 简单的很多。 YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。 语法特点 区分大

    2024年02月03日
    浏览(13)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包