RocketMq之集群部署

本文详细介绍RocketMQ的Broker间数据同步策略,包括SyncBroker与AsyncBroker的区别,推荐的集群配置如2m-2s-sync及2m-2s-async,并提供了具体的部署步骤与Broker配置参数解释。

1、简介

Broker间数据同步/复制策略

Broker Replication(Broker间数据同步/复制):集群环境下需要部署多个Broker,Broker分为两种角色:一种是master,即 可以写也可以读,其brokerId=0,只能有一个;另外一种是slave,只允许读,其brokerId为非0。一个master与多个slave通过指定相同的brokerName被归为一个broker set(broker集)。通常生产环境中,我们至少需要2个broker set。Broker Replication只的就是slave获取或者是复制master的数据(消息在master和slave之间的同步是根据raft协议来进行的)。

  • Sync Broker:生产者发送的每一条消息都至少同步复制到一个slave后才返回告诉生产者成功,即“同步双写”。
  • Async Broker:生产者发送的每一条消息只要写入master就返回告诉生产者成功。然后再“异步复制”到slave。
  • 推荐的几种Broker集群方式:
    • 2m-2s-sync:两主两从同步双写(两个master,两个slave,数据同步双写到master和slave)
    • 2m-2s-async:两主两从异步复制(两个master,两个slave,master数据通过异步复制到slave)
    • 2m-noslave:两主(只有两个master,没有slave)

① 上述“2”只是说作为一个集群的最低配置数量,可以根据实际情况扩展。

② 所有的刷盘(Dish Flush)操作全部默认为:ASYNC_FLUSH(异步刷盘)。

2、Broker集群方式比较

3、部署

这里使用我觉得最好的方式:多Master多Slave模式,异步复制(2m-2s-async)来进行部署。

① 环境准备

准备四台机器(192.168.124.1、192.168.124.2、192.168.124.3、192.168.124.4),每台部署一个broker

② 开放端口

开放四台机子的相关端口

Nameserver的9876端口,Broker的10911端口,VIP通道10909端口(rocketMq默认有开启,我们也可以手动关闭),控制台的12581端口

③ 启动Name server

这里我们分别在192.168.124.1、192.168.124.2两台机器上启动Name server。

sh mqnamesrv &

④ 启动Broker

1、在192.168.124.1这台机器上,启动a的Master

sh mqbroker -n '192.168.124.1:9876;192.168.124.2:9876' -c ../conf/2m-2s-async/broker-a.properties &

2、在192.168.124.2这台机器上,启动b的Master

sh mqbroker -n '192.168.124.1:9876;192.168.124.2:9876' -c ../conf/2m-2s-async/broker-b.properties &

3、在192.168.124.3这台机器上,启动a的Slave

sh mqbroker -n '192.168.124.1:9876;192.168.124.2:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &

4、在192.168.124.4这台机器上,启动b的Slave

sh mqbroker -n '192.168.124.1:9876;192.168.124.2:9876' -c ../conf/2m-2s-async/broker-b-s.properties &

Broker配置详解

参数名默认值说明
listenPort10911Broker对外服务的监听端口
namesrvAddrNullNameServer地址
brokerIP1本机IP本机ip地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况下可以人工配置
brokerName 本机主机名
brokerClusterNameDefaultClusterBroker所属那个集群
brokerId0BrokerId,必须是大于等于0的整数,0表示Master, 大于0表示Slave, 一个Master可以挂多个Slave,Master和Slave通过BrokerName来配对
storePathCommitLog$HOME/store/commitlogcommitLog存储路径
storePathConsumerQueue$HOME/store/consumequeue消费队列存储路径
storePathIndex$HOME/store/index消息索引存储队列
deleteWhen4删除时间点,默认凌晨4点
fileReserverdTime48文件保留时间,默认48小时
maxTransferBytesOnMessageInMemory262144单次pull消息(内存)传输的最大字节数
maxTransferCountOnMessageInMemory32单次pull消息(内存)传输的最大条数
maxTransferBytesOnMessageInDisk65535单次Pull消息(磁盘)传输的最大字节数
maxTransferCountOnMessageInDisk8单次pull消息(磁盘)传输的最大条数
messageIndexEnableTRUE是否开启消息索引功能
messageIndexSafeFALSE是否提供安全的消息索引机制,索引保证不丢
brokerRoleASYNC_MASTERBroker的角色:ASYNC_MASTER异步复制Master; SYNC_MASTER同步双写MASTER; SLAVE
flushDiskTypeASYNC_FLUSH刷盘方式: ASYNC_FLUSH异步刷盘;SYNC_FLUSH同步刷盘clientFileForciblyEnable

部署Mq控制台

我们将控制台部署在192.168.124.1这台机子上面

java -jar rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=192.168.124.1:9876;192.168.124.2 &

PS 运维指令

查看集群情况

./mqadmin clusterList -n 127.0.0.1:9876

查看broker状态

./mqadmin brokerStatus -n 127.0.0.1:9876 -b 192.168.124.1:10911

查看topic列表

./mqadmin topicList -n 127.0.0.1:9876

查看topic状态

./mqadmin topicStatus -n 127.0.0.1:9876 -t PushTopic

查看topic路由

./mqadmin topicRoute  -n 127.0.0.1:9876 -t PushTopic

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猎户星座。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值