菜单
开源

对 Grafana Mimir 执行滚动更新

您可以使用滚动更新策略对 Grafana Mimir 应用配置更改,并将 Grafana Mimir 升级到新版本。滚动更新不会导致 Grafana Mimir 停机。

单体模式

当您以单体模式运行 Grafana Mimir 时,一次只对一个实例进行滚动更新。在对实例应用更改并重启实例后,其 /ready 端点返回 HTTP 状态码 200,这意味着您可以继续对另一个实例进行滚动更新。

注意

当您在 Kubernetes 上运行 Grafana Mimir 时,要一次只对一个实例进行滚动更新,请将 DeploymentStatefulSet 的更新策略配置为 RollingUpdate 并将 maxUnavailable 设置为 1

微服务模式

当您以微服务模式运行 Grafana Mimir 时,可以同时对每个无状态组件的多个实例进行滚动更新。您还可以并行对多个无状态组件进行滚动更新。有状态组件有以下限制:

  • Alertmanager:一次最多只能对两个 Alertmanager 进行滚动更新。
  • Ingester:一次只能对一个 Ingester 进行滚动更新。
  • Store-gateway:一次最多只能对两个 Store-gateway 进行滚动更新。

注意

如果您为组件启用了区域感知复制,则可以同时对同一区域中的所有组件实例进行滚动更新。

Alertmanager

Alertmanager 在内存中存储告警状态。当 Alertmanager 重启时,存储在其上的告警在 Alertmanager 再次运行之前不可用。

默认情况下,Alertmanager 会将每个租户的告警复制到三个 Alertmanager。当每个租户在其分片中至少有一个健康的 Alertmanager 时,告警通知和可视化才能成功。

为确保在滚动更新期间不会发生告警通知、接收或可视化失败,一次最多只能对两个 Alertmanager 进行滚动更新。

注意

如果您为 Alertmanager 启用了区域感知复制,则可以同时对同一区域中的所有 Alertmanager 进行滚动更新。

Ingester

Ingester 在内存中存储最近接收到的样本。当 Ingester 重启时,存储在重启中的 Ingester 的样本在 Ingester 再次运行之前不可用于查询。

默认情况下,Ingester 以复制因子等于 3 运行。以复制因子 3 运行的 Ingester 需要两份实例的仲裁才能成功查询任何时间序列样本。由于时间序列在所有 Ingester 中分片,Grafana Mimir 最多可以容忍一个不可用的 Ingester。

为确保在滚动更新期间不会发生查询失败,一次只能对一个 Ingester 进行滚动更新。

注意

如果您为 Ingester 启用了区域感知复制,则可以同时对同一区域中的所有 Ingester 进行滚动更新。

Store-gateway

Store-gateway 在运行中的实例之间分片块。默认情况下,每个块复制到三个 Store-gateway。当每个所需块至少被一个 Store-gateway 加载时,查询才能成功。

为确保在滚动更新期间不会发生查询失败,一次最多只能对两个 Store-gateway 进行滚动更新。

注意

如果您为 Store-gateway 启用了区域感知复制,则可以同时对同一区域中的所有 Store-gateway 进行滚动更新。