Java充电社
专辑
博文
联系我
本人继续续收门徒,亲手指导
RocketMQ专题
-> 安装篇-集群搭建实践 (多主多从)
1、MQ概述
2、RocketMQ概述
3、基本概念
4、系统架构
5、安装篇-单机安装
6、安装篇-dashboard控制台的安装与启动
7、安装篇-集群搭建理论
8、安装篇-磁盘阵列RAID(补充)
9、安装篇-集群搭建实践 (多主多从)
10、原理篇-消息的生产
11、原理篇-消息存储
12、原理篇-indexfile
13、原理篇-消息消费
14、原理篇-订阅关系的一致性
15、原理篇-offset管理
16、原理篇-消息的清理
17、原理篇-消费幂等
18、原理篇-消息堆积与消费延迟
19、应用篇-普通消息
20、应用篇-顺序消息
21、应用篇-延时消息
22、应用篇-事务消息
23、应用篇-批量消息
24、应用篇-消息过滤
25、应用篇-消息发送重试
26、应用篇-消息消费重试机制
27、应用篇-死信队列
28、高级功能汇总
29、消息发送案例汇总
30、RocketMQ整合SpringBoot
上一篇:安装篇-磁盘阵列RAID(补充)
下一篇:原理篇-消息的生产
<div style="display:none"></div> ## 1、集群架构 这里要搭建一个双主双从异步复制的Broker集群。为了方便,这里使用了两台主机来完成集群的搭建。这两台主机的功能与broker角色分配如下表。 | 序号 | 主机名 | IP | 功能 | broker角色 | | ---- | ----------- | --------------- | ------------------- | ---------------- | | 1 | rocketmqOS1 | 192.168.216.128 | NameServer + Broker | Master1 + Slave2 | | 2 | rocketmqOS2 | 192.168.216.129 | NameServer + Broker | Master2 + Slave1 | ## 2、克隆生成rocketmqOS1 克隆rocketmqOS主机,并修改配置。指定主机名为rocketmqOS1。 ## 3、修改rocketmqOS1配置文件 ### 3.1、配置文件位置 要修改的配置文件在rocketMQ解压目录的conf/2m-2s-async目录中。 ```shell [root@test001 conf]# cd /usr/mysoft/rocketmq-all-4.8.0-bin-release/conf/2m-2s-async/ [root@test001 2m-2s-async]# ll 总用量 16 -rw-r--r--. 1 root root 929 10月 23 2020 broker-a.properties -rw-r--r--. 1 root root 922 10月 23 2020 broker-a-s.properties -rw-r--r--. 1 root root 929 10月 23 2020 broker-b.properties -rw-r--r--. 1 root root 922 10月 23 2020 broker-b-s.properties ``` ### 3.2、修改broker-a.properties 将该配置文件内容修改为如下: ```properties brokerClusterName=DefaultCluster brokerName=broker-a brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.216.128:9876;192.168.216.129:9876 ``` ### 3.3、修改broker-b-s.properties 将该配置文件内容修改为如下: ```properties brokerClusterName=DefaultCluster brokerName=broker-b brokerId=1 deleteWhen=04 fileReservedTime=48 brokerRole=SLAVE flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.216.128:9876;192.168.216.129:9876 10911。由于当前主机同时充当着master1与slave2,而前面的master1使用的是默认端口。这 里需要将这两个端口加以区分,以区分出master1与slave2 listenPort=11911 slave2,master1使用的是默认路径,这里就需要再指定一个不同路径 storePathRootDir=~/store-s storePathCommitLog=~/store-s/commitlog storePathConsumeQueue=~/store-s/consumequeue storePathIndex=~/store-s/index storeCheckpoint=~/store-s/checkpoint abortFile=~/store-s/abort ``` ### 3.4、其它配置 除了以上配置外,这些配置文件中还可以设置其它属性。 ```properties #指定整个broker集群的名称,或者说是RocketMQ集群的名称 brokerClusterName=rocket-MS #指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=nameserver1:9876;nameserver2:9876 #默认为新建Topic所创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议生产环境中关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议生产环境中关闭 autoCreateSubscriptionGroup=true #Broker对外提供服务的端口,即Broker与producer与consumer通信的端口 listenPort=10911 #HA高可用监听端口,即Master与Slave间通信的端口,默认值为listenPort+1 haListenPort=10912 #指定删除消息存储过期文件的时间为凌晨4点 deleteWhen=04 #指定未发生更新的消息存储文件的保留时长为48小时,48小时后过期,将会被删除 fileReservedTime=48 #指定commitLog目录中每个文件的大小,默认1G mapedFileSizeCommitLog=1073741824 #指定ConsumeQueue的每个Topic的每个Queue文件中可以存放的消息数量,默认30w条 mapedFileSizeConsumeQueue=300000 #在清除过期文件时,如果该文件被其他线程所占用(引用数大于0,比如读取消息),此时会阻止 此次删除任务,同时在第一次试图删除该文件时记录当前时间戳。该属性则表示从第一次拒绝删除 后开始计时,该文件最多可以保留的时长。在此时间内若引用数仍不为0,则删除仍会被拒绝。不过 时间到后,文件将被强制删除 destroyMapedFileIntervalForcibly=120000 #指定commitlog、consumequeue所在磁盘分区的最大使用率,超过该值,则需立即清除过期文 件 di skMaxUsedSpaceRatio=88 #指定store目录的路径,默认在当前用户主目录中 storePathRootDir=/usr/local/rocketmq-all-4.5.0/store #commitLog目录路径 storePathCommitLog=/usr/local/rocketmq-all-4.5.0/store/commitlog #consumeueue目录路径 storePathConsumeQueue=/usr/local/rocketmq-all-4.5.0/store/consumequeue #index目录路径 storePathIndex=/usr/local/rocketmq-all-4.5.0/store/index #checkpoint文件路径 storeCheckpoint=/usr/local/rocketmq-all-4.5.0/store/checkpoint #abort文件路径 abortFile=/usr/local/rocketmq-all-4.5.0/store/abort #指定消息的最大大小 maxMessageSize=65536 #Broker的角色 brokerRole=SYNC_MASTER #刷盘策略 flushDiskType=SYNC_FLUSH #发消息线程池数量 sendMessageThreadPoolNums=128 #拉消息线程池数量 pullMessageThreadPoolNums=128 #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡 时IP地址可能读取错误 brokerIP1=192.168.3.105 ``` ## 4、克隆生成rocketmqOS2 克隆rocketmqOS1主机,并修改配置。指定主机名为rocketmqOS2。 ## 5、修改rocketmqOS2配置文件 对于rocketmqOS2主机,同样需要修改rocketMQ解压目录的conf目录的子目录2m-2s-async中的两个配置文件。 ### 5.1、修改broker-b.properties 将该配置文件内容修改为如下: ```shell brokerClusterName=DefaultCluster brokerName=broker-b brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.216.128:9876;192.168.216.129:9876 ``` ### 5.2、修改broker-a-s.properties 将该配置文件内容修改为如下: ```shell brokerClusterName=DefaultCluster brokerName=broker-a brokerId=1 deleteWhen=04 fileReservedTime=48 brokerRole=SLAVE flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.216.128:9876;192.168.216.129:9876 listenPort=11911 storePathRootDir=~/store-s storePathCommitLog=~/store-s/commitlog storePathConsumeQueue=~/store-s/consumequeue storePathIndex=~/store-s/index storeCheckpoint=~/store-s/checkpoint abortFile=~/store-s/abort ``` ## 6、启动服务器 ### 6.1、启动NameServer集群 分别启动rocketmqOS1与rocketmqOS2两个主机中的NameServer。启动命令完全相同。 ```shell cd /usr/mysoft/rocketmq-all-4.8.0-bin-release nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log ``` ### 6.2、启动两个Master 分别启动rocketmqOS1与rocketmqOS2两个主机中的broker master。注意,它们指定所要加载的配置文件是不同的。 **rocketmqOS1中执行:** ```shell cd /usr/mysoft/rocketmq-all-4.8.0-bin-release nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties & tail -f ~/logs/rocketmqlogs/broker.log ``` **rocketmqOS2中执行:** ```shell cd /usr/mysoft/rocketmq-all-4.8.0-bin-release nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties & tail -f ~/logs/rocketmqlogs/broker.log ``` ### 6.3、启动两个Slave 分别启动rocketmqOS1与rocketmqOS2两个主机中的broker slave。注意,它们指定所要加载的配置文件是不同的。 **rocketmqOS1中执行:** ```shell cd /usr/mysoft/rocketmq-all-4.8.0-bin-release nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties & tail -f ~/logs/rocketmqlogs/broker.log ``` **rocketmqOS2中执行:** ```shell cd /usr/mysoft/rocketmq-all-4.8.0-bin-release nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties & tail -f ~/logs/rocketmqlogs/broker.log ``` ## 7、dashboard中查看集群信息 > 如果安装了rocket dashboard,可以看到下面效果。 ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/357/0fab9593-7c70-487b-a4fe-609421335072.png) <a style="display:none" target="_blank" href="https://mp.weixin.qq.com/s/_S1DD2JADnXvpexxaBwLLg" style="color:red; font-size:20px; font-weight:bold">继续收门徒,亲手带,月薪 4W 以下的可以来找我</a> ## 最新资料 1. <a href="https://mp.weixin.qq.com/s?__biz=MzkzOTI3Nzc0Mg==&mid=2247484964&idx=2&sn=c81bce2f26015ee0f9632ddc6c67df03&scene=21#wechat_redirect" target="_blank">尚硅谷 Java 学科全套教程(总 207.77GB)</a> 2. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484192&idx=1&sn=505f2faaa4cc911f553850667749bcbb&scene=21#wechat_redirect" target="_blank">2021 最新版 Java 微服务学习线路图 + 视频</a> 3. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484573&idx=1&sn=7f3d83892186c16c57bc0b99f03f1ffd&scene=21#wechat_redirect" target="_blank">阿里技术大佬整理的《Spring 学习笔记.pdf》</a> 4. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484544&idx=2&sn=c1dfe907cfaa5b9ae8e66fc247ccbe84&scene=21#wechat_redirect" target="_blank">阿里大佬的《MySQL 学习笔记高清.pdf》</a> 5. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485167&idx=1&sn=48d75c8e93e748235a3547f34921dfb7&scene=21#wechat_redirect" target="_blank">2021 版 java 高并发常见面试题汇总.pdf</a> 6. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485664&idx=1&sn=435f9f515a8f881642820d7790ad20ce&scene=21#wechat_redirect" target="_blank">Idea 快捷键大全.pdf</a> ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/1/2883e86e-3eff-404a-8943-0066e5e2b454.png)
#custom-toc-container