前言
在rocketmq之前的模式中,只有master/slave一种部署方式,一组 broker 中有一个 Master ,有零到多个 Slave,Slave 通过同步复制或异步复制的方式去同步 Master 数据。但这样的部署模式,有一定的缺陷。比如故障转移方面,如果主节点挂了,还需要人为手动进行重启或者切换,无法自动将一个从节点转换为主节点。所以这里就引入了 RocketMQ-on-DLedger Group。
RocketMQ-on-DLedger Group 是指一组相同名称的 Broker,至少需要 3 个节点,通过 Raft 自动选举出一个 Leader,其余节点 作为 Follower,并在 Leader 和 Follower 之间复制数据以保证高可用。
RocketMQ-on-DLedger Group 能自动容灾切换,并保证数据一致。
RocketMQ-on-DLedger Group 是可以水平扩展的,也即可以部署任意多个 RocketMQ-on-DLedger Group 同时对外提供服务。
具体原理看这:
https://blog.csdn.net/trntaken/article/details/105694384
1. 新集群部署 1.1 编写配置每个 RocketMQ-on-DLedger Group 至少准备三台机器(本文假设为 3)。
编写 3 个配置文件,建议参考 conf/dledger 目录下的配置文件样例。
关键配置介绍:
mq1的配置 conf/dledger/broker-n0.conf
brokerClusterName = RaftCluster brokerName=RaftNode00 listenPort=30911 namesrvAddr=10.16.100.60:9876;10.16.100.62:9876;10.16.100.63:9876 storePathRootDir=/tmp/rmqstore/node00 storePathCommitLog=/tmp/rmqstore/node00/commitlog enableDLegerCommitLog=true dLegerGroup=RaftNode00 dLegerPeers=n0-10.16.100.60:40911;n1-10.16.100.62:40912;n2-10.16.100.63:40913 ## must be unique dLegerSelfId=n0 defaultTopicQueueNums=20 sendMessageThreadPoolNums=16 flushDiskType=ASYNC_FLUSH transientStorePoolEnable=true warmMapedFileEnable=true slaveReadEnable=true transferMsgByHeap=false autoCreateTopicEnable=false brokerIP1=10.16.100.60
mq2的配置 conf/dledger/broker-n1.conf
brokerClusterName = RaftCluster brokerName=RaftNode00 listenPort=30921 namesrvAddr=10.16.100.60:9876;10.16.100.62:9876;10.16.100.63:9876 storePathRootDir=/tmp/rmqstore/node01 storePathCommitLog=/tmp/rmqstore/node01/commitlog enableDLegerCommitLog=true dLegerGroup=RaftNode00 dLegerPeers=n0-10.16.100.60:40911;n1-10.16.100.62:40912;n2-10.16.100.63:40913 ## must be unique dLegerSelfId=n1 defaultTopicQueueNums=20 sendMessageThreadPoolNums=16 flushDiskType=ASYNC_FLUSH transientStorePoolEnable=true warmMapedFileEnable=true slaveReadEnable=true transferMsgByHeap=false autoCreateTopicEnable=false brokerIP2=10.16.100.62
mq3的配置 conf/dledger/broker-n2.conf
brokerClusterName = RaftCluster brokerName=RaftNode00 listenPort=30931 namesrvAddr=10.16.100.60:9876;10.16.100.62:9876;10.16.100.63:9876 storePathRootDir=/tmp/rmqstore/node02 storePathCommitLog=/tmp/rmqstore/node02/commitlog enableDLegerCommitLog=true dLegerGroup=RaftNode00 dLegerPeers=n0-10.16.100.60:40911;n1-10.16.100.62:40912;n2-10.16.100.63:40913 ## must be unique dLegerSelfId=n2 defaultTopicQueueNums=20 sendMessageThreadPoolNums=16 flushDiskType=ASYNC_FLUSH transientStorePoolEnable=true warmMapedFileEnable=true slaveReadEnable=true transferMsgByHeap=false autoCreateTopicEnable=false brokerIP3=10.16.100.631.2 启动 1.2.1 启动nameserver
3台机器都执行
nohup sh mqnamesrv &1.2.1 启动Broker
mq1
nohup sh bin/mqbroker -c conf/dledger/broker-n0.conf &
mq2
nohup sh bin/mqbroker -c conf/dledger/broker-n1.conf &
mq3
nohup sh bin/mqbroker -c conf/dledger/broker-n2.conf &
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)