
Docker安装RocketMQ 5.x及以上版本详细指南
Apache RocketMQ 5.x 版本引入了全新的 Proxy 架构,对云原生环境提供了更好的支持。在使用 Docker 部署时,我们需要注意 5.x 版本与早期版本在启动方式和端口暴露上的区别。本文将以 Local 模式(Broker 与 Proxy 在同一进程)为例,详细讲解如何使用 Docker Compose 快速搭建 RocketMQ 5.x 集群环境。
一、环境准备与目录创建
为了方便管理配置文件和持久化数据,我们需要在宿主机上创建相应的目录结构。登录服务器,执行以下命令:
mkdir -p /opt/rocketmq/conf mkdir -p /opt/rocketmq/logs/namesrv mkdir -p /opt/rocketmq/logs/broker mkdir -p /opt/rocketmq/store/broker
为避免 Docker 容器内进程因权限不足无法写入日志或存储文件,提前授权:
chmod -R 777 /opt/rocketmq
二、编写 Broker 配置文件
进入配置目录并创建 broker.conf 文件,这是 RocketMQ Broker 运行的核心配置:
cd /opt/rocketmq/conf vim broker.conf
在文件中写入以下基础配置(注意:5.x 版本中 Broker 默认开启了对 Proxy 的支持):
brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH # NameServer 地址,容器内部网络使用容器名访问 namesrvAddr = rmqnamesrv:9876 # 重点配置:Broker对外服务的监听地址 # 必须配置为宿主机的IP地址,否则客户端无法连接 brokerIP1 = 你的宿主机IP地址 # 5.x 重点:开启 Local 模式 Proxy,使 Broker 和 Proxy 在同一个进程中运行 enableProxyMode = true
三、编写 Docker Compose 脚本
为了简化启动流程,推荐使用 Docker Compose 来编排 NameServer 和 Broker 服务。在 /opt/rocketmq 目录下创建 docker-compose.yml 文件:
cd /opt/rocketmq vim docker-compose.yml
填入以下内容(这里以 RocketMQ 5.1.4 版本为例):
version: '3.8' services: rmqnamesrv: image: apache/rocketmq:5.1.4 container_name: rmqnamesrv ports: - 9876:9876 environment: - JAVA_OPT_EXT=-server -Xms256m -Xmx256m command: sh mqnamesrv volumes: - /opt/rocketmq/logs/namesrv:/home/rocketmq/logs networks: - rocketmq_net rmqbroker: image: apache/rocketmq:5.1.4 container_name: rmqbroker ports: - 10911:10911 - 10912:10912 - 8081:8081 environment: - JAVA_OPT_EXT=-server -Xms512m -Xmx512m # 5.x 启动命令使用 mqbroker,并指定 --enable-proxy 开启代理模式 command: sh mqbroker -c /home/rocketmq/conf/broker.conf --enable-proxy volumes: - /opt/rocketmq/logs/broker:/home/rocketmq/logs - /opt/rocketmq/store/broker:/home/rocketmq/store - /opt/rocketmq/conf/broker.conf:/home/rocketmq/conf/broker.conf depends_on: - rmqnamesrv networks: - rocketmq_net networks: rocketmq_net: driver: bridge
端口说明(5.x 重要变更):
9876:NameServer 默认端口。
10911:Broker 对外提供服务的端口。
10912:Broker HA 高可用端口。
8081:5.x 版本新增的 Proxy 端口,gRPC 协议客户端和部分新特性需要通过此端口通信。
四、启动服务与管理
在 /opt/rocketmq 目录下执行以下命令启动服务:
docker-compose up -d
查看容器运行状态:
docker-compose ps
若需查看启动日志排查问题,可使用:
docker logs -f rmqnamesrv docker logs -f rmqbroker
五、部署可视化控制台
为了更直观地管理集群,建议部署 RocketMQ Dashboard。执行以下命令启动控制台:
docker run -d --name rmqdashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=你的宿主机IP:9876" -p 8080:8080 apacherocketmq/rocketmq-dashboard:latest
六、验证安装结果
控制台启动成功后,在浏览器中访问可视化界面(假设服务器IP为192.168.1.100):
访问地址:http://www.ipipp.com:8080
进入控制台后,点击“集群”菜单,如果能看到集群列表中存在 DefaultCluster 且 Broker 的版本号显示为 5.x,同时节点状态为运行中,则说明 RocketMQ 5.x 版本已通过 Docker 成功部署并正常运行。