RocketMQ 基础教程-安装篇-集群搭建实践 (多主多从)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

码哥源码部分 

打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】

1、集群架构

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

序号主机名IP功能broker角色
1rocketmqOS1192.168.216.128NameServer+BrokerMaster1+Slave2
2rocketmqOS2192.168.216.129NameServer+BrokerMaster2+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,可以看到下面效果。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值