5分钟搭建rocketmq 4.8集群
前言
该文档主要介绍如何部署自动容灾切换的 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.60 | mq1 | CentOS 7 |
10.16.100.62 | mq2 | CentOS 7 |
10.16.100.63 | mq3 | CentOS 7 |
编写 3 个配置文件,建议参考 conf/dledger 目录下的配置文件样例。
关键配置介绍:
name | 含义 | 举例 |
---|---|---|
enableDLegerCommitLog | 是否启动 DLedger | true |
dLegerGroup | DLedger Raft Group的名字,建议和 brokerName 保持一致 | RaftNode00 |
dLegerPeers | DLedger Group 内各节点的端口信息,同一个 Group 内的各个节点配置必须要保证一致 | n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913 |
dLegerSelfId | 节点 id, 必须属于 dLegerPeers 中的一个;同 Group 内各个节点要唯一 | n0 |
sendMessageThreadPoolNums | 发送线程个数,建议配置成 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
sendMessageThreadPoolNums=4
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
sendMessageThreadPoolNums=4
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
sendMessageThreadPoolNums=4
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 &