docker-compose安装RocketMQ集群

Posted 拥有1024的蜡笔小新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-compose安装RocketMQ集群相关的知识,希望对你有一定的参考价值。

docker-compose安装RocketMQ集群

知识索引

  • RocketMQ集群说明
  • 基于docker-compose安装namesrv、rocketmq-console、broker
  • rocketmq-console演示

1 集群说明

我们安装RocketMQ集群,这里为了演示效果,就安装2Master结构,为了不受单机影响,先停掉单机版,再安装集群版。

停止单机版命令:

docker stop rmqadmin rmqbroker rmqnamesrv

安装集群版,需要为每个broker创建存储配置文件、日志、数据的目录,我们创建目录如下:

mkdir -p \\
/usr/local/server/rocketmq_cluster/data_namesrv/namesrv/logs \\
/usr/local/server/rocketmq_cluster/data_namesrv/namesrv/store \\
/usr/local/server/rocketmq_cluster/data1/broker/logs \\
/usr/local/server/rocketmq_cluster/data1/broker/store \\
/usr/local/server/rocketmq_cluster/conf1 \\
/usr/local/server/rocketmq_cluster/data2/broker/logs \\
/usr/local/server/rocketmq_cluster/data2/broker/store \\
/usr/local/server/rocketmq_cluster/conf2

2 集群配置

集群结构为2Master,需要为每个节点配置一个broker.conf配置文件。

/usr/local/server/rocketmq_cluster/conf1创建broker.conf配置文件:

# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = ItmentuCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH

/usr/local/server/rocketmq_cluster/conf2创建broker.conf配置文件:

# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = ItmentuCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-b
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH

3 RocketMQ集群搭建

集群安装我们采用docker-compose方式安装,所以首先要确认你的系统已经安装了docker-compose

关于docker-compose的安装,大家可以参考http://edu.secby.cn/node/view/1472115371169964034#a6124af3b6bcd5072900214f860651c0,这里不做演示了。

使用docker-compose就可以避免一个一个组件单独安装,可以一次性把namesrvbrokerrocketmq-console一次完成安装,只不过需要写docker-compose脚本。

创建rocketmq.yml,配置文件如下:

version: '3.8'
services:
  #Service for nameserver
  namesrv:
    image: rocketmqinc/rocketmq:4.4.0
    container_name: cluster_rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - /usr/local/server/rocketmq_cluster/data_namesrv/namesrv/logs:/root/logs
      - /usr/local/server/rocketmq/data_namesrv/namesrv/store:/root/store
    command: sh mqnamesrv

  #Service for another broker -- broker1
  broker1:
    image: rocketmqinc/rocketmq:4.4.0
    container_name: cluster_rmqbroker1
    links:
      - namesrv
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
    volumes:
      - /usr/local/server/rocketmq_cluster/data1/broker/logs:/root/logs
      - /usr/local/server/rocketmq_cluster/data1/broker/store:/root/store
      - /usr/local/server/rocketmq_cluster/conf1/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
  #Service for another broker -- broker2
  broker2:
    image: rocketmqinc/rocketmq:4.4.0
    container_name: cluster_rmqbroker2
    links:
      - namesrv
    ports:
      - 10929:10909
      - 10931:10911
      - 10932:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
    volumes:
      - /usr/local/server/rocketmq_cluster/data2/broker/logs:/root/logs
      - /usr/local/server/rocketmq_cluster/data2/broker/store:/root/store
      - /usr/local/server/rocketmq_cluster/conf2/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

  rmqconsole:
    image: pangliang/rocketmq-console-ng
    container_name: rmqconsole
    ports:
      - 7001:7001
    environment:
      JAVA_OPTS: "-Drocketmq.namesrv.addr=192.168.211.130:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Dserver.port=7001"

然后执行docker-compose -f rocketmq.yml up -d就可以安装RocketMQ集群了,安装效果如下:

4 控制台安装

rocketmq-console安装其实在上面我们已经完成了,安装配置如下:

因为在安装broker集群已经安装了rocketmq-console,所有我们这里不需要再安装了,直接访问http://192.168.211.130:7001即可,效果如下:

我们可以看到已经实现了2台服务集群。

以上是关于docker-compose安装RocketMQ集群的主要内容,如果未能解决你的问题,请参考以下文章

Docker环境下使用docker-compose一键式搭建RocketMQ(4.5.0版本)集群及其管理工具(外网版)

Docker环境下使用docker-compose一键式搭建RocketMQ(4.5.0版本)集群及其管理工具

基于ARM64的CPU架构下的docker-compose安装

docker-compose 配置 mongodb 副本集/复制集

(十九)ATP应用测试平台——springboot集成RocketMQ案例实战

RocketMQ问题集