2024-01-16  阅读(3)
原文作者:Java 充电社 原文地址: http://www.itsoku.com/course/21/357

1、集群架构

这里要搭建一个双主双从异步复制的Broker集群。为了方便,这里使用了两台主机来完成集群的搭建。这两台主机的功能与broker角色分配如下表。

序号 主机名 IP 功能 broker角色
1 rocketmqOS1 192.168.216.128 NameServer+Broker Master1+Slave2
2 rocketmqOS2 192.168.216.129 NameServer+Broker Master2+Slave1

2、克隆生成rocketmqOS1

克隆rocketmqOS主机,并修改配置。指定主机名为rocketmqOS1。

3、修改rocketmqOS1配置文件

3.1、配置文件位置

要修改的配置文件在rocketMQ解压目录的conf/2m-2s-async目录中。

    [root@test001 conf]# cd /usr/mysoft/rocketmq-all-4.8.0-bin-release/conf/2m-2s-async/
    [root@test001 2m-2s-async]# ll
    总用量 16
    -rw-r--r--. 1 root root 929 10月 23 2020 broker-a.properties
    -rw-r--r--. 1 root root 922 10月 23 2020 broker-a-s.properties
    -rw-r--r--. 1 root root 929 10月 23 2020 broker-b.properties
    -rw-r--r--. 1 root root 922 10月 23 2020 broker-b-s.properties

3.2、修改broker-a.properties

将该配置文件内容修改为如下:

    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=ASYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    namesrvAddr=192.168.216.128:9876;192.168.216.129:9876

3.3、修改broker-b-s.properties

将该配置文件内容修改为如下:

    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    namesrvAddr=192.168.216.128:9876;192.168.216.129:9876
    10911。由于当前主机同时充当着master1与slave2,而前面的master1使用的是默认端口。这
    里需要将这两个端口加以区分,以区分出master1与slave2
    listenPort=11911
    slave2,master1使用的是默认路径,这里就需要再指定一个不同路径
    storePathRootDir=~/store-s
    storePathCommitLog=~/store-s/commitlog
    storePathConsumeQueue=~/store-s/consumequeue
    storePathIndex=~/store-s/index
    storeCheckpoint=~/store-s/checkpoint
    abortFile=~/store-s/abort

3.4、其它配置

除了以上配置外,这些配置文件中还可以设置其它属性。

    #指定整个broker集群的名称,或者说是RocketMQ集群的名称
    brokerClusterName=rocket-MS
    #指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群
    brokerName=broker-a
    #0 表示 Master,>0 表示 Slave
    brokerId=0
    #nameServer地址,分号分割
    namesrvAddr=nameserver1:9876;nameserver2:9876
    #默认为新建Topic所创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建Topic,建议生产环境中关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议生产环境中关闭
    autoCreateSubscriptionGroup=true
    #Broker对外提供服务的端口,即Broker与producer与consumer通信的端口
    listenPort=10911
    #HA高可用监听端口,即Master与Slave间通信的端口,默认值为listenPort+1
    haListenPort=10912
    #指定删除消息存储过期文件的时间为凌晨4点
    deleteWhen=04
    #指定未发生更新的消息存储文件的保留时长为48小时,48小时后过期,将会被删除
    fileReservedTime=48
    #指定commitLog目录中每个文件的大小,默认1G
    mapedFileSizeCommitLog=1073741824
    #指定ConsumeQueue的每个Topic的每个Queue文件中可以存放的消息数量,默认30w条
    mapedFileSizeConsumeQueue=300000
    #在清除过期文件时,如果该文件被其他线程所占用(引用数大于0,比如读取消息),此时会阻止
    此次删除任务,同时在第一次试图删除该文件时记录当前时间戳。该属性则表示从第一次拒绝删除
    后开始计时,该文件最多可以保留的时长。在此时间内若引用数仍不为0,则删除仍会被拒绝。不过
    时间到后,文件将被强制删除
    destroyMapedFileIntervalForcibly=120000
    #指定commitlog、consumequeue所在磁盘分区的最大使用率,超过该值,则需立即清除过期文
    件 di
    skMaxUsedSpaceRatio=88
    #指定store目录的路径,默认在当前用户主目录中
    storePathRootDir=/usr/local/rocketmq-all-4.5.0/store
    #commitLog目录路径
    storePathCommitLog=/usr/local/rocketmq-all-4.5.0/store/commitlog
    #consumeueue目录路径
    storePathConsumeQueue=/usr/local/rocketmq-all-4.5.0/store/consumequeue
    #index目录路径
    storePathIndex=/usr/local/rocketmq-all-4.5.0/store/index
    #checkpoint文件路径
    storeCheckpoint=/usr/local/rocketmq-all-4.5.0/store/checkpoint
    #abort文件路径
    abortFile=/usr/local/rocketmq-all-4.5.0/store/abort
    #指定消息的最大大小
    maxMessageSize=65536
    #Broker的角色
    brokerRole=SYNC_MASTER
    #刷盘策略
    flushDiskType=SYNC_FLUSH
    #发消息线程池数量
    sendMessageThreadPoolNums=128
    #拉消息线程池数量
    pullMessageThreadPoolNums=128
    #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡
    时IP地址可能读取错误
    brokerIP1=192.168.3.105

