跳到主要内容

文章

在 CAO 下对 Couchbase Server 做滚动升级(节奏控制 + 暂停门控)

面向支持与 SRE 团队的可复制 runbook:预检、逐节点 swap-rebalance、XDCR 策略、回滚触发条件与签收检查

  • 阅读约 1 分钟

升级是数据库可靠性被证明或被打破的时刻。本文提供面向支持的节奏控制 runbook,用于在 Couchbase Autonomous Operator(CAO) 下升级 Couchbase Server,利用原生字段 spec.paused 在节点之间门控进度。结果是:一次一个节点、交换之间有稳定窗口、信号更清晰、回滚窗口更大。

参考拓扑

典型的 AKS 上 Couchbase 拓扑

节奏控制升级循环

节奏控制升级循环

目标

  • 以最小风险升级 Couchbase Server。
  • 在节点之间保持刻意的暂停 + 稳定 + 健康检查窗口。
  • 在可行范围内尽可能长时间保留回滚选项。

升级前检查清单(不可跳过)

  • 全部绿灯:集群阶段为 Available,无活动 rebalance,无 Warning 事件。
  • 备份最新且可恢复:已完成全量备份;已做过恢复演练或清楚所需时间。
  • 记录回滚标签:确认旧镜像仍存在且可拉取。
  • 记录 XDCR 决策:生产升级期间禁用以获得干净信号(推荐),或在预生产保持运行以演练行为。

快速验证命令

export ENV=dev
export REGION=west
export NS=couchbase-${ENV}-${REGION}

kubectl -n "$NS" get couchbasecluster -o wide
kubectl -n "$NS" get pods -l app=couchbase
kubectl -n "$NS" get events --field-selector type=Warning | tail -20
kubectl -n "$NS" get couchbasecluster "$NS" -o jsonpath='paused={.spec.paused} phase={.status.phase} rebalance={.status.rebalanceProgress}{"\n"}'

执行路径

  • 首选:从 CI workflow 运行升级(先 dry-run,再正式执行)。
  • 备选:在 workstation 上运行节奏控制升级脚本(先 dry-run,再正式执行)。

监控信号(支持应关注什么)

  • Pod 镜像:从旧 → 新切换;理想情况是一次一个 swap。
  • 暂停状态:稳定期间 spec.paused 为 true;切勿无人值守地保持 true。
  • Rebalance:在 swap 之间回到 none;持续 rebalance 需排查。
  • XDCR:changes_left 在 rebalance 时升高,在稳定期下降;无法下降是事件信号。
  • 重启:swap 后任何意外重启都是红旗。

回滚触发条件

  • 节点在超时窗口内未变为健康。
  • Rebalance 失败,且调查后单次重试无法解决。
  • 应用错误率超过约定容差。
  • XDCR 在约定恢复窗口后仍未恢复。
  • 任何 bucket 不可用(缺失 vbuckets)——按 P1 处理。

升级后验证(签收)

  • 所有 pod 使用目标镜像
  • 集群阶段为 Available
  • 30+ 分钟内无新的 Warning 事件
  • 升级后备份成功
  • XDCR 稳态已恢复(若使用)
  • 应用仪表盘持续绿灯 30+ 分钟

提示:若想先看更短的叙事版,从博客概览开始:带 CAO 暂停门控的 Couchbase 升级。