双主双从高性能RocketMQ服务搭建

DBC 1.6K 0

我们先看图,更好的理解

  • 主从架构:Broker角色,Master提供读写,Slave只支持读
    • Consumer不用配置,当Master不可用或者繁忙的时候,Consumer会自动切换到Slave节点进行能读取
  • 架构讲解,4台机器
    • 两个部署Broker-Master 和 NameServer
    • 两个部署Broker-Slave 和 NameServer

双主双从高性能RocketMQ服务搭建插图
双主双从高性能RocketMQ服务搭建插图2

  • 4台机器, 2台部署NameServer, 4台都部署Broker, 双主双从 同步复制,异步刷盘
  • jdk、maven、rocketmq上传和安装
  • 机器列表
  • server1 ssh root@192.168.159.133   部署nameServer  Broker-a
    server2 ssh root@192.168.159.130   部署nameServer	 Broker-a-s
    server3 ssh root@192.168.159.131				  Broker-b
    server4 ssh root@192.168.159.132				  Broker-b-s
  • 1、修改RocketMQ(启动内存配置, 4个机器都要修改, 其中runbroker.sh修改4个,runserver.sh修改2个)
  • vim runserver.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    
    vim runbroker.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"
    
    
    启动两个机器的 nameserver
    nohup sh bin/mqnamesrv &
    
    
    全路径 
    /usr/local/software/rocketmq/distribution/target/apache-rocketmq

    编辑并启动rocketmq命令

    • broker-a主节点
      nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties &
      
      namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
      brokerClusterName=XdclassCluster
      brokerName=broker-a
      brokerId=0
      deleteWhen=04
      fileReservedTime=48
      brokerRole=SYNC_MASTER
      flushDiskType=ASYNC_FLUSH
      
      defaultTopicQueueNums=4
      #是否允许自动创建Topic,建议线下开启,线上关闭
      autoCreateTopicEnable=true
      #是否允许自动创建订阅组,建议线下开启,线上关闭
      autoCreateSubscriptionGroup=false
      
      #存储路径,根据需求进行配置绝对路径,默认是家目录下面
      #storePathRootDir= 
      #storePathCommitLog
    • broker-a从节点
      nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties &
      
      namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
      brokerClusterName=XdclassCluster
      brokerName=broker-a
      brokerId=1
      deleteWhen=04
      fileReservedTime=48
      brokerRole=SLAVE
      flushDiskType=ASYNC_FLUSH
      
      defaultTopicQueueNums=4
      #是否允许自动创建Topic,建议线下开启,线上关闭
      autoCreateTopicEnable=true
      #是否允许自动创建订阅组,建议线下开启,线上关闭
      autoCreateSubscriptionGroup=false
      
      #存储路径,根据需求进行配置绝对路径,默认是家目录下面
      #storePathRootDir= 
      #storePathCommitLog
    • broker-b主节点
      nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties &
      
      namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
      brokerClusterName=XdclassCluster
      brokerName=broker-b
      brokerId=0
      deleteWhen=04
      fileReservedTime=48
      brokerRole=SYNC_MASTER
      flushDiskType=ASYNC_FLUSH
      
      defaultTopicQueueNums=4
      #是否允许自动创建Topic,建议线下开启,线上关闭
      autoCreateTopicEnable=true
      #是否允许自动创建订阅组,建议线下开启,线上关闭
      autoCreateSubscriptionGroup=false
      
      #存储路径,根据需求进行配置绝对路径,默认是家目录下面
      #storePathRootDir= 
      #storePathCommitLog
    • broker-b从节点
      nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties &
      
      namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
      brokerClusterName=XdclassCluster
      brokerName=broker-b
      brokerId=1
      deleteWhen=04
      fileReservedTime=48
      brokerRole=SLAVE
      flushDiskType=ASYNC_FLUSH
      
      defaultTopicQueueNums=4
      #是否允许自动创建Topic,建议线下开启,线上关闭
      autoCreateTopicEnable=true
      #是否允许自动创建订阅组,建议线下开启,线上关闭
      autoCreateSubscriptionGroup=false
      
      #存储路径,根据需求进行配置绝对路径,默认是家目录下面
      #storePathRootDir= 
      #storePathCommitLog
    • 参考命令
    • CentOS 6.5关闭防火墙
      servcie iptables stop 
      
      centos7关闭防火墙 
      systemctl stop firewalld
      systemctl stop firewalld.service

最后解析一下

温馨提示

这里他是怎么进行区分主从的呢,看下面的图就好了他通过brokerClusterName=XdclassCluster形成集群,通过brokerName=broker-b进行区分,brokerId=1进行区分主从,主要这个位置要知道就没问题了!

双主双从高性能RocketMQ服务搭建插图4

双主双从集群搭建和控制台配置讲解

简介:讲解双主双从搭建和控制台配置

注意:如果连接不了broker,日志提示连接的端口少2位,记得检查防火墙是否关闭

  • 使用管控台 安装在server1机器里面
  • 修改事项
    pom.xml  里面的rocketmq版本号
    
    路径 /usr/local/software/rocketmq-externals-master/rocketmq-console/src/main/resources
    
    application.properties里面的nameserver
    
    增加 rocketmq.config.namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
    
    mvn install -Dmaven.test.skip=true
    
    java -jar rocketmq-console-ng-1.0.0.jar

    生产环境RocketMQ的使用流程和推荐配置

    • Topic创建线上禁止开启自动创建
    • 一般是有专门的后台进行队列的CRUD,应用上线需要申请队列名称
    • 生产环境推荐配置
      • NameServer配置多个不同机器多个节点
      • 多Master, 每个Master带有Slave
      • 主从设置为SYNC_MASTER同步双写
      • Producer用同步方式投递Broker
      • 刷盘策略为SYNC_FLUSH(性能好点则可以为ASYNC_FLUSH)

         

    • 性能分析思路
      • CPU: top
      • 网卡: sar -n DEV 2 10、netstat -t、 iperf3
      • 磁盘: iostat -xdm 1
      • JVM: jstack、jinfo、MAT

发表评论 取消回复
表情 图片 链接 代码

分享