• RocketMQ系列:docker-compose搭建rocketmq的集群模式


    接上文:docker搭建rocketmq单机环境

    本文介绍如何使用docker-compose搭建rocketmq的集群环境

    1. 安装docker-compose

    1.1 下载docker-compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    1.2 增加可执行权限

    sudo chmod +x /usr/local/bin/docker-compose

    1.3 生成软链接

    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

    1.4 验证docker-compose是否安装成功

    docker-compose version

    2. 启动rocketmq

    2.1 docker-compose.yml

    docker-compose.yml在rocketmq-docker/stages/4.7.1/templates/docker-compose目录下面

    version: '2'
    services:
      #Service for nameserver
      namesrv:
        image: apacherocketmq/rocketmq:4.7.1
        container_name: rmqnamesrv
        ports:
          - 9876:9876
        volumes:
          - ./data/namesrv/logs:/home/rocketmq/logs
        command: sh mqnamesrv
    
      #Service for broker
      broker:
        image: apacherocketmq/rocketmq:4.7.1
        container_name: rmqbroker
        links:
          - namesrv
        ports:
          - 10909:10909
          - 10911:10911
          - 10912:10912
        environment:
          - NAMESRV_ADDR=namesrv:9876
        volumes:
          - ./data/broker/logs:/home/rocketmq/logs
          - ./data/broker/store:/home/rocketmq/store
          - ./data/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf
        command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf
     #Service for another broker -- broker1
      broker1:
        image: apacherocketmq/rocketmq:4.7.1
        container_name: rmqbroker-b
        links:
          - namesrv
        ports:
          - 10929:10909
          - 10931:10911
          - 10932:10912
        environment:
          - NAMESRV_ADDR=namesrv:9876
        volumes:
          - ./data1/broker/logs:/home/rocketmq/logs
          - ./data1/broker/store:/home/rocketmq/store
          - ./data1/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf
        command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf

    可以看到docker-compose启动了两个broker分片作为一个broker集群,连接到一个nameserver,我们看下broker-a和broker-b的配置

    broker1:/data1/broker/conf/broker.conf
    brokerClusterName = DefaultCluster
    brokerName = broker-b
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    broker:/data/broker/conf/broker.conf
    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH

    2.2 docker-compose启动rocketmq:4.7.1

    #进入对应目录
    cd rocketmq-docker/stages/4.7.1/template
    
    #执行docker-compose脚本(如果build的rocketmq是centos,则直接执行成功)
    sh play-docker-compose.sh

    注意:如果你build的是rocketmq的alpine版本,这里可能会失败。

    2.2 解决方法

    tag一个新的rocketmq的镜像,执行如下:

    docker tag apacherocketmq/rocketmq:4.7.1-alpine apacherocketmq/rocketmq:4.7.1

    2.3 重新执行

    sh play-docker-compose.sh

    2.4 docker-compose相关命令

    2.4.1 查看docker-compose启动的容器

    cd rocketmq-docker/stages/4.7.1/templates/docker-compose
    docker-compose ps

    2.4.2 停止docker-compose启动的容器

    cd rocketmq-docker/stages/4.7.1/templates/docker-compose
    docker-compose stop

     

    2.4.3 启动docker-compose定义的容器

    cd rocketmq-docker/stages/4.7.1/templates/docker-compose
    docker-compose up

    2.4.4 后台启动docker-compose定义的容器

    cd rocketmq-docker/stages/4.7.1/templates/docker-compose
    #-d表示后台启动 docker-compose up -d

    2.4.5 强制删除docker-compose启动的容器

    cd rocketmq-docker/stages/4.7.1/templates/docker-compose
    docker-compose rm -fs

    3. 启动控制台

    启动

    docker run --net docker-compose_default -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8090:8080 --name rmqconsole -t styletang/rocketmq-console-ng

    查看

    浏览器打开:http://{你机器的ip}:8090
    如图可以看到,docker-compose默认启动了两个broker的集群(master模式)

      

    博主:测试生财(一个不为996而996的测开码农)

    座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。

    内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。

    csdn:https://blog.csdn.net/ccgshigao

    博客园:https://www.cnblogs.com/qa-freeroad/

    51cto:https://blog.51cto.com/14900374

    微信公众号:测试生财(定期分享独家内容和资源)

  • 相关阅读:
    C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)
    ubuntu 18.04安装ftp服务器
    ubuntu 18.04设置开机自动挂载移动硬盘
    使用apache commons net进行ftp传输
    Navicat连接MySQL 8出现2059
    Eclipse配置tomcat
    MySQL从.ibd文件中恢复数据
    MySQL建表时添加备注以及查看某一张表的备注信息
    在node.js中使用Set
    Java测试当前应用所占用的内存示例
  • 原文地址:https://www.cnblogs.com/qa-freeroad/p/13693306.html
Copyright © 2020-2023  润新知