RocketMQ - Dledger模式的搭建

1.准备环境

  1. 本文主要是以RocketMQ-4.8.0进行的搭建(RocketMq好像是从4.5.0之后才支持Dledger模式的,Dledger模式:当master宕机不可用的时候,slave会进行选举,然后选择一个slave作为master继续提供服务)下载地址:http://rocketmq.apache.org/dowloading/releases/
  2. 在需要部署的机器上安装,配置jdk和引入rocketmq的环境
  3. 准备三台服务器(192.168.1.21 , 192.168.1.23 , 192.168.1.26)搭建1主两从
    在这里插入图片描述

2.配置参数

  1. 切换到目录下 /rocketmq-all-4.8.0/conf/dledger , 能看到三个配置文件

broker-n0.conf
broker-n1.conf
broker-n1.conf

  1. 先搭建第一个broker分组 RaftNode00,三台服务,我们的配置文件 23服务器上的broker-n0.conf,21服务器上的broker-n1.conf,26服务器上的broker-n2.conf,为了好区分broker-nx.conf,我们对这个三个文件进行改名:

#23 服务上的改名
mv broker-n0.conf n0-broker-no.conf
#21 服务上的改名
mv broker-n1.conf n0-broker-n1.conf
#26 服务上的改名
mv broker-n2.conf n0-broker-n2.conf

23服务上的配置文件 n0-broker-n0.conf

##n0-broker-n0.conf
#集群名称
brokerClusterName = RaftCluster
#broker集群名称
brokerName=RaftNode00
#brokerip
brokerIP1=192.168.1.23
#监听端口
listenPort=10911
#namesrv地址列表
namesrvAddr=192.168.1.23:9876;192.168.1.21:9876
#主题不存在时是否自动创建主题
autoCreateTopicEnable=false
#订阅组不存在时是否自动创建订阅组
autoCreateSubscriptionGroup=false
#数据存储根路径
storePathRootDir=/tmp/rmqstore/node00
#commitlog数据存储根路径
storePathCommitLog=/tmp/rmqstore/node00/commitlog
#broker检测队列中的消息等待时间(默认是200毫秒,自行配置)
waitTimeMillsInSendQueue=200
#是否启用DLeger集群模式
enableDLegerCommitLog=true
#与brokerName保持一致就好
dLegerGroup=RaftNode00
#dLeger集群下的节点配置
dLegerPeers=n0-192.168.1.23:40911;n1-192.168.1.21:40911;n2-192.168.1.26:40911
## must be unique
#当前节点在dLeger集群下的标识
dLegerSelfId=n0
#服务端处理消息发送线程池数量
sendMessageThreadPoolNums=16 

21服务上的 n0-broker-n1.conf

##n0-broker-n1.conf
#集群名称
brokerClusterName = RaftCluster
#broker集群名称
brokerName=RaftNode00
#brokerip
brokerIP1=192.168.1.21
#监听端口
listenPort=10911
#namesrv地址列表
namesrvAddr=192.168.1.23:9876;192.168.1.21:9876
#主题不存在时是否自动创建主题
autoCreateTopicEnable=false
#订阅组不存在时是否自动创建订阅组
autoCreateSubscriptionGroup=false
#数据存储根路径
storePathRootDir=/tmp/rmqstore/node00
#commitlog数据存储根路径
storePathCommitLog=/tmp/rmqstore/node00/commitlog
#检测等待时间
waitTimeMillsInSendQueue=200
#是否启用DLeger集群模式
enableDLegerCommitLog=true
#与brokerName保持一致就好
dLegerGroup=RaftNode00
#dLeger集群下的节点配置
dLegerPeers=n0-192.168.1.23:40911;n1-192.168.1.21:40911;n2-192.168.1.26:40911
## must be unique
#当前节点在dLeger集群下的标识
dLegerSelfId=n1
#服务端处理消息发送线程池数量
sendMessageThreadPoolNums=16 

26服务上的 n0-broker-n2.conf

