跳到主要内容
版本:Nightly

概述

Autopilot 是 GreptimeDB Enterprise 中用于自动优化集群负载和数据分布的能力。它运行在 Metasrv 中,通过持续收集 Datanode 和 Region 的写入统计信息,在满足条件时自动提交调度动作,减少人工排查热点和手动调整集群的运维成本。

Autopilot 当前包括以下能力:

  • Region Balancer:自动迁移热点 Region,使 Datanode 之间的写入负载更均衡。
  • Auto Repartition:自动将大 Region 拆分为多个小 Region,避免单个大 Region 成为性能瓶颈。拆分后的 Region 可以被调度到不同 Datanode 上,从而打散潜在的负载瓶颈。

工作方式

Autopilot 由共享的运行时、集群统计信息和不同的调度策略组成:

  • 运行时:按照固定间隔触发一次调度周期。
  • 集群统计信息:通过 Datanode heartbeat 收集 Region 写入统计信息,并对短期波动进行平滑。
  • 调度策略:根据统计信息判断是否需要迁移 Region 或拆分大 Region。
  • 执行器:将调度策略生成的动作提交给对应的执行流程,例如 Region Migration 或 Repartition。

当同时启用 Region Balancer 和 Auto Repartition 时,它们共享同一套 Autopilot 运行时和集群统计信息。

什么时候使用 Autopilot

Autopilot 适合以下场景:

  • 集群中部分 Datanode 的写入负载长期明显高于其他 Datanode;
  • 某些大 Region 可能成为性能瓶颈,需要拆分成多个小 Region;
  • 希望减少手动分析负载瓶颈、手动执行 Region Migration 或 Repartition 的运维成本。

限制

不同 Autopilot 策略有各自的适用限制:

  • Region Balancer 要求可调度的 Region 数量大于活跃 Datanode 数量。否则即使迁移 Region,也无法让 Datanode 之间的负载变得均衡。
  • Auto Repartition 仅对多分区表有效,只能拆分已经带有分区规则的表。如果表没有分区规则,Auto Repartition 不会为它自动生成新的分区规则。关于表分区和重分区的说明,请参考表分片重分区

配置

Autopilot 的配置分为共享配置和策略配置:

  • plugins.autopilot:配置 Autopilot 运行时。
  • plugins.cluster_stat:配置 Datanode 和 Region 写入统计信息的采样和平滑方式。
  • plugins.region_balancer:启用并配置 Region Balancer。
  • plugins.auto_repartition:启用并配置 Auto Repartition。

下面的示例展示了同时启用 Region Balancer 和 Auto Repartition 的推荐配置:

[[plugins]]
[plugins.autopilot]
tick_interval = "45s"

[[plugins]]
[plugins.cluster_stat]
sampling_window = "45s"
max_history_windows = 5
ewma_alpha = 0.2

[[plugins]]
[plugins.region_balancer]
acceptable_load_ratio = 0.12
min_load_threshold = "4MB"
region_migration_cooldown_period = "1h"
window_stability_threshold = 2

[[plugins]]
[plugins.auto_repartition]
split_trigger_ratio = 1.8
max_split_parts = 3
table_repartition_cooldown_period = "60s"
max_actions_per_tick = 4
max_actions_per_table_per_tick = 2

如果只需要其中一个策略,可以只配置对应的 plugins.region_balancerplugins.auto_repartition

Autopilot 运行时配置

配置项默认值说明
tick_interval"45s"Autopilot 的调度周期。较短的周期可以更快响应负载变化,但可能增加调度开销。

集群统计配置

配置项默认值说明
sampling_window"45s"每个统计窗口的时间跨度。较大的窗口会平滑短期波动,但响应会更慢。
max_history_windows5保留的历史统计窗口数量。Region Balancer 和 Auto Repartition 会基于历史窗口判断负载是否稳定。
ewma_alpha0.2EWMA 平滑系数。值越大,统计结果越偏向最新观测值;值越小,统计结果越平滑。

下一步