zoukankan      html  css  js  c++  java
  • RocketMQ系列:搭建3m-noslave模式的rocketmq集群

    利用6台机器搭建一个3分片的broker集群,一共有3个broker实例(3m),采用同步刷屏模式

    1.引言

    本文主要介绍如何在三台机器上搭建一个3m(无slave节点的)rocketmq的集群。

    2.环境准备

    机器名

    机器IP

    机器配置

    备注

    nameserver1

    192.168.11.1

    4C4G

     

    nameserver2

    192.168.11.2

    4C4G

     

    nameserver3

    192.168.11.3

    4C4G

     

    broker1

    192.168.11.4 8C16G

    broker2

    192.168.11.5 8C16G  

    broker3

    192.168.11.6 8C16G  

    2.1 配置hostname

    这里设置是为了方便管理机器节点,也可以跳过此处。

    #nameserver1上执行:
    hostnamectl set-hostname nameserver1
    #nameserver2上执行:
    hostnamectl set-hostname nameserver2
    #nameserver3上执行:
    hostnamectl set-hostname nameserver3
    #broker1上执行:
    hostnamectl set-hostname broker1
    #broker2上执行:
    hostnamectl set-hostname broker2
    #broker3上执行:
    hostnamectl set-hostname broker3

    2.2 设置hosts

    在broker1,broker2,broker3分别执行:

    cat >>/etc/hosts<<EOF
    192.168.11.1 nameserver1
    192.168.11.2 nameserver2
    192.168.11.3 nameserver3
    EOF

    3. 具体步骤

    3.1 下载rocketmq的编译好的二进制包(4.7.1版本)

    wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip

    3.2 解压缩到到/usr/local/mq目录,并创建软链接

    #解压到/usr/local
    unzip
    rocketmq-all-4.7.1-bin-release.zip -d /usr/local/ cd /usr/local/ #创立软链接 ln -s rocketmq-all-4.7.1-bin-release rocketmq

    3.3 安装java

    #Ubuntu:
    sudo apt install -y  openjdk-8-jdk*
    #Centos:
    sudo yum install -y java-1.8.0-openjdk*

    4.初始化环境

    4.1 设置环境变量

    #如果是Ubuntu
    echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/'>> ~/.bashrc
    #如果是Centos
    echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/'>> ~/.bashrc
    
    #无论是Ubuntu还是Centos都执行如下:
    #设置CLASSPATH
    echo 'export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib'>> ~/.bashrc
    #设置ROCKETMQ_HOME
    echo 'export ROCKETMQ_HOME=/usr/local/rocketmq'>> ~/.bashrc
    #添加到PATH
    echo 'export PATH=$PATH:$ROCKETMQ_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin'>> ~/.bashrc

    4.2 加载环境变量

    source ~/.bashrc

    4.3  创建目录

    #/data目录的空间至少为1T+
    mkdir -pv {/data/logs,/data/rocketmq/store/commitlog}

    4.4 修改rocketmq的主目录

    sed -i 's#${user.home}#/data#g' $ROCKETMQ_HOME/conf/*.xml

    4.5 修改Linux系统参数提高性能

    cd $ROCKETMQ_HOME/bin
    sudo ./os.sh

    5 启动

    5.1 启动nameserver

    1) 生成配置

    分别在nameserver1,nameserver2,nameserver3上执行:

    #进入Rockmq的bin目录
    cd $ROCKETMQ_HOME/bin
    #生产nameserver的配置
    cat >> namesrv.properties << EOF
    rocketmqHome=/usr/local/rocketmq
    kvConfigPath=/root/namesrv/kvConfig.json
    productEnvName=center
    clusterTest=false
    orderMessageEnable=false
    listenPort=9876
    serverWorkerThreads=8
    serverCallbackExecutorThreads=0
    serverSelectorThreads=3
    serverOnewaySemaphoreValue=256
    serverAsyncSemaphoreValue=64
    serverChannelMaxIdleTimeSeconds=120
    serverSocketSndBufSize=65535
    serverSocketRcvBufSize=65535
    serverPooledByteBufAllocatorEnable=true
    useEpollNativeSelector=true
    EOF

    2) 启动nameserver

    cd $ROCKETMQ_HOME/bin
    nohup ./mqnamesrv -c namesrv.properties &

    5.2 启动broker

    下面分别配置三台broker

    5.2.1 配置Rocket集群

    1) 配置broker1的环境变量

    cat >> ~/.bashrc << EOF
    Role=broker1
    brokerId=0
    GroupName=broker-a
    EOF

     执行:source ~/.bashrc

    2)配置broker1的启动配置

    cd $ROCKETMQ_HOME
    cat >conf/dledger/qmq-${Role}.conf<<EOF
    brokerClusterName=QMQ
    brokerId=${brokerId}
    brokerRole=SYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    brokerName=${GroupName}
    namesrvAddr=nameserver1:9876;nameserver2:9876;nameserver3:9876
    storePathRootDir=/data/rocketmq/${Role}
    storePathCommitLog=/data/rocketmq/${Role}/commitlog
    enableDLegerCommitLog=false
    #凌晨4点触发一次删除
    deleteWhen = 04
    diskMaxUsedSpaceRatio=50
    #只保留最近1天的消息
    fileReservedTime = 24
    sendMessageThreadPoolNums=8
    defaultTopicQueueNums=16
    maxTransferCountOnMessageInMemory=1000
    waitTimeMillsInSendQueue=1000
    transientStorePoolEnable=false
    warmMapedFileEnable=false
    transferMsgByHeap=true
    maxTransferCountOnMessageInMemory=2000
    maxTransferBytesOnMessageInMemory=2000*1024
    EOF

    3)启动broker1

    cd $ROCKETMQ_HOME/bin
    nohup sh mqbroker -c $ROCKETMQ_HOME/conf/dledger/qmq-${Role}.conf &

    1)配置broker2环境变量


    cat >> ~/.bashrc << EOF

    Role=broker2

    brokerId=0

    GroupName=broker-b EOF

     执行:source ~/.bashrc

    2)配置broker2的启动配置

    cd $ROCKETMQ_HOME
    cat >conf/dledger/qmq-${Role}.conf<<EOF
    brokerClusterName=QMQ
    brokerId=${brokerId}
    brokerRole=SYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    brokerName=${GroupName}
    namesrvAddr=nameserver1:9876;nameserver2:9876;nameserver3:9876
    storePathRootDir=/data/rocketmq/${Role}
    storePathCommitLog=/data/rocketmq/${Role}/commitlog
    enableDLegerCommitLog=false
    #凌晨4点触发一次删除
    deleteWhen = 04
    diskMaxUsedSpaceRatio=50
    #只保留最近1天的消息
    fileReservedTime = 24
    sendMessageThreadPoolNums=8
    defaultTopicQueueNums=16
    maxTransferCountOnMessageInMemory=1000
    waitTimeMillsInSendQueue=1000
    transientStorePoolEnable=false
    warmMapedFileEnable=false
    transferMsgByHeap=true
    maxTransferCountOnMessageInMemory=2000
    maxTransferBytesOnMessageInMemory=2000*1024
    EOF

    3)启动broker2

    cd $ROCKETMQ_HOME/bin
    nohup sh mqbroker -c $ROCKETMQ_HOME/conf/dledger/qmq-${Role}.conf &

    1)配置broker3环境变量

    cat >> ~/.bashrc << EOF Role=broker3 brokerId=0 GroupName=broker-c EOF

     执行:source ~/.bashrc

    2)配置broker3的启动配置

    cd $ROCKETMQ_HOME
    cat >conf/dledger/qmq-${Role}.conf<<EOF
    brokerClusterName=QMQ
    brokerId=${brokerId}
    brokerRole=SYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    brokerName=${GroupName}
    namesrvAddr=nameserver1:9876;nameserver2:9876;nameserver3:9876
    storePathRootDir=/data/rocketmq/${Role}
    storePathCommitLog=/data/rocketmq/${Role}/commitlog
    enableDLegerCommitLog=false
    #凌晨4点触发一次删除
    deleteWhen = 04
    diskMaxUsedSpaceRatio=50
    #只保留最近1天的消息
    fileReservedTime = 24
    sendMessageThreadPoolNums=8
    defaultTopicQueueNums=16
    maxTransferCountOnMessageInMemory=1000
    waitTimeMillsInSendQueue=1000
    transientStorePoolEnable=false
    warmMapedFileEnable=false
    transferMsgByHeap=true
    maxTransferCountOnMessageInMemory=2000
    maxTransferBytesOnMessageInMemory=2000*1024
    EOF

    3)启动broker3

    cd $ROCKETMQ_HOME/bin
    nohup sh mqbroker -c $ROCKETMQ_HOME/conf/dledger/qmq-${Role}.conf &

    5.3 其它命令

    Broker其它命令

    1. 关闭broker

    sh mqshutdown broker
    sh mqshutdown namesrv

    2. 查看broker是否启动

    #查看进程
    jps -m
    
    #查看端口
    netstat -tupln|grep -E '309|409'

    5.4 查看集群信息

    通过控制台查询

     

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

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

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

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

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

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

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

  • 相关阅读:
    Eclipse配置Lifery SDK步骤与错误解决。
    Java Math floor round ceil 函数
    jpa多表leftjoin 查询,自定义返回结果
    saml2协议sp-initial登录过程
    httpclientutil
    解决samlexception-inresponsetofield-of-the-response-doesnt-correspond-to-sent-mess
    spring boot 整合saml2
    使用redis防止重复提交
    mysql转化时间戳毫秒到秒
    javamail 附件以及正文加图片
  • 原文地址:https://www.cnblogs.com/qa-freeroad/p/13737600.html
Copyright © 2011-2022 走看看