zoukankan      html  css  js  c++  java
  • RocketMQ多Master模式

      了解了RocketMQ的基本知识后,我们先来学习一下RocketMQ的多Master模式。

      多Master模式:集群中不存在Slave节点,集群中所有节点都是Master节点。优点是配置简单,单个Master宕机或重启对应用没有影响。但是如果某个节点的Master宕机之后,该节点上未被消费的消息在节点恢复之前无法订阅和消费,实时性受到影响。


      集群搭建过程:

    • 服务器划分

         

    • 修改本地hosts信息

          命令:vi /etc/hosts

          增加如下信息:

           

           修改完之后,测试服务器之间是否可以ping通。


    • 上传RocketMQ文件并解压

           两台服务器分别上传RocketMQ文件,本次使用的是alibaba-rocketmq-3.2.6.tar.gz 文件。然后解压,命令:

              tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local

           在/usr/local路径下创建软连接:

              ln -s alibaba-rocketmq rocketmq


    • 创建存储路径

          在两台服务器上分别创建如下目录:

            mkdir /usr/local/rocketmq/store
            mkdir /usr/local/rocketmq/store/commitlog
            mkdir /usr/local/rocketmq/store/consumequeue
            mkdir /usr/local/rocketmq/store/index

          其中,store表示RocketMQ文件的存储路径,commitlog是指消息存放的物理文件,consumequeue是消息的队列,相当于字典的目录用来指定消息在消息的真正的物理文件commitLog上的位置。index指的是索引,能够快速定位到具体消息。

     

    • RocketMQ配置文件

         分别修改两台服务器上的Broker配置文件:

           vi /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
           vi /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

          修改内容如下:       

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样。与自己修改的文件名一样
    brokerName=broker-a|broker-b
    #0 表示 Master,>0 表示 Slave
    brokerId=0
    #nameServer地址,分号分割
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=10911
    #删除文件时间点,默认凌晨 4点
    deleteWhen=04
    #文件保留时间,默认 48 小时
    fileReservedTime=120
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    #存储路径
    storePathRootDir=/usr/local/rocketmq/store
    #commitLog 存储路径
    storePathCommitLog=/usr/local/rocketmq/store/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq/store/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq/store/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/rocketmq/store/abort
    #限制的消息大小
    maxMessageSize=65536
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    #Broker 的角色
    #- ASYNC_MASTER 异步复制Master
    #- SYNC_MASTER 同步双写Master
    #- SLAVE
    brokerRole=ASYNC_MASTER
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    #sendMessageThreadPoolNums=128
    #拉消息线程池数量
    #pullMessageThreadPoolNums=128

        

    • 修改日志文件

          在两台服务器上分别执行如下命令:

            mkdir -p /usr/local/rocketmq/logs
            cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml


    • 修改启动脚本参数

          分别修改两台服务器在启动broker和server时的内存分配参数:

            vi /usr/local/rocketmq/bin/runbroker.sh

            vi /usr/local/rocketmq/bin/runserver.sh

          

        

    • 启动NameServer

         分别操作两台服务器,执行如下命令:

           cd /usr/local/rocketmq/bin
           nohup sh mqnamesrv &

          查看启动日志:

            tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

           使用jps命令查看是否启动


    • 启动BrokerServer

         分别操作两台服务器,执行如下命令:

           cd /usr/local/rocketmq/bin
           nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &

          此处需要注意,134服务器执行broker-a.properties,而136服务器是broker-b.properties。

          查看日志:

            tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log

          此时,使用jps命令查看,可以看到nameServer和brokerServer已经启动,如下:

             

        也可以使用RocketMQ的控制台进行查看,需要在tomcat中部署 rocketmq-console.war文件,并修改配置文件,如下:

        cd  /usr/local/apache-tomcat-7.0.73/webapps/rocketmq-console/WEB-INF/classes

        vi config.properties 

        修改如下:

          

        启动tomcat,访问如下地址:

         http://192.168.91.136:8080/rocketmq-console/

        效果如下:

          

       至此,多Master模式的集群搭建完毕。

  • 相关阅读:
    测试杂谈
    使用jQuery完成表单验证
    session&&cookie
    jQuery中关于toggle的使用
    Regist&Login
    关于线程的面试题
    成语验证码所需素材
    验证码测试-demo
    java动态生成验证码图片
    servlet-向页面输出中文出现乱码处理方式
  • 原文地址:https://www.cnblogs.com/victor-grace/p/7253612.html
Copyright © 2011-2022 走看看