RocketMQ如何像德芙那样丝滑缩容

这里是weihubeats ,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党

RocketMQ 版本

  • 5.1.0

背景

大促期间为了保证RocketMQ的稳定性,进行了扩容,扩容实战相关的操作博文之前也提到过

可以参考这里 RocketMQ无损扩容实战:weihubeats.blog.csdn.net/article/det...

实操

正常的操作流程是如何的呢?

  1. 停写broker
  2. broker上面没有消息需要消费后,下线broker

RocketMQ停写之前分析过有两种

  1. 仅更新Nameserve内存中的broker的写入权限,不实际去更新broker的写入权限
  2. 更新broker的写入权限

1这种方式更适合broker升级更新,broker重启重新注册到Nameserve写入权限就会恢复

我们本次要缩容,所以直接更新broker的写入权限即可

broker停写

  1. cd到部署目录
sh 复制代码
cd /home/ubuntu/rocketmq/distribution/target/rocketmq-5.1.0/rocketmq-5.1.0
  1. 执行停写
sh 复制代码
sh bin/mqadmin updateBrokerConfig -b 192.168.1.2:30911 -k brokerPermission -v 4

观察集群流量

less 复制代码
#Cluster Name           #Broker Name            #BID  #Addr                  #Version              #InTPS(LOAD)     #OutTPS(LOAD)  
xiaozoujishu            broker-c                0     192.168.1.11:30911    V5_1_0                 0.00(0,0ms)       1.40(0,0ms) 
xiaozoujishu            broker-c                2     192.168.1.6:30911     V5_1_0                 0.00(0,0ms)       0.00(0,0ms) 
xiaozoujishu            broker-d                0     192.168.1.4:30911     V5_1_0              xxxx.76(0,0ms)    xxxx.33(0,0ms)
xiaozoujishu            broker-d                1     192.168.1.3:30911     V5_1_0              xxxx.76(0,0ms)       0.00(0,0ms) 
xiaozoujishu            broker-e                0     192.168.1.8:30911     V5_1_0              xxxx.27(0,0ms)    xxxx.11(0,0ms) 
xiaozoujishu            broker-e                2     192.168.1.2:30911     V5_1_0              xxxx.85(0,0ms)       0.00(0,0ms) 
xiaozoujishu            broker-f                0     192.168.1.9:30911     V5_1_0              xxxx.76(0,0ms)    xxxx.33(0,0ms)  
xiaozoujishu            broker-f                2     192.168.1.1:30911     V5_1_0              xxxx.71(0,0ms)       0.00(0,0ms)

可以看到broker-c集群中的 brokerInTPS写入流量已经为0了,OutTPS还有少量流量

观察消费者流量

sh 复制代码
sh bin/mqadmin brokerConsumeStats -b 192.168.1.11:30911 -n 192.168.1.22:9876
  • 展示
yaml 复制代码
#Topic                                                            #Group                                                    #Broker Name                      #QID  #Broker Offset        #Consumer Offset      #Diff                 #LastTime
%RETRY%GID_INFO_xiaozou                                            GID_INFO_xiaozou                                         broker-c                          0     12614511              12614511             0                      2023-12-11 21:42:17
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          0     321996960             321996960             0                     2023-12-11 21:42:19
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          1     482991618             482991618             0                     2023-12-11 21:42:18
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          2     483209653             483209653             0                     2023-12-11 21:42:19
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          3     482440511             482440511             0                     2023-12-11 21:42:17
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          4     486478174             486478174             0                     2023-12-11 21:42:18
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          5     485433955             485433955             0                     2023-12-11 21:42:19
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          6     483460016             483460016             0                     2023-12-11 21:42:19
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          7     882383062             882383062             0                     2023-12-11 21:42:17
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          8     485121973             485121973             0                     2023-12-11 21:42:19
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          9     781475152             781475152             0                     2023-12-11 21:42:17
xiaozou                                                            GID_INFO_xiaozou                                         broker-c                          10    585496105             585496105             0                     2023-12-11 21:42:17

正常刚停写是还会有一些消息待消费的,就是diff不为0.我这里是停写很久了,所以所有消息都消费完了

我们等到所有的diff都为0,代表没有消息需要消费了。

这个时候就可以停掉broker

停止broker

待没有滞留消息后我们直接kill broker即可。这里推荐先killslave broker,然后再kill slave broker 不要使用kill -9

停止完成后即可回收我们的机器了

总结

总的来说缩容还是比较简单的,就是broker停写,然后等broker上面的消息都消费完成后即可下线。

下线的时候先下线slave,然后是master。避免出现主从自动切换

相关推荐
字节逆旅1 小时前
从一次爬坑看前端的出路
前端·后端·程序员
Chan161 小时前
【智能协同云图库】第七期:基于AI调用阿里云百炼大模型,实现AI图片编辑功能
java·人工智能·spring boot·后端·spring·ai·ai作画
mitt_2 小时前
go语言变量
开发语言·后端·golang
无限大62 小时前
二维数组搜索:从暴力地毯到二分神技的奇幻之旅
后端
bobz9653 小时前
最近玩了好多把 LOL
后端
爱欲无极3 小时前
基于Flask的微博话题多标签情感分析系统设计
后端·python·flask
cwkiller3 小时前
heapdump深度利用之信息泄露篇
后端
Olrookie6 小时前
若依前后端分离版学习笔记(五)——Spring Boot简介与Spring Security
笔记·后端·学习·spring·ruoyi
小白的代码日记6 小时前
基于 Spring Boot 的小区人脸识别与出入记录管理系统实现
java·spring boot·后端
Chaney不会代码6 小时前
Java7/8中的HashMap深挖
后端