rocketmq集群

本文详细介绍了如何在两台服务器上部署一个高可用的RocketMQ集群,包括启动NameServer、配置并启动Master和Slave角色的Broker服务,以及通过RocketMQ-console监控集群状态。主要涉及配置参数解释和启动脚本修改。
摘要由CSDN通过智能技术生成

理论先行

首先在这两台机器上分别启动NameServer(nohup sh bin/mqnamesrv &),这样我们就得到了一个无单点的NameServer服务,服务地址是“192.168.100. 131:9876; 192.168.100.132:9876”。然后启动Broker,每台机器上都要分别启动一个Master角色的Broker和一个Slave角色的Broker,并互为主备。可以基于RocketMQ自带的示例配置文件写自己的配置文件(示例配置文件在conf/2m-2s-sync目录下)。

  • 192.168.100.131机器上Master Broker的配置文件:
    在这里插入图片描述
  • 192.168.100.132机器上Master Broker的配置文件:
    在这里插入图片描述
  • 192.168.100.131机器上Slave Broker的配置文件:
    在这里插入图片描述
  • 192.168.100.132机器上Slave Broker的配置文件:
    在这里插入图片描述
    然后分别使用如下命令启动四个Broker:
    在这里插入图片描述
    这样一个高可用的RocketMQ集群就搭建好了,还可以在一台机器上启动rocketmq-console,比如在192.168.100.131上启动RocketMQ-console,然后在浏览器中输入地址192.168.100.131:8080,这样就可以可视化地查看集群状态了。

配置参数介绍

本节将逐个介绍Broker配置文件中用到的参数含义:

  • namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876
    NamerServer的地址,可以是多个。
  • brokerClusterName=DefaultCluster
    Cluster的地址,如果集群机器数比较多,可以分成多个Cluster,每个Cluster供一个业务群使用。
  • brokerName=broker-a
    Broker的名称,Master和Slave通过使用相同的Broker名称来表明相互关系,以说明某个Slave是哪个Master的Slave。
  • brokerId=0
    一个Master Borker可以有多个Slave,0表示Master,大于0表示不同Slave的ID。
  • fileReservedTime=48
    在磁盘上保存消息的时长,单位是小时,自动删除超时的消息。
  • deleteWhen=04
    与fileReservedTime参数呼应,表明在几点做消息删除动作,默认值04表示凌晨4点
  • brokerRole=SYNC_MASTE
    RbrokerRole有3种:SYNC_MASTER、ASYNC_MASTER、SLAVE。关键词SYNC和ASYNC表示Master和Slave之间同步消息的机制,SYNC的意思是当Slave和Master消息同步完成后,再返回发送成功的状态。
  • flushDiskType=ASYNC_FLUSH
    flushDiskType表示刷盘策略,分为SYNC_FLUSH和ASYNC_FLUSH两种,分别代表同步刷盘和异步刷盘。同步刷盘情况下,消息真正写入磁盘后再返回成功状态;异步刷盘情况下,消息写入page_cache后就返回成功状态。
  • listenPort=10911
    Broker监听的端口号,如果一台机器上启动了多个Broker,则要设置不同的端口号,避免冲突。
  • storePathRootDir=/home/rocketmq/store-a
    存储消息以及一些配置信息的根目录。

这些配置参数,在Broker启动的时候生效,如果启动后有更改,要重启Broker。现在使用云服务或多网卡的机器比较普遍,Broker自动探测获得的ip地址可能不符合要求,通过brokerIP1=47.98.41.234这样的配置参数,可以设置Broker机器对外暴露的ip地址。


实践操作

服务名称 服务器地址 服务类型 端口 配置文件
nameserver-1 172.23.26.31 注册中心1 9876
nameserver-2 172.23.26.89 注册中心2 9876
broker-a-0 172.23.26.31 broker服务a的master 10911 broker-a.properties
broker-a-1 172.23.26.89 broker服务a的slave 10921 broker-a-s.properties
broker-b-0 172.23.26.89 broker服务b的master 10911 broker-b.properties
broker-b-1 172.23.26.31 broker服务b的slave 10921 broker-b-s.properties

