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集群中的 broker的 InTPS写入流量已经为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即可。这里推荐先kill掉slave broker,然后再kill slave broker 不要使用kill -9

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

总结

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

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

相关推荐
金銀銅鐵6 小时前
[Java] 用 CLI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
陈随易6 小时前
副业搞钱点子之收入查看器
前端·后端
Profile排查笔记6 小时前
浏览器指纹逆向怎么分析:从网络请求追踪到 JavaScript 采集链
前端·人工智能·后端·自动化
lazy H6 小时前
【计算机网络】第 5 篇:TCP 和 UDP 有什么区别?从 Java 后端场景理解两种传输协议
经验分享·后端·网络协议·tcp/ip·计算机网络·1024程序员节
东宇科技7 小时前
crmeb开源版本安装步骤2026-10-20
后端·php·crmeb
IT_Octopus7 小时前
Apollo 配置中心入门:一所“小学校“读懂 Portal、Meta Server、Config Service
java·后端·spring
CHHH_HHH8 小时前
【Linux网络篇】初识网络与Socket编程基础
linux·服务器·c语言·开发语言·网络·后端·1024程序员节
弦儿8 小时前
后端 Web 实战:员工管理(新增员工 + 事务管理 + 文件上传)
java·后端
Gopher_HBo8 小时前
Go reflect包值操作 Value 的读写、可设置性与 interface 布局
后端
excel8 小时前
用 Node.js 搭建一套可持续获客的 SEO 内容系统:前端工程师 30 天实战方案
前端·后端