admin

docker-compose 部署rocketmq

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

1. 创建项目目录结构

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

2. 创建 broker 配置文件

创建 config/broker.conf 文件:

3. 编写 docker-compose.yml
version: '3.8'
services:
  namesrv:
    image: apache/rocketmq:5.2.0
    container_name: rocketmq-namesrv
    ports:
      - 9876:9876
    volumes:
      - ./data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv
    environment:
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn256m
    networks:
      - rocketmq_net

  broker:
    image: apache/rocketmq:5.2.0
    container_name: rocketmq-broker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    volumes:
      - /opt/tuxun-env/rocketmq/data/namesrv/logs:/home/rocketmq/logs
      - /opt/tuxun-env/rocketmq/data/broker/store:/home/rocketmq/store
      - /opt/tuxun-env/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:
      - rocketmq_net

  dashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rocketmq-dashboard
    ports:
      - 8080:8080
    environment:
      - JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876
    depends_on:
      - namesrv
    networks:
      - rocketmq_net

networks:
  rocketmq_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


版权声明

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