环境准备

jdk
maven(3.5以上)

在两台服务器上分别创建/home/software目录,maven和rocketmq文件包都放在此目录下
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz 下载3.5.4版本maven
tar -zxvf apache-maven-3.5.4-bin.tar.gz 解压压缩包

向环境变量中添加maven
vim /etc/profile
文件末尾追加 export M2_HOME=/home/software/apache-maven-3.5.4
在PATH后面追加 :$M2_HOME/bin
保存并推出配置文件
source /etc/profile 刷新环境变量缓存
执行 mvn -version 判断是否成功


本次配置开始

在rocketmq的conf目录下,rocketmq默认给出了三种建议配置模式,分别为3个目录
2m-2s-async(主从异步),----本次采用这种
2m-2s-sync(主从同步)
2m-noslave(仅master)
在这里插入图片描述 在这里插入图片描述

修改2m-2s-async下的配置文件

autoCreateTopicEnable=true,开启自动创建topic,(网上文章建议线下开启测试,线上关闭)

同一个机器上启动多个broker时,需使用不同的broker配置文件来启动实例,
服务器节点1启动一个a-m和b-s,使用broker-a.properties和broker-b-s.properties
listenPort默认为10911,当一个机器上启动多个broker示例时,需区分开端口
broker启动时,默认内存设置比较大,改成适合机器的
当一个节点启动多个broker实例时,存储路径如果显示的设置,则需要指定不同的storePath路径

在172.23.26.31和172.23.26.89服务器上创建一下两个mq日志store目录

/home/rocketmq/store-a
/home/rocketmq/store-b

在172.23.26.31和172.23.26.89的rocketmq应用根目录下创建logs启动日志目录
在rocketmq应用的conf目录下执行以下命令

sed -i “s/${user.home}//home/rocketmq/g” logback_broker.xml
sed -i “s/${user.home}//home/rocketmq/g” logback_namesrv.xml
sed -i “s/${user.home}//home/rocketmq/g” logback_tools.xml
修改rocketmq的默认日志目录,方便下面配置自定义的日志目录

在172.23.26.31服务器上修改broker-a.properties

brokerClusterName=RocketmqCluster
brokerName=broker-a
brokerId=0
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=10911
#nameserver地址,分号分割
namesrvAddr=172.23.26.31:9876;172.23.26.89:9876
#Broker 机器对外暴露的ip 地址
brokerIP1=172.23.26.31
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议测试开启,生产关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议测试开启,生产关闭
autoCreateSubscriptionGroup=true
#文件保存根路径
storePathRootDir=/home/rocketmq/store-a
storePathCommitLog=/home/rocketmq/store-a
#消费队列存储路径存储路径
storePathConsumerQueue=/home/rocketmq/store-a
#消息索引存储路径
storePathIndex=/home/rocketmq/store-a
#checkpoint 文件存储路径
storeCheckpoint=/home/rocketmq/store-a
#abort 文件存储路径
abortFile=/home/rocketmq/store-a
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

在172.23.26.31服务器上修改broker-b-s.properties

brokerClusterName=RocketmqCluster
brokerName=broker-b
brokerId=1
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=10921
#nameserver地址,分号分割
namesrvAddr=172.23.26.31:9876;172.23.26.89:9876
#Broker 机器对外暴露的ip 地址
brokerIP1=172.23.26.31
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议测试开启,生产关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议测试开启,生产关闭
autoCreateSubscriptionGroup=true
#文件保存根路径
storePathRootDir=/home/rocketmq/store-b
storePathCommitLog=/home/rocketmq/store-b
#消费队列存储路径存储路径
storePathConsumerQueue=/home/rocketmq/store-b
#消息索引存储路径
storePathIndex=/home/rocketmq/store-b
#checkpoint 文件存储路径
storeCheckpoint=/home/rocketmq/store-b
#abort 文件存储路径
abortFile=/home/rocketmq/store-b
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值