4、克隆生成rocketmqOS2

克隆rocketmqOS1主机,并修改配置。指定主机名为rocketmqOS2。

5、修改rocketmqOS2配置文件

对于rocketmqOS2主机,同样需要修改rocketMQ解压目录的conf目录的子目录2m-2s-async中的两个配置文件。

5.1、修改broker-b.properties

将该配置文件内容修改为如下:

    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=ASYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    namesrvAddr=192.168.216.128:9876;192.168.216.129:9876

5.2、修改broker-a-s.properties

将该配置文件内容修改为如下:

    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    namesrvAddr=192.168.216.128:9876;192.168.216.129:9876
    listenPort=11911
    storePathRootDir=~/store-s
    storePathCommitLog=~/store-s/commitlog
    storePathConsumeQueue=~/store-s/consumequeue
    storePathIndex=~/store-s/index
    storeCheckpoint=~/store-s/checkpoint
    abortFile=~/store-s/abort

6、启动服务器

6.1、启动NameServer集群

分别启动rocketmqOS1与rocketmqOS2两个主机中的NameServer。启动命令完全相同。

    cd /usr/mysoft/rocketmq-all-4.8.0-bin-release
    nohup sh bin/mqnamesrv &
    tail -f ~/logs/rocketmqlogs/namesrv.log

6.2、启动两个Master

分别启动rocketmqOS1与rocketmqOS2两个主机中的broker master。注意,它们指定所要加载的配置文件是不同的。

rocketmqOS1中执行:

    cd /usr/mysoft/rocketmq-all-4.8.0-bin-release
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &
    tail -f ~/logs/rocketmqlogs/broker.log

rocketmqOS2中执行:

    cd /usr/mysoft/rocketmq-all-4.8.0-bin-release
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties &
    tail -f ~/logs/rocketmqlogs/broker.log

6.3、启动两个Slave

分别启动rocketmqOS1与rocketmqOS2两个主机中的broker slave。注意,它们指定所要加载的配置文件是不同的。

rocketmqOS1中执行:

    cd /usr/mysoft/rocketmq-all-4.8.0-bin-release
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties &
    tail -f ~/logs/rocketmqlogs/broker.log

rocketmqOS2中执行:

    cd /usr/mysoft/rocketmq-all-4.8.0-bin-release
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &
    tail -f ~/logs/rocketmqlogs/broker.log

7、dashboard中查看集群信息

如果安装了rocket dashboard,可以看到下面效果。

202401162112258031.png


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文