一、环境准备
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