#n0-broker-n2.conf
#集群名称
brokerClusterName = RaftCluster
#broker集群名称
brokerName=RaftNode00
#brokerip
brokerIP1=192.168.1.26
#监听端口
listenPort=10911
#namesrv地址列表
namesrvAddr=192.168.1.23:9876;192.168.1.21:9876
#主题不存在时是否自动创建主题
autoCreateTopicEnable=false
#订阅组不存在时是否自动创建订阅组
autoCreateSubscriptionGroup=false
#数据存储根路径
storePathRootDir=/tmp/rmqstore/node00
#commitlog数据存储根路径
storePathCommitLog=/tmp/rmqstore/node00/commitlog
#检测等待时间
waitTimeMillsInSendQueue=2000
#是否启用DLeger集群模式
enableDLegerCommitLog=true
#与brokerName保持一致就好
dLegerGroup=RaftNode00
#dLeger集群下的节点配置
dLegerPeers=n0-192.168.1.23:40911;n1-192.168.1.21:40911;n2-192.168.1.26:40911
## must be unique
#当前节点在dLeger集群下的标识
dLegerSelfId=n2
#服务端处理消息发送线程池数量
sendMessageThreadPoolNums=16
  1. 搭建第二个broker分组 RaftNode01 ,我们的配置文件:21服务上的 broker-n0.conf , 26服务上的broker-n1.conf , 23服务上的broker-n2.conf , 为了区分,我们分别对这三个文件进行修改

#21服务
mv broker-n0.conf n1-broker-n0.conf
#26服务
mv broker-n1.conf n1-broker-n1.conf
#23服务
mv broker-n2.conf n1-broker-n2.conf

21服务上的 n1-broker-n0.conf

##n1-broker-n0.conf
#集群名称
brokerClusterName = RaftCluster
#broker集群名称
brokerName=RaftNode01
#brokerIP1
brokerIP1=192.168.1.21
#监听端口
listenPort=10912
#namesrv地址列表
namesrvAddr=192.168.1.23:9876;192.168.1.21:9876
#主题不存在时是否自动创建主题
autoCreateTopicEnable=false
#订阅组不存在时是否自动创建订阅组
autoCreateSubscriptionGroup=false
#数据存储根路径
storePathRootDir=/tmp/rmqstore/node01
#commitlog数据存储根路径
storePathCommitLog=/tmp/rmqstore/node01/commitlog
#检测等待时间
waitTimeMillsInSendQueue=200
#是否启用DLeger集群模式
enableDLegerCommitLog=true
#与brokerName保持一致就好
dLegerGroup=RaftNode01
#dLeger集群下的节点配置
dLegerPeers=n3-192.168.1.21:40912;n4-192.168.1.23:40912;n5-192.168.1.26:40912
## must be unique
#当前节点在dLeger集群下的标识
dLegerSelfId=n3
#服务端处理消息发送线程池数量
sendMessageThreadPoolNums=16 

26服务上的 n1-broker-n1.conf

##1-broker-n1.conf
#集群名称
brokerClusterName = RaftCluster
#broker集群名称
brokerName=RaftNode01
#brokerIP1
brokerIP1=192.168.1.26
#监听端口
listenPort=10912
#namesrv地址列表
namesrvAddr=192.168.1.23:9876;192.168.1.21:9876
#主题不存在时是否自动创建主题
autoCreateTopicEnable=false
#订阅组不存在时是否自动创建订阅组
autoCreateSubscriptionGroup=false
#数据存储根路径
storePathRootDir=/tmp/rmqstore/node01
#commitlog数据存储根路径
storePathCommitLog=/tmp/rmqstore/node01/commitlog
#检测等待时间
waitTimeMillsInSendQueue=200
#是否启用DLeger集群模式
enableDLegerCommitLog=true
#与brokerName保持一致就好
dLegerGroup=RaftNode01
#dLeger集群下的节点配置
dLegerPeers=n3-192.168.1.21:40912;n4-192.168.1.23:40912;n5-192.168.1.26:40912
## must be unique
#当前节点在dLeger集群下的标识
dLegerSelfId=n5
#服务端处理消息发送线程池数量
sendMessageThreadPoolNums=16

23服务上的 n1-broker-n2.conf

