Docker 系列之 docker-compose 部署 RocketMQ 集群(3master-noslave)

⚡⚡⚡docker-compose 部署 3master-noslave 架构

一、机器规划

准备三台机器,在每台机器上,计划安装一个 namesrvbroker,其中一台机器再安装一个 dashboard

机器IPMQ节点节点端口
192.168.9.60rocketmq-n/rocketmq-b/rocketmq-dashboard9876/10909、10911、10912/8080
192.168.9.61rocketmq-n/rocketmq-b9876/10909、10911、10912
192.168.9.62rocketmq-n/rocketmq-b9876/10909、10911、10912

二、创建 nfs 目录

nfs 服务的机器上创建挂载目录,可以通过脚本去创建

#!/bin/bash

# 创建挂载目录
mkdir /data/nfs/rocketmq/0/store -p
mkdir /data/nfs/rocketmq/0/config -p
mkdir /data/nfs/rocketmq/1/store -p
mkdir /data/nfs/rocketmq/1/config -p
mkdir /data/nfs/rocketmq/2/store -p
mkdir /data/nfs/rocketmq/2/config -p
chmod 777 /data/nfs -R

cat >>/etc/exports <<EOF
/data/nfs/rocketmq/0/store *(rw,sync,no_root_squash)
/data/nfs/rocketmq/0/config *(rw,sync,no_root_squash)
/data/nfs/rocketmq/1/store *(rw,sync,no_root_squash)
/data/nfs/rocketmq/1/config *(rw,sync,no_root_squash)
/data/nfs/rocketmq/2/store *(rw,sync,no_root_squash)
/data/nfs/rocketmq/2/config *(rw,sync,no_root_squash)
EOF

exportfs -r

三、创建 broker.conf 文件

在 nfs 服务的 /data/nfs/rocketmq/<*>/config 下创建 broker.conf 文件,内容如下:
其中 brokerName 对应三个需要名称不同,可以命名为broker-a/broker-b/broker-c

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 多网卡配置,不配置默认为内网,让mq只能内网访问,填写本机器的ip
brokerIP1 = 192.168.9.60

四、编辑 docker-compose.yml 文件

我这是使用的 nfs 存储的数据,配置里面的 nfs_host_ip 需要替换为你自己的 nfs server 的ip
可参考博客:https://blog.51cto.com/u_16175450/7974774 进行配置

在三台机器上分别编写 docker-compose.yml 文件,三台机器不同的地方是 vloumes 挂载的目录,修改挂载目录即可

version: '3.5'
services:
  rocketmq-nsr:
    image: apache/rocketmq:5.1.1
    container_name: rocketmq-nsr
    restart: always
    ports:
      - "9876:9876"
    environment:
      - ROCKETMQ_HOME=/home/rocketmq/rocketmq-5.1.1
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/rocketmq/namesrv/logs:/home/rocketmq/logs
    networks:
      - rocketmq-net
    deploy:
      resources:
        limits:
          cpus: '4'
          memory: 16G
        reservations:
          cpus: '2'
          memory: 8G
    command: sh mqnamesrv

  rocketmq-broker:
    image: apache/rocketmq:5.1.1
    container_name: rocketmq-broker
    restart: always
    ports:
      - "10909:10909"
      - "10911:10911"
      - "10912:10912"
    environment:
      - ROCKETMQ_HOME=/home/rocketmq/rocketmq-5.1.1
      - NAMESRV_ADDR=192.168.9.60:9876;192.168.9.61:9876;192.168.9.62:9876
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/rocketmq/broker/logs:/home/rocketmq/logs/rocketmqlogs
      - volume-rocketmq-store:/home/rocketmq/store
      - volume-rocketmq-config:/opt/rocketmq/conf
    depends_on:
      - rocketmq-nsr
    networks:
      - rocketmq-net
    deploy:
      resources:
        limits:
          cpus: '4'
          memory: 16G
        reservations:
          cpus: '2'
          memory: 8G
    command: ["sh", "mqbroker", "-n", "192.168.9.60:9876;192.168.9.61:9876;192.168.9.62:9876", "-c", "/opt/rocketmq/conf/broker.conf", "--enable-proxy"]

networks:
  rocketmq-net:
    driver: bridge

volumes:
  volume-rocketmq-store:
    driver_opts:
      type: nfs
      o: addr=nfs_host_ip,nolock,soft,rw
      device: ":/data/nfs/rocketmq/0/store"
  volume-rocketmq-config:
    driver_opts:
      type: nfs
      o: addr=nfs_host_ip,nolock,soft,rw
      device: ":/data/nfs/redis/0/config"

分别在三台机器上执行启动命令

# 启动命令
docker-compose -f docker-compose.yml up -d

namesrv 启动成功如图
在这里插入图片描述
broker 启动成功如图
在这里插入图片描述

五、编辑控制面板的 docker-compose-dashboard.yml 文件

选择一台机器部署dashboard,dashboard的配置内容如下

version: '3.5'
services:
  rocket-dashboard:
    image: apacherocketmq/rocketmq-dashboard:1.0.0
    container_name: rocket-dashboard
    ports:
      - "8080:8080"
    environment:
      LANG: C.UTF-8
      JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
      JAVA_OPTS: "-Drocketmq.namesrv.addr=192.168.9.60:9876;192.168.9.61:9876;192.168.9.62:9876"
    volumes:
      - /etc/localtime:/etc/localtime
    networks:
      - rocketmq-net
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 1G
        reservations:
          cpus: '0.25'
          memory: 512M

networks:
  rocketmq-net:
    driver: bridge

启动 dashboard

# 启动 dashboard
docker-compose -f docker-compose-dashboard.yml up -d

如果看到控制台中显示了三个说明成功了
在这里插入图片描述

参考资料

https://rocketmq.apache.org/zh/docs/quickStart/03quickstartWithDockercompose/
https://ost.51cto.com/posts/24841

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值