【RocketMQ、Docker】Docker 安装 RocketMQ-4.9.3:DLedger多副本集群

一、环境准备

Docker 已安装 RocketMQ-4.9.3相关服务。
安装教程:【RocketMQ、Docker】Docker 安装 RocketMQ-4.9.3

二、安装DLedger多副本集群

文档介绍
1、创建三个目录
在这里插入图片描述
2、初始化每个目录的conf配置,55a0480ec59d为NameServer的容器id

docker cp 55a0480ec59d:/home/rocketmq/rocketmq-4.9.3/conf /home/docker/mount/rocketmq/broker/broker-dledger0/
docker cp 55a0480ec59d:/home/rocketmq/rocketmq-4.9.3/conf /home/docker/mount/rocketmq/broker/broker-dledger1/
docker cp 55a0480ec59d:/home/rocketmq/rocketmq-4.9.3/conf /home/docker/mount/rocketmq/broker/broker-dledger2/

3、修改broker-dledger0/conf/broker.conf文件

# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-dledger
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = SYNC_FLUSH
# 设置broker节点所在服务器的ip地址(**这个非常重要,主从模式下,从节点会根据主节点的brokerIP2来同步数据,如果不配置,主从无法同步,brokerIP1设置为自己外网能访问的ip,服务器双网卡情况下必须配置,比如阿里云这种,主节点需要配置ip1和ip2,从节点只需要配置ip1即可)
brokerIP1 = 10.101.68.203
#nameServer地址,分号分割
namesrvAddr=10.101.68.203:9876
#Broker 对外服务的监听端口,
listenPort = 12911
#是否允许Broker自动创建Topic
autoCreateTopicEnable = true
#是否允许 Broker 自动创建订阅组
autoCreateSubscriptionGroup = true
#linux开启epoll
useEpollNativeSelector = true

#数据存放的根目录
#storePathRootDir = /root/store/path
#commit log保存目录
#storePathCommitLog = /root/store/path/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /root/store/path/consumequeue
slaveReadEnable = true

# DLedger 多副本即主从切换
enableDLegerCommitLog=true
dLegerGroup=broker-dledger
dLegerPeers=n0-10.101.68.203:40911;n1-10.101.68.203:40912;n2-10.101.68.203:40913
## must be unique
dLegerSelfId=n0
sendMessageThreadPoolNums=16

4、修改broker-dledger1/conf/broker.conf文件

# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-dledger
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = SYNC_FLUSH
# 设置broker节点所在服务器的ip地址(**这个非常重要,主从模式下,从节点会根据主节点的brokerIP2来同步数据,如果不配置,主从无法同步,brokerIP1设置为自己外网能访问的ip,服务器双网卡情况下必须配置,比如阿里云这种,主节点需要配置ip1和ip2,从节点只需要配置ip1即可)
brokerIP1 = 10.101.68.203
#nameServer地址,分号分割
namesrvAddr=10.101.68.203:9876
#Broker 对外服务的监听端口,
listenPort = 13911
#是否允许Broker自动创建Topic
autoCreateTopicEnable = true
#是否允许 Broker 自动创建订阅组
autoCreateSubscriptionGroup = true
#linux开启epoll
useEpollNativeSelector = true

#数据存放的根目录
#storePathRootDir = /root/store/path
#commit log保存目录
#storePathCommitLog = /root/store/path/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /root/store/path/consumequeue

slaveReadEnable = true

# DLedger 多副本即主从切换
enableDLegerCommitLog=true
dLegerGroup=broker-dledger
dLegerPeers=n0-10.101.68.203:40911;n1-10.101.68.203:40912;n2-10.101.68.203:40913
## must be unique
dLegerSelfId=n1
sendMessageThreadPoolNums=16

5、修改broker-dledger2/conf/broker.conf文件

# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-dledger
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = SYNC_FLUSH
# 设置broker节点所在服务器的ip地址(**这个非常重要,主从模式下,从节点会根据主节点的brokerIP2来同步数据,如果不配置,主从无法同步,brokerIP1设置为自己外网能访问的ip,服务器双网卡情况下必须配置,比如阿里云这种,主节点需要配置ip1和ip2,从节点只需要配置ip1即可)
brokerIP1 = 10.101.68.203
#nameServer地址,分号分割
namesrvAddr=10.101.68.203:9876
#Broker 对外服务的监听端口,
listenPort = 14911
#是否允许Broker自动创建Topic
autoCreateTopicEnable = true
#是否允许 Broker 自动创建订阅组
autoCreateSubscriptionGroup = true
#linux开启epoll
useEpollNativeSelector = true

#数据存放的根目录
#storePathRootDir = /root/store/path
#commit log保存目录
#storePathCommitLog = /root/store/path/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /root/store/path/consumequeue

slaveReadEnable = true

# DLedger 多副本即主从切换
enableDLegerCommitLog=true
dLegerGroup=broker-dledger
dLegerPeers=n0-10.101.68.203:40911;n1-10.101.68.203:40912;n2-10.101.68.203:40913
## must be unique
dLegerSelfId=n2
sendMessageThreadPoolNums=16

6、创建三个broker容器

docker run -d --name rocketmq-broker-dledger0 --network rocketmq -p 12909:10909 -p 12911:12911 -p 40911:40911 -v /home/docker/mount/rocketmq/broker/broker-dledger0/logs:/root/logs -v /home/docker/mount/rocketmq/broker/broker-dledger0/store:/root/store -v /home/docker/mount/rocketmq/broker/broker-dledger0/conf:/home/rocketmq/rocketmq-4.9.3/conf apache/rocketmq:4.9.3 sh mqbroker -c /home/rocketmq/rocketmq-4.9.3/conf/broker.conf
docker run -d --name rocketmq-broker-dledger1 --network rocketmq -p 13909:10909 -p 13911:13911 -p 40912:40912 -v /home/docker/mount/rocketmq/broker/broker-dledger1/logs:/root/logs -v /home/docker/mount/rocketmq/broker/broker-dledger1/store:/root/store -v /home/docker/mount/rocketmq/broker/broker-dledger1/conf:/home/rocketmq/rocketmq-4.9.3/conf apache/rocketmq:4.9.3 sh mqbroker -c /home/rocketmq/rocketmq-4.9.3/conf/broker.conf
docker run -d --name rocketmq-broker-dledger2 --network rocketmq -p 14909:10909 -p 14911:14911 -p 40913:40913 -v /home/docker/mount/rocketmq/broker/broker-dledger2/logs:/root/logs -v /home/docker/mount/rocketmq/broker/broker-dledger2/store:/root/store -v /home/docker/mount/rocketmq/broker/broker-dledger2/conf:/home/rocketmq/rocketmq-4.9.3/conf apache/rocketmq:4.9.3 sh mqbroker -c /home/rocketmq/rocketmq-4.9.3/conf/broker.conf

三、效果

正常启动
在这里插入图片描述
模拟主broker宕机,docker停止对应容器
在这里插入图片描述

四、相关文章推荐

源码分析 RocketMQ DLedger 多副本即主从切换实现原理
RocketMQ Dledger 模式集群搭建

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值