RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
1. 修改RocketMQ默认启动端口
由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全局搜索9876,将所有使用9876端口的地方改为9877。
在终端打开,使用:mvn -Prelease-all -DskipTests clean install命令打包,打包完成后在项目的distribution\target将会有如下两个包:
分别是linux和win下运行的包。
将后缀为.tar.gz的包上传到服务器上。并使用tar -zxvf 文件名解压
2. 创建数据存储文件夹
在解压后的文件夹中新建数据存储文件夹
mkdir /usr/local/middle/rocketmq-9877/data
#commitLog 存储路径
mkdir /usr/local/middle/rocketmq-9877/data/commitlog
#消费队列存储路径存储路径
mkdir /usr/local/middle/rocketmq-9877/data/consumequeue
#消息索引存储路径
mkdir /usr/local/middle/rocketmq-9877/data/index
两台服务器上都要上传包和在新传的包解压收的文件夹下都要新建文件夹。这里算上楼主之前上传的默认端口的rocketmq节点,每台已经有两个节点了。两台机器刚好可以做四个节点,双主双从。
3. 修改log文件
跟双master时操作一样,就不再详述,文章最后会放搭建双Master集群步骤的链接。
4. 修改配置文件
分别进入两台机器的rocketmq目录下的conf/2m-2s-sync/下,共有四个文件:
分别做如下配置
broker-a.properties
#所属集群名字
borkerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示Master, >0 表示Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877;
#在发消息时,自动创建服务器不存在的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
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/middle/rocketmq/data
#commitLog存储路径
storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/middle/rocketmq/data/index
#checkpoint 文件存储路径
storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/usr/local/middle/rocketmq/data/abort
#限制的消息大小
maxMessageSize=65536 #flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000 #Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER #刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
broker-a-s.properties
#所属集群名字
borkerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示Master, >0 表示Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877;
#在发消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10915
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/middle/rocketmq/data
#commitLog存储路径
storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/middle/rocketmq/data/index
#checkpoint 文件存储路径
storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/usr/local/middle/rocketmq/data/abort
#限制的消息大小
maxMessageSize=65536 #flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000 #Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE #刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
broker-b.properties
#所属集群名字
borkerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示Master, >0 表示Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877;
#在发消息时,自动创建服务器不存在的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
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/middle/rocketmq/data
#commitLog存储路径
storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/middle/rocketmq/data/index
#checkpoint 文件存储路径
storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/usr/local/middle/rocketmq/data/abort
#限制的消息大小
maxMessageSize=65536 #flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000 #Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER #刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
broker-b-s.properties
#所属集群名字
borkerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示Master, >0 表示Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877;
#在发消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10910
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/middle/rocketmq/data
#commitLog存储路径
storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/middle/rocketmq/data/index
#checkpoint 文件存储路径
storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/usr/local/middle/rocketmq/data/abort
#限制的消息大小
maxMessageSize=65536 #flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000 #Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE #刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
配置文件中的各个数据存储目录根据自己路径情况自行修改。
5. 修改日志文件
参照双Master.
6. 修改后传入的节点的JVM启动参数
参照双Master;
7. 启动NameServer和Broker
参照双Master
四个节点都启动完成后,启动控制台,可以看到
表明四个节点的Broker已经启动成功,且一个Master对应一个Slave,且当向Broker发送消息时,主从节点直接消息一致。
此时我们先向集群发送消息(不消费),然后停掉一台主节点。
启动Consumer,消息仍然可以完全消费,刚好验证了从节点在集群中的作用,保证Master挂掉时消息不会丢失。
双Maste集群随笔传送门:RocketMQ学习笔记(4)----RocketMQ搭建双Master集群
注意:
broker启动后会占用三个端口:
服务器监听端口(默认10911)
高可用端口(监听slave的请求),端口占用为服务器监听端口+1
快速服务器端口(VIP服务端口,也就是说客户端可以选择使用服务器监听端口或者这个端口通信,一般建议是设置VIP渠道为false的,即使用服务器监听端口通信【不设置就是10911这个端口】),这个端口的值为服务器监听端口-2,
所以在配置broker.properties时不要占用到默认端口计算之后会占用的端口,如果你启动多主多从,也要注意自己配置的端口情况。当然如果一台机器上只有一个节点,那么可以不用在意这个问题。
原文 RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群的更多相关文章
- 【rocketmq学习笔记】rocketmq入门学习
基本介绍 rocketmq是阿里巴巴团队使用java语言开发的一款基于发布订阅模型的分布式消息队列中间件,是一款低延迟,高可用,拥有海量消息堆积能力和灵活拓展性的消息队列. 特点 可以实现集群无单点故 ...
- 通过keepalived搭建MySQL双主模式的高可用集群系统
1. 配置MySQL双主模式 1.修改my.cnf配置文件 默认情况下,MySQL的配置文件是/etc/my.cnf,在配置文件的[mysqld]段添加如下内容: server-id=1 log-bi ...
- Redis学习笔记(5)—— Redis的持久化方案&Redis的集群搭建
一.Redis的持久化方案 Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化. Redis支持两种 ...
- K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群
0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansi ...
- 【k8s学习笔记】使用 kubeadm 部署 v1.18.5 版本 Kubernetes集群
说明 本文系搭建kubernetes v1.18.5 集群笔记,使用三台虚拟机作为 CentOS 测试机,安装kubeadm.kubelet.kubectl均使用yum安装,网络组件选用的是 flan ...
- SpringBoot学习笔记(13)----使用Spring Session+redis实现一个简单的集群
session集群的解决方案: 1.扩展指定server 利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略.缺点:耦合Tomcat/ ...
- RocketMQ学习笔记(4)----RocketMQ搭建双Master集群
前面已经学习了RockeMQ的四种集群方式,接下来就来搭建一个双Master(2m)的集群环境. 1. 双Master服务器环境 序号 ip 用户名 密码 角色 模式 (1) 47.105.145.1 ...
- RocketMQ学习笔记(14)----RocketMQ的去重策略
1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息. 只有以上两个条件都满足情况下,才能认为消息是“Exactly O ...
- Docker 部署 RocketMQ 双主双从模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/96/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
随机推荐
- 99_leetcode_Best Time to Buy and sell Stock
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- android中怎么将桌面较长的图标名称显示完整
找到相应的 res 资源, 改动其 styles.xml <style name="WorkspaceIcon.Portrait"> <item ...
- MyEclipse,Eclipse注释规范模板
注释的作用:myeclipse中java文件头注释格式设置,最终可用于javadoc.exe生成API文档,同时提高了代码的可读性 设置方法: windows->preferences-> ...
- 【poj2774】Long Long Message
用个分隔符将两个字符串连接起来,再用后缀数组求出height数组的值,找出一个height值最大并且i与i-1的sa值分别在两串字符中就好 #include<algorithm> #inc ...
- FFmpeg解码视频帧为jpg图片保存到本地
FFmpeg解码视频帧为jpg图片保存到本地 - CSDN博客 https://blog.csdn.net/qq_28284547/article/details/78151635
- 浏览器对MP4视频 帧宽度 高度的兼容性
传入oss后 或者 本地 拖动到 浏览器 谷歌 都不能播放 Edge 可以播放 但 Edge不支持 本地拖入 播放 搜狗浏览器 同谷歌
- 【T^T】【周赛】第一周周赛——欢迎16级的新同学
借光光,YZC的福气(今天拿到Rank1),本来还可以更好的,前面吃M去了,ABC都很晚切,而且异常兴奋,结果WA了好多发,但还是由于水题看题不清,分析不清导致的 A Home W的数学 Descri ...
- leetcode 258. Add Digits——我擦,这种要你O(1)时间搞定的必然是观察规律,总结一个公式哇
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. ...
- preparing launch delegate问题
启动tomcat成功,但是右下角一直显示100%点进去 发现preparing launch delegate卡在100% 以为是代理的事,把代理关了,还是不行,最后发现是数据库没有,导入数据库后完美 ...
- BZOJ_1115_[POI2009]石子游戏Kam_博弈论
BZOJ_1115_[POI2009]石子游戏Kam_博弈论 Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子 ...