5分钟搭建rocketmq 4.8集群

5分钟搭建rocketmq 4.8集群,第1张

5分钟搭建rocketmq 4.8集群 5分钟搭建rocketmq 4.8集群
前言

在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)。

ip主机名 *** 作系统10.16.100.60mq1CentOS 710.16.100.62mq2CentOS 710.16.100.63mq3CentOS 7

编写 3 个配置文件,建议参考 conf/dledger 目录下的配置文件样例。
关键配置介绍:

name含义举例enableDLegerCommitLog是否启动 DLedgertruedLegerGroupDLedger Raft Group的名字,建议和 brokerName 保持一致RaftNode00dLegerPeersDLedger Group 内各节点的端口信息,同一个 Group 内的各个节点配置必须要保证一致n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913dLegerSelfId节点 id, 必须属于 dLegerPeers 中的一个;同 Group 内各个节点要唯一n0sendMessageThreadPoolNums发送线程个数,建议配置成 Cpu 核数16

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.63
1.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 &

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存