rocketmq DLedger集群搭建(docker)
官网:https://github.com/apache/rocketmq/blob/master/docs/cn/dledger/deploy_guide.md
同一组rocketmq Dledger至少需要3个节点,通过raft选举产生leader,其余节点作为follower,实现整个集群的高可用;
如果只有2个节点,当leader节点故障后,由于得不到过半选票,follower节点不会切换为leader节点;
同一集群可部署多个rocketmq dledger group(dLegerGroup),同时对外提供服务
***********************
配置属性
enableDLegerCommitLog:开启DLedger,默认为false
dLegerGroup:dLedger群组名称,建议和brokerName一致
dLegerPeers:各节点端口信息,如:n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913
dLegerSelfId:节点id,如:n0
sendMessageThreadPoolNums:发送线程个数,建议设置成cpu个数
配置示例
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=127.0.0.1:9876
storePathRootDir=/tmp/rmqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913
## must be unique
dLegerSelfId=n0
sendMessageThreadPoolNums=16
***********************
集群搭建
镜像文件:https://github.com/apache/rocketmq-docker/tree/master/image-build
配置文件
#n0.onf
brokerClusterName = RaftCluster
brokerName=RaftNode00
namesrvAddr=172.18.0.10:9876
storePathRootDir=/tmp/rmqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.18.0.20:20911;n1-172.18.0.21:20911;n2-172.18.0.22:20911
## must be unique
dLegerSelfId=n0
sendMessageThreadPoolNums=2
#n1.conf
brokerClusterName = RaftCluster
brokerName=RaftNode00
namesrvAddr=172.18.0.10:9876
storePathRootDir=/tmp/rmqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.18.0.20:20911;n1-172.18.0.21:20911;n2-172.18.0.22:20911
## must be unique
dLegerSelfId=n1
sendMessageThreadPoolNums=2
#n2.conf
brokerClusterName = RaftCluster
brokerName=RaftNode00
namesrvAddr=172.18.0.10:9876
storePathRootDir=/tmp/rmqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.18.0.20:20911;n1-172.18.0.21:20911;n2-172.18.0.22:20911
## must be unique
dLegerSelfId=n2
sendMessageThreadPoolNums=2
创建namesrv、broker
docker run -it -d --net fixed --ip 172.18.0.10 -p 9876:9876 \
-e JAVA_OPT="-server -Xms256m -Xmx256m -Xmn128m" \
--name namesrv lihu12344/rocketmq:4.7.1 bash bin/mqnamesrv
docker run -it -d --net fixed --ip 172.18.0.20 \
-e JAVA_OPT="-server -Xms256m -Xmx256m -Xmn128m" \
-v /usr/rocketmq/dledger/n0.conf:/home/rocketmq/rocketmq-4.7.1/conf/dledger/broker-n0.conf \
--name broker lihu12344/rocketmq:4.7.1 bash bin/mqbroker autoCreateTopicEnable=true -c conf/dledger/broker-n0.conf
docker run -it -d --net fixed --ip 172.18.0.21 \
-e JAVA_OPT="-server -Xms256m -Xmx256m -Xmn128m" \
-v /usr/rocketmq/dledger/n1.conf:/home/rocketmq/rocketmq-4.7.1/conf/dledger/broker-n1.conf \
--name broker2 lihu12344/rocketmq:4.7.1 bash bin/mqbroker autoCreateTopicEnable=true -c conf/dledger/broker-n1.conf
docker run -it -d --net fixed --ip 172.18.0.22 \
-e JAVA_OPT="-server -Xms256m -Xmx256m -Xmn128m" \
-v /usr/rocketmq/dledger/n2.conf:/home/rocketmq/rocketmq-4.7.1/conf/dledger/broker-n2.conf \
--name broker3 lihu12344/rocketmq:4.7.1 bash bin/mqbroker autoCreateTopicEnable=true -c conf/dledger/broker-n2.conf
***********************
集群监控
创建rocketmq-console,监控集群
docker run -it -d --net fixed --ip 172.18.0.4 -p 8008:8080 \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.18.0.10:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
--name rocketmq-console styletang/rocketmq-console-ng
192.168.57.127:8008,查看集群
master:172.18.0.20:10911
slave:172.18.0.21:10911、172.18.0.22:10911