本文RocketMQ系列第四篇,主要介绍RocketMQ集群及如何部署自动容灾切换的 RocketMQ-on-DLedger Group。
RocketMQ集群搭建
ROcketMQ集群搭建有以下几种方案:
- 「单Master模式」
- 「多Master模式」
- 「多Master多Slave模式-异步复制」
- 「多Master多Slave模式-同步双写」
其中,
「单Master模式」风险较大,「一旦Broker重启或者宕机时,会导致整个服务不可用」。不建议线上环境使用,可以用于本地测试。
「多Master模式」,一个集群无Slave,全是Master,单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,「消息实时性会受到影响」。
「多Master-Slave异步复制模式」,即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时「Master宕机后,消费者仍然可以从Slave消费」,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样。Master宕机会丢失少量的信息。
「多Master-Slave同步双写模式」,数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高,「性能比异步复制模式略低」(大约低10%左右),发送单个消息的RT会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。
我们采用多Master多Slave的异步复制模式来搭建RocketMQ集群。
双主双从集群搭建
1. 在一台虚拟机上安装RocketMQ
在RocketMQ入坑系列第一篇中,已经有安装方法了,很简单,这里不再赘述。
【RocketMQ系列】RocketMQ中的角色详解及实操基本使用
2. 设置配置文件
先在一台虚拟机上操作,设置好配置文件,然后在根据该虚拟机克隆出几台主机出来。
「进入配置文件目录」:
cd /usr/local/rocketmq/conf && ll
可以看到
「搭建两主两从异步复制broker集群,进入2m-2s-async
目录」:
修改「第一组broker的主节点」配置文件broker-a.properties
:
brokerClusterName=RocketMQCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.2.17