admin

docker-compose 部署rocketmq

admin docker技术 2025-05-20 10504浏览 0

1. 创建项目目录结构

mkdir -p /opt/rocketmq 
cd /opt/rocketmq
mkdir -p {data/namesrv/logs,data/broker/logs,data/broker/store,config}

权限(推荐)sudo chown -R 3000:3000 ./data  # RocketMQ 容器默认用户 UID 3000

2. 创建 broker 配置文件

创建 config/broker.conf 文件:

3. 编写 docker-compose.yml

services:

  namesrv:

    image: apache/rocketmq:5.2.0

    container_name: rocketmq-namesrv

    ports:

      - 9876:9876

    volumes:

      - ./rocketmq/data/namesrv/logs:/home/rocketmq/logs

    command: sh mqnamesrv

    environment:

      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn256m

    networks:

      - tuxun-net


  broker:

    image: apache/rocketmq:5.2.0

    container_name: rocketmq-broker

    ports:

      - 10909:10909

      - 10911:10911

      - 10912:10912

    volumes:

      - ./rocketmq/data/namesrv/logs:/home/rocketmq/logs

      - ./rocketmq/data/broker/store:/home/rocketmq/store

      - ./rocketmq/config/broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf

    command: sh mqbroker -c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf

    environment:

      - JAVA_OPT_EXT=-server -Xms1g -Xmx1g -Xmn512m

    depends_on:

      - namesrv

    networks:

      - tuxun-net


  dashboard:

    image: apacherocketmq/rocketmq-dashboard:latest

    container_name: rocketmq-dashboard

    ports:

      - 8080:8080

    environment:

      - JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876

      - ROCKETMQ_DASHBOARD_ROCKETMQ_USERNAME=admin

      - ROCKETMQ_DASHBOARD_ROCKETMQ_PASSWORD=mhsj123

    depends_on:

      - namesrv

    networks:

      - tuxun-net


networks:

  tuxun-net:

    driver: bridge



4. 重要配置说明

  1. 网络配置

    • 使用自定义网络 rocketmq_net 保证容器间通过服务名称通信

    • Broker 配置中使用 namesrv:9876 访问 NameServer

  2. 数据持久化

    • NameServer 日志: ./data/namesrv/logs

    • Broker 日志和存储: ./data/broker/logs./data/broker/store

  3. Broker 配置要点

    • 必须正确配置 brokerIP1(生产环境建议使用宿主机IP)

    • 存储路径映射到容器内 /home/rocketmq/store

5. 启动服务

docker-compose up -d

6. 验证安装

  1. 检查容器状态

docker-compose ps
  1. 访问控制台

http://宿主机IP:8080
  1. 发送测试消息

# 进入Broker容器

docker exec -it rocketmq-broker bash


# 发送测试消息

sh tools.sh org.apache.rocketmq.example.quickstart.Producer

常见问题解决
  1. Broker 无法连接 NameServer

    • 检查网络配置是否在同一网络

    • 验证 namesrvAddr 配置是否正确

    • 查看 Broker 日志:docker logs rocketmq-broker

  2. 控制台无法显示数据

    • 检查环境变量 JAVA_OPTS 中的 namesrv 地址

    • 确保防火墙开放了 9876 和 8080 端口

  3. 消息存储问题

    • 确认宿主机存储目录有写入权限

    • 检查 broker.conf 中的存储路径配置

生产环境建议

  1. 集群部署:

    • 部署多个 NameServer 和 Broker 组成集群

    • 配置主从复制(ASYNC_MASTER/SLAVE)

  2. 资源调整:

    • 根据需求调整 JVM 内存参数

    • 配置适当的磁盘空间(建议 SSD)

  3. 安全配置:

    • 启用 ACL 访问控制

    • 配置 TLS 加密通信

  4. 监控告警:

    • 集成 Prometheus + Grafana 监控

    • 配置 RocketMQ 的告警规则

完整项目结构示例:

rocketmq/
├── docker-compose.yml
├── config/
│   └── broker.conf
├── data/
│   ├── namesrv/
│   │   └── logs/
│   └── broker/
│       ├── logs/
│       └── store/
└── .env


版权声明

本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。