##n1-broker-n2.conf
#集群名称
brokerClusterName = RaftCluster
#broker集群名称
brokerName=RaftNode01
#brokerIP1
brokerIP1=192.168.1.23
#监听端口
listenPort=10912
#namesrv地址列表
namesrvAddr=192.168.1.23:9876;192.168.1.21:9876
#主题不存在时是否自动创建主题
autoCreateTopicEnable=false
#订阅组不存在时是否自动创建订阅组
autoCreateSubscriptionGroup=false
#数据存储根路径
storePathRootDir=/tmp/rmqstore/node01
#commitlog数据存储根路径
storePathCommitLog=/tmp/rmqstore/node01/commitlog
#检测等待时间
waitTimeMillsInSendQueue=200
#是否启用DLeger集群模式
enableDLegerCommitLog=true
#与brokerName保持一致就好
dLegerGroup=RaftNode01
#dLeger集群下的节点配置
dLegerPeers=n3-192.168.1.21:40912;n4-192.168.1.23:40912;n5-192.168.1.26:40912
## must be unique
#当前节点在dLeger集群下的标识
dLegerSelfId=n4
#服务端处理消息发送线程池数量
sendMessageThreadPoolNums=16
  1. 我们修改脚本启动内存(如果内存大,可以不用哈)

vim runbroker.sh
#找到这行配置,修改
JAVA_OPT="KaTeX parse error: Expected 'EOF', got '#' at position 62: …m runserver.sh #̲找到这行配置,修改 JAVA_…{JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

  1. 先启动namesrv (本文配置了两个 21服务和23服务)

nohup sh /usr/local/rocketmq-all-4.8.0/bin/mqnamesrv > /usr/local/rocketmq-all-4.8.0/logs/mqnamesrv.log 2>&1 &

  1. 启动RaftNode00分组下的broker

23服务
nohup sh /usr/local/rocketmq-all-4.8.0/bin/mqbroker -c /usr/local/rocketmq-all-4.8.0/conf/dledger/n0-broker-n0.conf > /usr/local/rocketmq-all-4.8.0/logs/n0-broker-n0.log 2>&1 &
21服务
nohup sh /usr/local/rocketmq-all-4.8.0/bin/mqbroker -c /usr/local/rocketmq-all-4.8.0/conf/dledger/n0-broker-n1.conf > /usr/local/rocketmq-all-4.8.0/logs/n0-broker-n1.log 2>&1 &
26服务
nohup sh /usr/local/rocketmq-all-4.8.0/bin/mqbroker -c /usr/local/rocketmq-all-4.8.0/conf/dledger/n0-broker-n2.conf > /usr/local/rocketmq-all-4.8.0/logs/n0-broker-n2.log 2>&1 &

  1. 启动RaftNode01分组下的broker

21服务
nohup sh /usr/local/rocketmq-all-4.8.0/bin/mqbroker -c /usr/local/rocketmq-all-4.8.0/conf/dledger/n1-broker-n0.conf > /usr/local/rocketmq-all-4.8.0/logs/n1-broker-n0.log 2>&1 &
26服务
nohup sh /usr/local/rocketmq-all-4.8.0/bin/mqbroker -c /usr/local/rocketmq-all-4.8.0/conf/dledger/n1-broker-n1.conf > /usr/local/rocketmq-all-4.8.0/logs/n1-broker-n1.log 2>&1 &
23服务
nohup sh /usr/local/rocketmq-all-4.8.0/bin/mqbroker -c /usr/local/rocketmq-all-4.8.0/conf/dledger/n1-broker-n2.conf > /usr/local/rocketmq-all-4.8.0/logs/n1-broker-n2.log 2>&1 &

  1. 控制台查看集群
    在这里插入图片描述
    测试:把master进程杀掉,在刷新控制台,会发现有slave晋升为master

  2. 搭建注意点:
    1.brokerIP:建议指定下IP,以免有多个网卡的时候,broker选择的ip和你预期的不一致
    2.brokerName和dLegerGroup: 同一个分组,最好保持一致
    3.enableDLegerCommitLog:true - 开启DLeger集群模式.
    4.dLegerSelfId:当前集群下的节点标识,是唯一的

  3. 其实dLeger模式和之前的模式是一样的,配置上多了几个参数,配置的时候,仔细点,很容易搭建的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值