RocketMQ5.x单机部署全攻略:Docker与Docker-Compose实战指南

使用Docker与Docker-Compose部署RocketMQ5.x单机版:配置参数详解与实战指南

一、引言

RocketMQ作为阿里巴巴开源的一款分布式消息中间件,以其高性能、高可靠、高扩展性等特点,在微服务架构、大数据处理等领域得到了广泛应用。随着RocketMQ5.x版本的发布,带来了更多新特性和优化,本文将详细介绍如何使用Docker和Docker-Compose在单机环境下快速部署RocketMQ5.x,并对关键配置参数进行解析,帮助开发者快速上手。

二、环境准备

1. 安装Docker与Docker-Compose

首先,确保你的系统已安装Docker和Docker-Compose。Docker是一个轻量级的容器化技术,允许你将应用及其依赖打包在一个容器中运行;而Docker-Compose则是一个用于定义和运行多容器Docker应用的工具。

  • 安装Docker:根据你的操作系统(如Ubuntu、CentOS等),按照官方文档进行安装。
  • 安装Docker-Compose:同样参考官方文档,通过pip或直接下载二进制文件的方式安装。

2. 拉取RocketMQ5.x镜像

在Docker Hub上搜索rocketmq,找到官方或社区维护的RocketMQ5.x镜像。推荐使用官方镜像,以确保稳定性和安全性。

  1. docker pull apache/rocketmq:5.x.x # 替换5.x.x为具体版本号

三、使用Docker部署RocketMQ5.x单机版

1. 启动NameServer

RocketMQ的NameServer负责管理Broker的注册与发现,是消息队列的核心组件之一。

  1. docker run -d --name rmqnamesrv \
  2. -p 9876:9876 \
  3. -v /path/to/data/namesrv:/home/rocketmq/logs \
  4. apache/rocketmq:5.x.x \
  5. sh mqnamesrv
  • -d:后台运行容器。
  • --name rmqnamesrv:指定容器名称。
  • -p 9876:9876:将容器的9876端口映射到主机的9876端口,NameServer默认监听此端口。
  • -v /path/to/data/namesrv:/home/rocketmq/logs:将主机的日志目录挂载到容器内,便于日志查看与管理。
  • sh mqnamesrv:启动NameServer的命令。

2. 启动Broker

Broker是RocketMQ的实际消息存储和处理单元。

  1. docker run -d --name rmqbroker \
  2. -p 10911:10911 -p 10909:10909 \
  3. -e "NAMESRV_ADDR=主机IP:9876" \ # 替换主机IP为实际IP
  4. -v /path/to/data/broker:/home/rocketmq/logs \
  5. -v /path/to/conf/broker.conf:/opt/rocketmq-5.x.x/conf/broker.conf \ # 自定义配置文件
  6. apache/rocketmq:5.x.x \
  7. sh mqbroker -c /opt/rocketmq-5.x.x/conf/broker.conf
  • -p 10911:10911 -p 10909:10909:分别映射Broker的TCP端口和SSL端口。
  • -e "NAMESRV_ADDR=主机IP:9876":设置NameServer的地址,确保Broker能正确注册。
  • -v /path/to/conf/broker.conf:/opt/rocketmq-5.x.x/conf/broker.conf:将自定义的broker配置文件挂载到容器内。

四、使用Docker-Compose部署RocketMQ5.x单机版

为了简化部署流程,推荐使用Docker-Compose。首先,创建一个docker-compose.yml文件:

  1. version: '3'
  2. services:
  3. rmqnamesrv:
  4. image: apache/rocketmq:5.x.x
  5. container_name: rmqnamesrv
  6. ports:
  7. - "9876:9876"
  8. volumes:
  9. - /path/to/data/namesrv:/home/rocketmq/logs
  10. command: sh mqnamesrv
  11. rmqbroker:
  12. image: apache/rocketmq:5.x.x
  13. container_name: rmqbroker
  14. ports:
  15. - "10911:10911"
  16. - "10909:10909"
  17. environment:
  18. - NAMESRV_ADDR=rmqnamesrv:9876
  19. volumes:
  20. - /path/to/data/broker:/home/rocketmq/logs
  21. - /path/to/conf/broker.conf:/opt/rocketmq-5.x.x/conf/broker.conf
  22. command: sh mqbroker -c /opt/rocketmq-5.x.x/conf/broker.conf
  23. depends_on:
  24. - rmqnamesrv

然后,在文件所在目录执行:

  1. docker-compose up -d

这将按照docker-compose.yml中的配置启动NameServer和Broker。

五、配置参数详解

1. broker.conf关键参数

  • brokerClusterName:Broker集群名称,单机部署时可设为默认值。
  • brokerName:Broker名称,需唯一。
  • brokerId:Broker ID,0表示Master,非0表示Slave。
  • namesrvAddr:NameServer地址,多个用分号分隔。
  • listenPort:Broker监听端口,默认为10911。
  • storePathRootDir:消息存储根目录。
  • autoCreateTopicEnable:是否自动创建Topic,生产环境建议设为false。
  • deleteWhen:消息删除策略,如04:00表示每天4点删除过期消息。
  • fileReservedTime:消息文件保留时间,单位小时。
  • diskSpaceUsedRatioThreshold:磁盘使用率阈值,超过则触发告警或限制写入。

2. 性能调优参数

  • sendMessageThreadPoolNums:发送消息线程池数量,根据CPU核心数调整。
  • pullMessageThreadPoolNums:拉取消息线程池数量。
  • transientStorePoolEnable:是否启用临时存储池,提高写入性能。
  • transientStorePoolSize:临时存储池大小。

六、验证部署

1. 检查容器状态

  1. docker ps

确认rmqnamesrvrmqbroker容器均处于运行状态。

2. 使用RocketMQ命令行工具验证

进入Broker容器:

  1. docker exec -it rmqbroker bash

然后,使用mqadmin命令检查Topic、Broker等信息:

  1. sh /opt/rocketmq-5.x.x/bin/mqadmin topicList -n 主机IP:9876 # 替换主机IP为实际IP

七、总结与建议

通过Docker和Docker-Compose部署RocketMQ5.x单机版,可以大大简化部署流程,提高环境一致性。在配置过程中,需特别注意NameServer地址、Broker名称与ID、存储路径等关键参数的设置。对于生产环境,还需考虑数据备份、监控告警、性能调优等方面。

建议

  • 定期备份消息数据,防止数据丢失。
  • 监控Broker和NameServer的CPU、内存、磁盘使用情况,及时调整资源分配。
  • 根据业务需求,合理设置消息删除策略和磁盘使用率阈值。
  • 对于高并发场景,考虑调整线程池数量和启用临时存储池等性能优化措施。

通过以上步骤和配置,你可以在单机环境下快速部署并运行RocketMQ5.x,为微服务架构、大数据处理等场景提供高效、可靠的消息中间件服务。