1. 课程导论:Prometheus 辅助节点滚动升级的背景与挑战

1.1 为什么需要滚动升级?

在大型 Prometheus 部署中,辅助节点(Sidecar / Agent / 远端存储写入节点)承担着指标采集、预聚合、数据转发等关键职责。当我们需要升级 Prometheus 版本、调整采集配置、更新 relabel 规则或替换底层存储时,滚动升级(Rolling Upgrade) 是保证服务连续性的首选策略。

滚动升级的核心目标:

  • 零数据丢失:升级过程中不丢失已采集的指标数据。
  • 零查询中断:Grafana 等消费端始终可查询到最新指标。
  • 逐步替换:每次只升级一个或少数节点,避免全量故障。
关键认知:滚动升级不是简单的“重启 Pod”,而是需要精确控制流量、数据缓冲、写入窗口和副本状态的系统工程。

1.2 辅助节点滚动升级的典型挑战

实际运维中,辅助节点滚动升级常面临以下痛点:

挑战类别 具体问题 影响
数据一致性 升级期间节点下线,WAL 未完全 flush,导致小窗口数据丢失 指标断点,影响长期趋势计算
写入压力转移 节点下线后,上游采集器将流量转发给剩余节点,造成瞬时过载 OOM / 请求超时 / 背压崩溃
查询路由 Thanos / VictoriaMetrics 等查询层未及时感知节点状态变化 查询结果不完整或重复
版本兼容性 新旧版本 Prometheus 之间 WAL 格式、remote write 协议存在差异 写入失败或数据格式错误
回滚复杂度 升级失败后需要快速回退,但数据状态已部分变更 恢复时间长,影响 SLA
常见误区:很多团队只关注“升级动作本身”,而忽略了升级前容量评估和升级中流量模型变化,导致升级窗口内出现级联故障。

1.3 容量规划基线的定义

容量规划基线(Capacity Planning Baseline) 是指在滚动升级前,对辅助节点集群的 稳态资源消耗 和 峰值负载能力 进行量化的基准线。它包含以下核心维度:

  • CPU 使用率:正常采集 + 预聚合 + remote write 的 CPU 开销。
  • 内存占用:WAL 缓存、内存中时间序列块、查询缓存。
  • 磁盘 I/O:WAL 写入速率、TSDB block 压缩频率。
  • 网络吞吐:接收指标速率(samples/s)与发送速率。
  • 连接数:与上游采集器、下游存储之间的 gRPC/HTTP 连接。

基线的作用:

  1. 确定安全升级窗口:当集群负载低于基线 70% 时,可安全执行升级。
  2. 评估冗余容量:确保剩余节点能承接下线节点的流量。
  3. 设置告警阈值:升级期间若资源超过基线 120%,立即暂停或回滚。

1.4 容量规划基线的重要性

没有基线,滚动升级就是“盲人摸象”。以下是基线缺失的典型后果:

场景 无基线行为 有基线行为
节点下线 1 台 剩余节点 CPU 飙升 200%,触发 OOM 提前确认剩余节点有 40% 冗余,平稳承接
升级后写入延迟 无法判断是版本问题还是负载问题 对比基线,延迟增量在预期范围内
回滚决策 凭感觉决定是否回滚,容易误判 资源超过基线阈值,自动触发回滚
最佳实践:容量规划基线应持续更新,每次升级后重新校准,形成“基线-升级-验证-新基线”的闭环。

1.5 滚动升级与容量规划的关系图

下图展示了辅助节点滚动升级过程中,容量规划基线如何贯穿始终:

辅助节点滚动升级与容量规划基线关系图 稳态集群 CPU: 45% 内存: 60% 网络: 300MB/s 采集 容量规划基线 • 资源阈值 • 冗余容量 • 升级窗口 • 回滚条件 指导 滚动升级 节点 1 升级中 节点 2 待升级 节点 3 承接流量 升级后校准基线 Prometheus 监控 实时资源 & 告警 持续采集

1.6 课程目标与学习路径

本课程将帮助你构建一套可落地、可量化的容量规划基线体系,覆盖以下核心能力:

  • 基线采集:使用 Prometheus 自身指标 + 自定义 exporter 采集辅助节点资源画像。
  • 基线建模:基于历史数据建立 CPU/内存/网络/磁盘的稳态模型与峰值模型。
  • 升级模拟:通过“节点下线模拟”验证基线冗余容量是否充足。
  • 自动化执行:将基线阈值嵌入 CI/CD 管道,实现升级前自动检查。
  • 回滚策略:基于基线偏差自动触发回滚,减少人工决策延迟。
课程产出:一套完整的 Prometheus 辅助节点滚动升级容量规划基线模板 + Prometheus 告警规则 + 自动化脚本框架,可直接用于生产环境。