赞
踩
RocketMQ-on-DLedger Group 是指一组相同名称的 Broker,至少需要 3 个节点,通过 Raft(分布式算法,另一个常见的是Paxos)的commitLog存储库,自动选举出一个 Leader,其余节点作为 Follower,并在 Leader 和 Follower 之间复制数据以保证高可用。当 Leader 节点出现问题宕机后也能自动容灾切换,并保证数据一致性。该模式也支持 Broker 水平扩展,即可以部署任意多个 RocketMQ-on-DLedger Group 同时对外提供服务。
缺点:需要 RocketMQ 4.5 及以后版本才支持。
Name Server:是一个几乎无状态节点,可集群部署,集群节点间相互独立没有信息交换。其功能主要为更新和发现 Broker 服务,生产者或消费者能够通过其查找到各主题相应的 Broker IP 列表。
Broker Server:消息中转角色,负责存储消息,转发消息。分为 Master Broker ( #BID为0) 和 Slave Broker 两个角色,一个 Master Broker 可以对应多个 Slave Broker,但是一个 Slave Broker 只能对应一个 Master Broker。Broker 启动后需要完成一次将自己注册至 Name Server 的操作,随后每隔 30s 定期 向Name Server 上报 Topic 路由信息。
服务器 | IP | 安装的服务 |
---|---|---|
n0 | 192.168.1.1 | DLedger,Broker,NameServer,console |
n1 | 192.168.1.2 | DLedger,Broker,NameServer |
n2 | 192.168.1.3 | DLedger,Broker,NameServer |
sudo yum install openjdk java-1.8.0-openjdk-devel -y
cd /data/ && sudo wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip && sudo unzip rocketmq-all-4.7.1-bin-release.zip && sudo mv rocketmq-all-4.7.1-bin-release rocketmq
brokerClusterName Broker:集群名称
brokerName:Broker 名称,同一个RaftClusterGroup内,brokerName名要一样
listenPort:Broker 监听端口
namesrvAddr:Broker Namesrv地址和端口
storePathRootDir:Broker 存储目录
storePathCommitLog:Commitlog 存储目录
enableDLegerCommitLog:是否启动 DLedger
dLegerGroup:DLedger Raft Group 的名字,建议和 brokerName 保持一致
dLegerPeers:DLedger Group 内各节点的地址与端口信息(同一个 Group 内的各个节点配置必须要保证一致)
dLegerSelfId:节点 id, 必须属于 dLegerPeers 中的一个;同 Group 内各个节点要唯一,例如:第一个节点配置为”n0”,第二个节点配置为”n1”,第三个节点配置为”n2”
sendMessageThreadPoolNums:发送线程个数(建议配置成 CPU 核数)
vim conf/dledger/broker-n0.conf
修改Broker配置
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=192.168.1.1:9876;192.168.1.2:9876;192.168.1.3:9876
storePathRootDir=/data/rocketmq/rmqstore/node00
storePathCommitLog=/data/rocketmq/rmqstore/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.1.1:40911;n1-192.168.1.2:40912;n2-192.168.1.3:40913
dLegerSelfId=n0
sendMessageThreadPoolNums=4
vim conf/dledger/broker-n1.conf
修改Broker配置
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30921
namesrvAddr=192.168.1.1:9876;192.168.1.2:9876;192.168.1.3:9876
storePathRootDir=/data/rocketmq/rmqstore/node01
storePathCommitLog=/data/rocketmq/rmqstore/node01/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.1.1:40911;n1-192.168.1.2:40912;n2-192.168.1.3:40913
## must be unique
dLegerSelfId=n1
sendMessageThreadPoolNums=4
vim conf/dledger/broker-n2.conf
修改Broker配置
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30931
namesrvAddr=192.168.1.1:9876;192.168.1.2:9876;192.168.1.3:9876
storePathRootDir=/data/rocketmq/rmqstore/node02
storePathCommitLog=/data/rocketmq/rmqstore/node02/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.1.1:40911;n1-192.168.1.2:40912;n2-192.168.1.3:40913
## must be unique
dLegerSelfId=n2
sendMessageThreadPoolNums=4
cd /data/rocketmq; nohup sh bin/mqnamesrv > nohubNameserv &
cd /data/rocketmq; nohup sh bin/mqbroker > nohubBroker -c conf/dledger/broker-n0.conf &
cd /data/rocketmq; nohup sh bin/mqnamesrv > nohubNameserv &
cd /data/rocketmq; nohup sh bin/mqbroker > nohubBroker -c conf/dledger/broker-n1.conf &
cd /data/rocketmq; nohup sh bin/mqnamesrv > nohubNameserv &
cd /data/rocketmq; nohup sh bin/mqbroker > nohubBroker -c conf/dledger/broker-n2.conf &
命令行执行报错
https://www.jianshu.com/p/17fb50162d3d
验证
https://my.oschina.net/u/3391025/blog/4868314
sh bin/mqadmin clusterList -n 127.0.0.1:9876
sh bin/mqshutdown broker
sh bin/mqadmin clusterList -n 127.0.0.1:9876
https://www.cnblogs.com/miaoying/p/10319840.html
https://blog.csdn.net/H_O_W_E/article/details/113339777
java -jar rocketmq-console-ng-2.0.0.jar --server.port=31080 --rocketmq.config.namesrvAddr=192.168.1.1:9876
conf/logback_broker.xml
conf/logback_namesrv.xml
将${user.home}修改为/data/rocketmq
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。