应急预案:如何调整RocketMQ的消息保留时间

应急预案:如何调整RocketMQ的消息保留时间

更新时间:2020-07-03 15:26:13

1. 概述

本文主要介绍在专有云环境中,如何调整RocketMQ的消息保留时间。

1.1. 适用范围

  • 专有云V2企业版,RocketMQ
  • 专有云V3企业版,RocketMQ

1.2. 用户告知

  • 适用平台:x86、ARM
  • 授权级别:L2(二线技术支持工程师)
  • 临时或固化方案:固化
  • 操作复杂度:中
  • 预估执行时长:10分钟
  • 业务影响:否
    说明:消息的保留时间会按照设置的值进行保留,需要业务评估消息保留时间是否符合实际需求。
  • 风险等级:中

2. 问题描述

在处理一些RocketMQ业务量激增的情况时,需要调整RocketMQ的消息保留时间。

3. 解决方案

3.1. 环境检查

  1. 登录天基控制台,在Project框中搜索mq,选择集群,单击集群右侧的集群运维中心,选择mq-broker服务与DeployBroker#服务角色,单击机器右侧的Terminal,登录任意一个对应的机器。
  2. 执行以下命令,查看deploy-broker容器ID。
    sudo docker ps | grep deploy-broker
    说明:专有云V2环境如何登录容器,请参见专有云V2环境中如何登录容器
  3. 执行以下命令,进入deploy-broker容器。

    sudo docker exec -it [$Docker_ID] bash

    说明:[$Docker_ID]指deploy-broker容器ID。

  4. 执行以下命令,查看集群状态。
    sh /home/admin/rmq/bin/mqadmin clusterList
    系统显示类似如下。

    说明:Cluster Name列对应的名称即为集群名称。
  5. 执行以下命令,备份broker.conf文件。
    注意:所有deploy-broker容器的broker.conf文件都需要进行备份,本文将broker.conf文件备份到/usr/local目录为例。
    cp /home/admin/rmq/conf/broker.conf /usr/local
    系统显示类似如下。

3.2. 实施步骤

  1. 在任意一个deploy-broker容器中,执行以下命令,调整消息保留时间。
    sh /home/admin/rmq/bin/mqadmin updateBrokerConfig -c [$Cluster] -k fileReservedTime -v 48
    说明:[$Cluster]为集群名。
    系统显示类似如下。
  2. 执行以下命令,修改Broker备机中fileReservedTime的值。
    sh /home/admin/rmq/bin/mqadmin updateBrokerConfig -b [$IP]:10911 -k fileReservedTime -v 48
    说明:[$IP]为每个deploy-broker容器的IP地址。
    系统显示类似如下。

    如果执行中发生网络超时问题,可登录到该网络超时的容器中执行以下命令。
    sh /home/admin/rmq/bin/mqadmin updateBrokerConfig -b [$IP]:10911 -k fileReservedTime -v 48
  3. 查看集群所有deploy-broker容器的/home/admin/rmq/conf/broker.conf配置文件,检查相应参数与第1步、第2步设置的值是否匹配,如果不匹配,则修改使之匹配。

3.3. 结果验证

  1. 在deploy-broker容器中,执行以下命令,验证集群中所有Broker的fileReservedTime对应的值。
    sh /home/admin/rmq/bin/mqadmin getBrokerConfig -c [$Cluster]| grep fileReservedTime
    系统显示类似如下。
  2. 执行以下命令,验证各个Broker节点fileReservedTime对应的值。
    sh /home/admin/rmq/bin/mqadmin getBrokerConfig -b [$IP]:10911 –k fileReservedTime
    系统显示类似如下。
  3. 登录所有deploy-broker容器,查看/home/admin/rmq/conf/broker.conf配置文件,验证fileReservedTime对应的值,确认与实施步骤中第1步、第2步设置的值匹配。

4. 回滚方案

  1. 在任意一个deploy-broker容器中,执行以下命令,调整消息保留时间。
    sh /home/admin/rmq/bin/mqadmin updateBrokerConfig -c [$Cluster] -k fileReservedTime -v 72
    说明:72为初始值。
  2. 执行以下命令,修改Broker备机中fileReservedTime的值。
    sh /home/admin/rmq/bin/mqadmin updateBrokerConfig -b [$IP]:10911 -k fileReservedTime -v 72
  3. 查看集群所有deploy-broker容器的/home/admin/rmq/conf/broker.conf配置文件,检查参数值是否与回滚方案第1步、第2步设置的值相匹配,如果不匹配,则修改使之匹配。
  4. 执行以下命令,依次恢复集群中所有deploy-broker容器的broker.conf备份文件。
    cp /usr/local/broker.conf /home/admin/rmq/conf/broker.conf