从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群,不信学不会!(上)

简介: 从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群,不信学不会!(上)

一、环境准备


1、补充


如果单机都不会安装的,或者管控台不会安装的请先前往如下这篇文章:


https://blog.csdn.net/ctwctw/article/details/107143968


再次强调,如果单机都不会的话,先抽出2min看看上面文章,因为需要改jvm配置的,默认8G,没那么大的内存启动会报错的。


2、机器


机器 用途
172.17.160.28 namesrv、broker-a-master、broker-b-slave
172.17.160.29 namesrv、broker-b-master、broker-a-slave


两台机器分别启动namesrv


172.17.160.28和172.17.160.29交叉作为彼此的slave


二、开始搭建



搭建2M2S SYNC。


1、说明


Rocket MQ在4.5.0之前版本支持的主从不支持自动切换,也就是并非真正意义上的高可用,比如2M2S,其中1个M挂了后,他的Slave节点不会自动升级为Master,但是在4.5.0开始迎来了Dledger这个“怪物”,他是基于raft的(Redis的哨兵也是这个玩意),让Rocket MQ真正意义的做到了高可用,Master挂了后Slave自动升级为Master,完全自动,释放双手。


2、古老的集群搭建


2.1、准备


进入到2m2s-sync目录


cd /home/chentongwei/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync


2.2、Master1


也就是172.17.160.28机器上的broker-a-master节点。


修改其配置文件然后启动即可。


vi broker-a.properties


修改内容如下:


#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,需要注意的是slave节点需要和master节点的brokerName一致,区分m还是s交由下面的brokerId来配置。
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=172.17.160.28:9876;172.17.160.29:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/home/chentongwei/data/rocketmq/broker-a/store
#commitLog 存储路径
storePathCommitLog=/home/chentongwei/data/rocketmq/broker-a/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/chentongwei/data/rocketmq/broker-a/store/consumequeue
#消息索引存储路径
storePathIndex=/home/chentongwei/data/rocketmq/broker-a/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/chentongwei/data/rocketmq/broker-a/store/checkpoint
#abort 文件存储路径
abortFile=/home/chentongwei/data/rocketmq/broker-a/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH


2.3、Slave1


也就是172.17.160.29机器上的broker-a-slave节点。


修改其配置文件然后启动即可。


vi broker-a-s.properties


修改内容如下:


#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,需要注意的是slave节点需要和master节点的brokerName一致,区分m还是s交由下面的brokerId来配置。
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
# 注意此处是1了,不在是0了,因为0代表Master
brokerId=1
#nameServer地址,分号分割
namesrvAddr=172.17.160.28:9876;172.17.160.29:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/home/chentongwei/data/rocketmq/broker-a/store
#commitLog 存储路径
storePathCommitLog=/home/chentongwei/data/rocketmq/broker-a/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/chentongwei/data/rocketmq/broker-a/store/consumequeue
#消息索引存储路径
storePathIndex=/home/chentongwei/data/rocketmq/broker-a/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/chentongwei/data/rocketmq/broker-a/store/checkpoint
#abort 文件存储路径
abortFile=/home/chentongwei/data/rocketmq/broker-a/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH


2.4、Master2


也就是172.17.160.29机器上的broker-b-master节点。


修改其配置文件然后启动即可。


vi broker-b.properties


修改内容如下:


#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,需要注意的是slave节点需要和master节点的brokerName一致,区分m还是s交由下面的brokerId来配置。
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=172.17.160.28:9876;172.17.160.29:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/home/chentongwei/data/rocketmq/broker-b/store
#commitLog 存储路径
storePathCommitLog=/home/chentongwei/data/rocketmq/broker-b/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/chentongwei/data/rocketmq/broker-b/store/consumequeue
#消息索引存储路径
storePathIndex=/home/chentongwei/data/rocketmq/broker-b/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/chentongwei/data/rocketmq/broker-b/store/checkpoint
#abort 文件存储路径
abortFile=/home/chentongwei/data/rocketmq/broker-b/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH


2.5、Slave2


也就是172.17.160.28机器上的broker-b-slave节点。


修改其配置文件然后启动即可。


vi broker-b-s.properties


修改内容如下:


#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,需要注意的是slave节点需要和master节点的brokerName一致,区分m还是s交由下面的brokerId来配置。
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
# 注意此处是1了,不在是0了,因为0代表Master
brokerId=1
#nameServer地址,分号分割
namesrvAddr=172.17.160.28:9876;172.17.160.29:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/home/chentongwei/data/rocketmq/broker-b/store
#commitLog 存储路径
storePathCommitLog=/home/chentongwei/data/rocketmq/broker-b/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/chentongwei/data/rocketmq/broker-b/store/consumequeue
#消息索引存储路径
storePathIndex=/home/chentongwei/data/rocketmq/broker-b/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/chentongwei/data/rocketmq/broker-b/store/checkpoint
#abort 文件存储路径
abortFile=/home/chentongwei/data/rocketmq/broker-b/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 负载均衡 监控
【面试问题】RabbitMQ 的集群
【1月更文挑战第27天】【面试问题】RabbitMQ 的集群
|
6月前
|
消息中间件 存储 Kubernetes
k8s1.20版本部署RabbitMQ集群(持久化)——2023.05
k8s1.20版本部署RabbitMQ集群(持久化)——2023.05
254 1
|
6月前
|
消息中间件 存储 监控
消息中间件第八讲:消息队列 RocketMQ 版实战、集群及原理
消息中间件第八讲:消息队列 RocketMQ 版实战、集群及原理
|
2月前
|
消息中间件 运维 应用服务中间件
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
170 0
|
3月前
|
消息中间件 存储 缓存
RabbitMQ 集群和镜像队列
【1月更文挑战第11天】 一、clustering(集群) 1、使用集群的原因 2、搭建步骤 2.1、拉取镜像 2.2、创建三个RabbitMQ容器节点 2.3、集群搭建 二、镜像队列 1、使用镜像的原因 2、搭建步骤
241 5
|
5月前
|
消息中间件 测试技术
|
5月前
|
消息中间件 存储 容器
|
5月前
|
消息中间件 Java Spring
搭建高可用rabbitmq集群及spring boot实现集群配置
搭建高可用rabbitmq集群及spring boot实现集群配置
|
5月前
|
数据库
淘东电商项目(43) -MQ与Logstash实现数据库同步到ES的区别
淘东电商项目(43) -MQ与Logstash实现数据库同步到ES的区别
76 0
|
7月前
|
NoSQL 关系型数据库 MySQL
同步 MySQL 数据至 ES/Redis/MQ 等的五种方式
同步 MySQL 数据至 ES/Redis/MQ 等的五种方式
417 0