Skip to main content

容量规划

参考概述▸ ,容量规划是帮助 RocketMQ 运维人员快速评估容量基线并实现面向未来的容量预测和预警系统。使用容量规划可以基于历史用量情况智能预测出未来一段时间的用量,从而提前预警和规划扩缩容资源。

本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。

容量规划介绍

针对 RocketMQ 集群进行容量规划,用户需要依次完成如下操作:

  • 评估容量基线:容量规划的前提是需要评估每个集群的性能基线,即每台机器安全的容量水位上限。只有明确了容量基线后,才能合理判断用量是否超限。
  • 设置预警规则:用户可以为集群设置一个水位预警线,未来一个时间区间内如果预测到用量超过水位预警线,则可以提前感知告警,并准备扩容资源。
  • 增加临时业务规划(可选):对于常规的容量规划,智能预测可以精准地拟合预测曲线,但如果存在突发临时的业务规划,比如大促、临时高峰情况,用户也可以手动增加业务规划调整预测曲线。

基于上述操作,RocketMQ 容量规划主要提供了如下的预测曲线规划图。

容量基线配置

RocketMQ Copilot 根据多年运维经验,抽取了 RocketMQ 集群运行的核心 Metrics 作为评价集群容量的指标。具体基线指标定义如下:

容量基线指标度量单位业务含义
消息生产 TPS- 单位:次/秒
- 度量:按照用户业务场景,统计集群内所有 Topic 的每秒消息生产次数。
生产 TPS 代表了消息生产的业务调用量,代表 RocketMQ 集群的核心计算成本。
消息消费 TPS- 单位:次/秒
- 度量:按照用户业务场景,统计集群内所有 Topic 的每秒消息消费次数。
消费 TPS 代表了消息消费的业务调用量,代表 RocketMQ 集群的核心计算成本。
磁盘空间占用- 单位:GB
- 度量:统计集群保存消息实际占用的磁盘空间。
磁盘空间占用代表了保存消息的容量消耗,代表了RocketMQ 集群的存储成本。
磁盘 IO 使用- 单位:IOUtil,百分比
- 度量:统计集群消耗磁盘的 IO使用率,用于度量存储 IO 的压力。
磁盘 IO 使用代表了保存消息的存储能力消耗,代表了RocketMQ 集群的存储成本。

RocketMQ Copilot 按照节点粒度配置容量基线,并自动根据集群的拓扑结构计算当前集群整体的容量基线。

部署 RocketMQ 集群需要避免不同节点使用不同规格的机器,这样会造成评估误差。

容量预警规则

容量预警规则用来约定 RocketMQ 集群内各个基线指标未来消耗

容量预警规则是用户针对特定集群未来一个预警周期内进行容量水位预警的管理规则。容量预警规则主要包括如下信息。

属性:预警水位

预警水位是 RocketMQ Copilot 针对容量基线配置而设置的用量百分比,预警水位的百分比是相对于容量基线配置而定义。当集群内核心容量指标使用超过指定的百分比阈值后会触发预警事件。

在设置预警水位时,RocketMQ Copilot 默认推荐按照容量基线的 70%配置,用户也可根据实际运行经验调整预警水位。

属性:通知告警开关

如果容量规划模块预测未来用量超过预警水位后,该开关用于控制系统是否发送通知告警。默认是关闭状态,如果用户期望收到容量预警的告警通知,则可以打开开关并配置告警策略。

属性:通知规则

通知规则用于约定报警系统处理通知的细节流程,主要包括静默方式以及 webhook 通道的配置。

静默方式

静默方式用于配置连续触发告警通知时,如何做合并和静默,避免频繁的告警通知疲劳。

RocketMQ 静默支持:

  • 连续触发告警通知的情况下,确保在 N 分钟内只发送一次通知。
  • 连续触发 N 个通知后,则不再通知,直到报警恢复。

webhook 通道

webhook 通道用于配置发送告警通知的目标通道信息,此处直接引用已经创建存在的 webhook,如果当前没有可用的 webhook,则需要先创建再配置报警规则。创建 webhook 参考不存在的标题▸

RocketMQ Copilot 当前支持提前 7 天产生预警通知。如果收到预警通知,用户可以在 7 天内完成集群的运维扩容操作。

使用容量规划

参考概述▸ 流程,使用 RocketMQ Copilot 进行容量规划主要包括创建容量规划配置、查看容量规划预测、添加临时业务规划等操作。

创建容量规划

  1. 登录 RocketMQ Copilot,进入集群治理,点击容量规划功能。
  2. 创建新的容量规划,按照表单提示填写容量规划名称,选择目标集群。每个集群只能创建一个容量规划配置。
  3. 设置容量基线,RocketMQ Copilot 会根据当前集群的机器规格自动推荐容量基线,用户也可以自定义调整容量基线。
  4. 设置预警水位。
  5. 如果期望收到容量预警通知,可以打开容量预警通知开关并配置相关的通知规则。
  6. 用户可预览每个指标的容量规划详情,确认后创建。

容量预测需要采集一定数量的历史数据才能生成预测曲线。新接入的集群如果缺乏足够的历史数据则会展示数据不足,无法预测的状态。

RocketMQ Copilot 默认按照 T+1 时效完成初始预测迭代,建议添加集群一天后观察预测曲线。

查看容量规划预测

创建容量规划后,用户可以随时查看容量规划配置,并调整相关的容量基线、预警水位和通知规则等配置。

  1. 登录 RocketMQ Copilot,进入集群治理,点击容量规划功能。
  2. 找到目标集群的容量规划配置,点击查看详情,可以查看对应集群的历史用量、预测用量以及基线和预警水位等信息。

添加临时业务规划

当业务出现短期、临时的业务规划,例如双十一大促,默认的拟合预测无法精准匹配,需要用户手工管理临时业务规划。

RocketMQ Copilot 按照时间段管理临时业务规划,即用户可以为任意时间段添加唯一的业务规划,手工指定当前时间段预估的业务量。

为防止不同的业务规划版本冲突, RocketMQ Copilot 在每个时间段范围内仅支持创建一个临时业务规划。如果时间段冲突,建议拆分后修改对应时间段的规划。