专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

RocketMQ-Dledger集群搭建

构建安装DLedger

1、 git clone https://github.com/openmessaging/openmessaging-storage-dledger.git
2、 cd openmessaging-storage-dledger
3、 mvn clean install -DskipTests

下载RocketMQ

1、 从 github.com/apache/rock… 这里下载需要的RocketMQ版本
2、 unzip rocketmq-all-4.7.0-source-release.zip
3、 cd rocketmq-all-4.7.0/
4、 mvn -Prelease-all -DskipTests clean install -U
5、 cd distribution/target/rocketmq-4.7.0/rocketmq-4.7.0

**可以将该文件拷出**

`cp rocketmq-all-4.7.0/distribution/target/rocketmq-4.7.0/rocketmq-4.7.0 /opt/rocketmq-4.7.0`

修改配置文件

服务器说明:(生产中应该将 NameServer 部署到其他服务器中,在这为了方便,与Broker部署在一起)

服务器 ip 安装的服务
服务器1-主 192.168.56.102 DLedger,Broker,NameServer
服务器2-从 192.168.56.103 DLedger,Broker,NameServer
服务器3-从 192.168.56.104 DLedger,Broker,NameServer

服务器1配置-Master

1、 vim conf/dledger/broker-n0.conf
2、 修改Broker配置

## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode00
## 监听的端口
listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.56.102:9876;192.168.56.103:9876;192.168.56.104:9876
storePathRootDir=/tmp/rmqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
dLegerPeers=n0-192.168.56.102:40911;n1-192.168.56.103:40912;n2-192.168.56.104:40913
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=n0
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
brokerIP1=192.168.56.102

其他配置与详细说明:Broker 配置

服务器2配置-Slave

1、 vim conf/dledger/broker-n1.conf
2、 修改Broker配置

brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30921
namesrvAddr=192.168.56.102:9876;192.168.56.103:9876;192.168.56.104:9876
storePathRootDir=/tmp/rmqstore/node01
storePathCommitLog=/tmp/rmqstore/node01/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.56.102:40911;n1-192.168.56.103:40912;n2-192.168.56.104:40913
## must be unique
dLegerSelfId=n1
sendMessageThreadPoolNums=16
brokerIP1=192.168.56.103

服务器3配置-Slave

1、 vim conf/dledger/broker-n2.conf
2、 修改Broker配置

brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30931
namesrvAddr=192.168.56.102:9876;192.168.56.103:9876;192.168.56.104:9876
storePathRootDir=/tmp/rmqstore/node02
storePathCommitLog=/tmp/rmqstore/node02/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.56.102:40911;n1-192.168.56.103:40912;n2-192.168.56.104:40913
## must be unique
dLegerSelfId=n2
sendMessageThreadPoolNums=16
brokerIP1=192.168.56.104

启动集群

1、 在服务器1 执行

nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqbroker  > nohubBroker -c conf/dledger/broker-n0.conf &

1、 在服务器2 执行

nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqbroker  > nohubBroker -c conf/dledger/broker-n1.conf &

1、 在服务器3 执行

nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqbroker  > nohubBroker -c conf/dledger/broker-n2.conf &

查看集群情况

sh bin/mqadmin clusterList -n 127.0.0.1:9876

[root@localhost rocketmq-4.7.1]# sh bin/mqadmin clusterList -n 127.0.0.1:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
RaftCluster       RaftNode00              0     192.168.56.102:30911   V4_7_1                   0.00(0,0ms)         0.00(0,0ms)          0 442545.08 -1.0000
RaftCluster       RaftNode00              2     192.168.56.103:30921   V4_7_1                   0.00(0,0ms)         0.00(0,0ms)          0 442545.08 -1.0000
RaftCluster       RaftNode00              3     192.168.56.104:30931   V4_7_1                   0.00(0,0ms)         0.00(0,0ms)          0 442545.08 -1.0000

BID 为 0 的是Master

kill 主broker 并再次查看集群情况

sh bin/mqshutdown broker

sh bin/mqadmin clusterList -n 127.0.0.1:9876

[root@localhost rocketmq-4.7.1]# sh bin/mqadmin clusterList -n 127.0.0.1:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
RaftCluster       RaftNode00              0     192.168.56.104:30931   V4_7_1                   0.00(0,0ms)         0.00(0,0ms)          0 442545.18 -1.0000
RaftCluster       RaftNode00              2     192.168.56.103:30921   V4_7_1                   0.00(0,0ms)         0.00(0,0ms)          0 442545.18 -1.0000

Master切换成功

备注

Broker 配置

参考文档:

参数名 默认值 说明
listenPort 10911 接受客户端连接的监听端口
namesrvAddr null nameServer 地址
brokerIP1 网卡的 InetAddress 当前 broker 监听的 IP
brokerIP2 跟 brokerIP1 一样 存在主从 broker 时,如果在 broker 主节点上配置了 brokerIP2 属性,broker 从节点会连接主节点配置的 brokerIP2 进行同步
brokerName null broker 的名称
brokerClusterName DefaultCluster 本 broker 所属的 Cluser 名称
brokerId 0 broker id, 0 表示 master, 其他的正整数表示 slave
storePathCommitLog $HOME/store/commitlog/ 存储 commit log 的路径
storePathConsumerQueue $HOME/store/consumequeue/ 存储 consume queue 的路径
mappedFileSizeCommitLog 1024 * 1024 * 1024(1G) commit log 的映射文件大小
deleteWhen 04 在每天的什么时间删除已经超过文件保留时间的 commit log
fileReservedTime 72 以小时计算的文件保留时间
brokerRole ASYNC_MASTER SYNC_MASTER/ASYNC_MASTER/SLAVE
flushDiskType ASYNC_FLUSH SYNC_FLUSH/ASYNC_FLUSH SYNC_FLUSH 模式下的 broker 保证在收到确认生产者之前将消息刷盘。ASYNC_FLUSH 模式下的 broker 则利用刷盘一组消息的模式,可以取得更好的性能。
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

启动内存不够

修改 bin/runbroker.shbin/runserver.sh 中的

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g

将参数调低 (可以改为别的值)

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

报连接超时

查看防火墙服务状态 systemctl status firewalld

将防火墙关闭 systemctl stop firewalld

文章永久链接:https://tech.souyunku.com/25929

未经允许不得转载:搜云库技术团队 » RocketMQ-Dledger集群搭建

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们