RocketMq之集群部署

版权声明: https://blog.csdn.net/qq_24313635/article/details/82898220

1、简介

  • Disk Flush(磁盘刷新/同步操作):就是将内存的数据落地,存储在磁盘中。RocketMQ提供了以下两种模式:
    • SYNC_FLUSH(同步刷盘):生产者发送的每一条消息都在保存到磁盘成功后才返回告诉生产者成功。这种方式不会存在消息丢失的问题,但是有很大的磁盘IO开销,性能有一定影响。
    • ASYNC_FLUSH(异步刷盘):生产者发送的每一条消息并不是立即保存到磁盘,而是暂时缓存起来,然后就返回生产者成功。随后再异步的将缓存数据保存到磁盘,有两种情况:1是定期将缓存中更新的数据进行刷盘,2是当缓存中更新的数据条数达到某一设定值后进行刷盘。这种方式会存在消息丢失(在还未来得及同步到磁盘的时候宕机),但是性能很好。默认是这种模式。
  • Broker Replication(Broker间数据同步/复制):集群环境下需要部署多个Broker,Broker分为两种角色:一种是master,即可以写也可以读,其brokerId=0,只能有一个;另外一种是slave,只允许读,其brokerId为非0。一个master与多个slave通过指定相同的brokerName被归为一个broker set(broker集)。通常生产环境中,我们至少需要2个broker set。Broker Replication只的就是slave获取或者是复制master的数据。
    • 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配置详解

参数名 默认值 说明
listenPort 10911 Broker对外服务的监听端口
namesrvAddr Null NameServer地址
brokerIP1 本机IP 本机ip地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况下可以人工配置
brokerName   本机主机名
brokerClusterName DefaultCluster Broker所属那个集群
brokerId 0 BrokerId,必须是大于等于0的整数,0表示Master, 大于0表示Slave, 一个Master可以挂多个Slave,Master和Slave通过BrokerName来配对
storePathCommitLog $HOME/store/commitlog commitLog存储路径
storePathConsumerQueue $HOME/store/consumequeue 消费队列存储路径
storePathIndex $HOME/store/index 消息索引存储队列
deleteWhen 4 删除时间点,默认凌晨4点
fileReserverdTime 48 文件保留时间,默认48小时
maxTransferBytesOnMessageInMemory 262144 单次pull消息(内存)传输的最大字节数
maxTransferCountOnMessageInMemory 32 单次pull消息(内存)传输的最大条数
maxTransferBytesOnMessageInDisk 65535 单次Pull消息(磁盘)传输的最大字节数
maxTransferCountOnMessageInDisk 8 单次pull消息(磁盘)传输的最大条数
messageIndexEnable TRUE 是否开启消息索引功能
messageIndexSafe FALSE 是否提供安全的消息索引机制,索引保证不丢
brokerRole ASYNC_MASTER Broker的角色:ASYNC_MASTER异步复制Master; SYNC_MASTER同步双写MASTER; SLAVE
flushDiskType ASYNC_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

猜你喜欢

转载自blog.csdn.net/qq_24313635/article/details/82898220