千家信息网

RocketMQ集群生产环境master节点节点优雅下线

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,1,现状描述由于某些原因,导致rocketmq集群中某个master节点不能正常服务,需要为master节点做流量迁移动作,已确保消息不丢失配置策略为:异步刷盘主从异步复制如果直接下线该master,
千家信息网最后更新 2024年11月14日RocketMQ集群生产环境master节点节点优雅下线

1,现状描述

由于某些原因,导致rocketmq集群中某个master节点不能正常服务,需要为master节点做流量迁移动作,已确保消息不丢失配置策略为:

  • 异步刷盘

  • 主从异步复制

如果直接下线该master,由于主从异步复制,可能导致部分消息来不及复制到slave造成消息丢失。所以该方案不可行。
另一种方案选择:关闭该broker的写入权限,待该broker不再有写入和消费时,再下线该节点。

2.关闭broker写权限


2表示只写权限,4表示只读权限,6表示读写权限

#bin/mqadmin updateBrokerConfig -b broker:port -n nameserver:prot -k brokerPermission -v 4

3.观察节点流量

#bin/mqadmin clusterList -n nameserver:prot

观察InTPS和OutTPS,理想情况都为零时,并不再变化时,则该节点可下线了。
然而,在实际过程中并没有出现为零的情况,InTPS和OutTPS总是有值,有时个位数字有时是两位数字,大部分时间在20多的值。此刻要分析下broker目前的消费状态。

4.观察broker消费状态

#sh bin/mqadmin brokerConsumeStats -b broker:prot -n nameserver:prot >> brokerConsumeStats.tmp

查看brokerConsumeStats.tmp,主要查看#LastTime和#Diff。发现%RETRY%重试类队列#Diff有很微小(1或者3)的数据,而其他topic均为0. LastTime时间最新也是发生在%RETRY%队列中。此时可以让该节点下线操作。

5.borker读写权限恢复

#bin/mqadmin updateBrokerConfig -b broker:port -n nameserver:prot -k brokerPermission -v 6

观察各节点流量是否正常

#bin/mqadmin clusterList -n nameserver:prot






0