前言
该文档主要介绍如何部署自动容灾切换的 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 同时对外提供服务
一.下载
1.下载mq源码编译
git clone https://github.com/apache/rocketmq.git
cd rocketmq git checkout -b store_with_dledger origin/store_with_dledger
mvn -Prelease-all -DskipTests clean install -U
2.下载控制台源码
3.部署
1)完成正式三台NameServer的部署
首先是在三台NameServer的机器上,大家就按照上面的步骤安装好Java,构建好Dledger和RocketMQ,然后编辑对应的文件,设置 好JAVA_HOME就可以了。
此时可以执行如下的一行命令就可以启动NameServer:
nohup sh mqnamesrv &
这个NameServer监听的接口默认就是9876,所以如果你在三台机器上都启动了NameServer,那么他们的端口都是9876,此时我们 就成功的启动了三个NameServer了
2)完成一组Broker集群的部署
接着需要启动一个Master Broker和两个Slave Broker,这个启动也很简单,分别在上述三台为Broker准备的高配置机器上,安装好 Java,构建好Dledger和RocketMQ,然后编辑好对应的文件。
接着就可以执行如下的命令:
nohup sh bin/mqbroker -c conf/dledger/broker-n0.conf &
这里要给大家说一下,第一个Broker的配置文件是broker-n0.conf,第二个broker的配置文件可以是broker-n1.conf,第三个broker 的配置文件可以是broker-n2.conf。
对于这个配置文件里的东西要给大家说明一下,自己要做对应的修改。
我们用broker-n0.conf举例子,然后在每个配置项上加入注释,告诉大家应该如何修改每台机器的配置:
这里贴出 conf/dledger/broker-n0.conf 的配置举例。
brokerIP1=192.168.8.201
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=192.168.8.201:9876;192.168.8.202:9876;192.168.8.203:9876
storePathRootDir=/usr/local/node00
storePathCommitLog=/usr/local/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.8.201:40911;n1-192.168.8.202:40912;n2-192.168.8.203:40913
## must be unique
dLegerSelfId=n0
sendMessageThreadPoolNums=4
brokerClusterName | 这个是集群的名称,你整个broker集群都可以用这个名称 | RaftCluster |
---|---|---|
brokerName | 这是Broker的名称,比如你有一个Master和两个Slave,那么他们的Broker名称必须是一样的 | RaftNode00 |
listenPort | 这个就是你的Broker监听的端口号,如果每台机器上就部署一个Broker,可以考虑就用这个端口号,不用修改 | 30911 |
namesrvAddr | 这里是配置NameServer的地址,如果你有很多个NameServer的话,可以在这里写入多个NameServer的地址 | 192.168.8.201:9876;192.168.8.202:9876;192.168.8.203:9876 |
storePathRootDir | 存放Broker数据的地方,你可以换成别的目录 | /usr/local/node00 |
storePathCommitLog | 存放Broker数据的地方,你可以换成别的目录 | /usr/local/node00/commitlog |
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 |
启动完成过后,可以跟NameServer进 行通信,检查Broker集群的状态,就是如下命令:
sh bin/mqadmin clusterList -n 127.0.0.1:9876。
3)控制台启动
server.port=9527