热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dockercompose搭建多主多从RocketMQ集群

1.创建目录mkdir-phomerocketmqnamesvr1data&&mkdir-phomerocketmqnamesvr1log&&mkdir-phomerocketm

1.创建目录

mkdir -p /home/rocketmq/namesvr1/data &&
 
mkdir -p /home/rocketmq/namesvr1/log &&
 
mkdir -p /home/rocketmq/namesvr2/data &&
 
mkdir -p /home/rocketmq/namesvr2/log &&
 
mkdir -p /home/rocketmq/broker-m-1/data &&
 
mkdir -p /home/rocketmq/broker-m-1/log &&
 
mkdir -p /home/rocketmq/broker-m-1/conf &&
 
mkdir -p /home/rocketmq/broker-m-2/data &&
 
mkdir -p /home/rocketmq/broker-m-2/log &&
 
mkdir -p /home/rocketmq/broker-m-2/conf &&
 
mkdir -p /home/rocketmq/broker-s-1/data &&
 
mkdir -p /home/rocketmq/broker-s-1/log &&
 
mkdir -p /home/rocketmq/broker-s-1/conf &&
 
mkdir -p /home/rocketmq/broker-s-2/data &&
 
mkdir -p /home/rocketmq/broker-s-2/log &&
 
mkdir -p /home/rocketmq/broker-s-2/conf
目录结构:

2.进入每个broker的conf目录下创建配置文件

broker-m-1.conf

#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker1
#brokerId master用0 slave用其他
brokerId=0
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SYNC_MASTER
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.88.3
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=10911
#namesvr
namesrvAddr=192.168.88.3:9876;192.168.88.3:9877
#是否能够自动创建topic
autoCreateTopicEnable=true
broker-s-1.conf

#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker1
#brokerId master用0 slave用其他
brokerId=1
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SLAVE
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.88.3
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=11911
#namesrv
namesrvAddr=192.168.88.3:9876;192.168.88.3:9877
#是否能够自动创建topic
autoCreateTopicEnable=true
broker-m-2.conf

#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker2
#brokerId master用0 slave用其他
brokerId=0
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SYNC_MASTER
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.88.3
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=12911
#namesrv
namesrvAddr=192.168.88.3:9876;192.168.88.3:9877
#是否能够自动创建topic
autoCreateTopicEnable=true
broker-s-2.conf

#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker2
#brokerId master用0 slave用其他
brokerId=1
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SLAVE
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.88.3
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=13911
#namesrv
namesrvAddr=192.168.88.3:9876;192.168.88.3:9877
#是否能够自动创建topic
autoCreateTopicEnable=true
 

3.创建docker-compose.yml

version: '3.5'
services:
  namesrv1:
    image: rocketmqinc/rocketmq:4.3.0
    container_name: namesrv1
    ports:
      - 9876:9876
    volumes:
      - /home/rocketmq/namesrv1/log:/opt/logs
      - /home/rocketmq/namesrv1/data:/opt/store
    command: sh mqnamesrv
    networks:
      rocketmq:
        aliases:
          - namesrv1
  namesrv2:
    image: rocketmqinc/rocketmq:4.3.0
    container_name: namesrv2
    ports:
      - 9877:9876
    volumes:
      - /home/rocketmq/namesrv2/log:/opt/logs
      - /home/rocketmq/namesrv2/data:/opt/store
    command: sh mqnamesrv
    networks:
      rocketmq:
        aliases:
          - namesrv2
  broker-m-1:
    image: rocketmqinc/rocketmq:4.3.0
    container_name: broker-m-1
    links:
      - namesrv1:namesrv1
      - namesrv2:namesrv2
    ports:
      - 10911:10911
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "namesrv1:9876"
      JAVA_OPTS: "-Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    volumes:
      - /home/rocketmq/broker-m-1/log:/opt/logs
      - /home/rocketmq/broker-m-1/data:/opt/store
      - /home/rocketmq/broker-m-1/conf/broker-m-1.conf:/opt/rocketmq-4.3.0/conf/broker-m-1.conf
    command: sh mqbroker -c /opt/rocketmq-4.3.0/conf/broker-m-1.conf autoCreateTopicEnable=true &
    networks:
      rocketmq:
        aliases:
          - broker-m-1
  broker-s-1:
    image: rocketmqinc/rocketmq:4.3.0
    container_name: broker-s-1
    links:
      - namesrv1:namesrv1
      - namesrv2:namesrv2
    ports:
      - 11911:11911
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "namesrv1:9876"
      JAVA_OPTS: "-Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    volumes:
      - /home/rocketmq/broker-s-1/log:/opt/logs
      - /home/rocketmq/broker-s-1/data:/opt/store
      - /home/rocketmq/broker-s-1/conf/broker-s-1.conf:/opt/rocketmq-4.3.0/conf/broker-s-1.conf
    command: sh mqbroker -c /opt/rocketmq-4.3.0/conf/broker-s-1.conf autoCreateTopicEnable=true &
    networks:
      rocketmq:
        aliases:
          - broker-s-1
  broker-m-2:
    image: rocketmqinc/rocketmq:4.3.0
    container_name: broker-m-2
    links:
      - namesrv1:namesrv1
      - namesrv2:namesrv1
    ports:
      - 12911:12911
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "namesrv1:9876"
      JAVA_OPTS: "-Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    volumes:
      - /home/rocketmq/broker-m-2/log:/opt/logs
      - /home/rocketmq/broker-m-2/data:/opt/store
      - /home/rocketmq/broker-m-2/conf/broker-m-2.conf:/opt/rocketmq-4.3.0/conf/broker-m-2.conf
    command: sh mqbroker -c /opt/rocketmq-4.3.0/conf/broker-m-2.conf autoCreateTopicEnable=true &
    networks:
      rocketmq:
        aliases:
          - broker-m-2
  broker-s-2:
    image: rocketmqinc/rocketmq:4.3.0
    container_name: broker-s-2
    links:
      - namesrv1:namesrv1
      - namesrv2:namesrv2
    ports:
      - 13911:13911
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "namesrv1:9876"
      JAVA_OPTS: "-Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    volumes:
      - /home/rocketmq/broker-s-2/log:/opt/logs
      - /home/rocketmq/broker-s-2/data:/opt/store
      - /home/rocketmq/broker-s-2/conf/broker-s-2.conf:/opt/rocketmq-4.3.0/conf/broker-s-2.conf
    command: sh mqbroker -c /opt/rocketmq-4.3.0/conf/broker-s-2.conf autoCreateTopicEnable=true &
    networks:
      rocketmq:
        aliases:
          - broker-s-2
  rocketmq-console:
    image: styletang/rocketmq-console-ng
    container_name: rocketmq-console
    ports:
      - 8090:8080
    environment:
      JAVA_OPTS: -Drocketmq.namesrv.addr=namesrv1:9876;namesrv2:9877 -Dcom.rocketmq.sendMessageWithVIPChannel=false
    networks:
      rocketmq:
        aliases:
          - rocketmq-console
networks:
  rocketmq:
    name: rocketmq
    driver: bridge
4.执行命令

docker-compose -f docker-compose.yml up -d


推荐阅读
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 使用Nginx反向代理实现多域名端口映射
    本文介绍如何通过配置本地hosts文件和Nginx反向代理,实现多个虚拟域名的端口映射,使用户可以通过标准HTTP端口80访问不同后端服务。 ... [详细]
author-avatar
手机用户2502938015
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有