云原生与容器 · 高级

etcd 快照与隔离恢复演练

以 etcd 3.6 工具链验证快照可恢复性,覆盖完整性、隔离新集群、revision 边界、客户端验收和回退停止点。

Kubernetes监控告警高可用

场景目标

对一个批准的快照完成离线检查和隔离恢复,形成文件完整性、新逻辑集群启动、计划内客户端同步三个独立验收结果;实测恢复耗时并与 RPO/RTO 对照,证明原成员、生产客户端和外部业务不会接入演练,保留未覆盖的业务数据依赖与恢复边界。

环境要求

以 etcd 3.6 服务端、etcdctl 与 etcdutl 支持组合为参考,实施前记录 Kubernetes 和发行版兼容要求。需要受审阅 TLS 管理配置、受控备份副本、专用隔离主机与新目录、独立证书和网络限制、足够恢复与保留空间。备份获取、原集群状态查询、隔离服务启动与客户端测试分别授权;KMS、API Server 加密配置和外部依赖必须纳入清单。预计 180 分钟用于小规模隔离演练,文件传输、大容量恢复和完整业务验证另计。不得在原生产数据目录执行恢复。

参考架构 · 非实时拓扑

etcd 快照到隔离新逻辑集群的恢复架构

受控快照副本先做离线校验,再恢复到独立成员和新目录;新集群只向隔离测试客户端开放,文件完整、服务启动与客户端同步分别验收。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

etcd 快照到隔离新逻辑集群的恢复架构:组件关系图受控快照副本先做离线校验,再恢复到独立成员和新目录;新集群只向隔离测试客户端开放,文件完整、服务启动与客户端同步分别验收。 原 etcd 集群 → 受控快照副本:受控快照取得;受控快照副本 → etcdutl:副本离线输入;恢复参数与依赖 → etcdutl:参数与隔离审阅;etcdutl → 隔离 etcd 新集群:写入全新目录;隔离 etcd 新集群 → 隔离测试客户端:受控验证响应;隔离 etcd 新集群 → 演练证据记录:新成员与健康证据;隔离测试客户端 → 演练证据记录:同步与业务样本。箭头说明见下方流向解读。
基于 etcd 3.6 的隔离恢复逻辑参考图,不包含生产回接或强制重建;所有演练结果仍待目标环境验证。

恢复参数与依赖

控制 / 治理

审阅新成员、TLS、网络和 revision 处理;KMS 与 API Server 加密材料分开保管,不输出秘密。

全部组件职责 7 个组件
恢复参数与依赖
审阅新成员、TLS、网络和 revision 处理;KMS 与 API Server 加密材料分开保管,不输出秘密。
受控快照副本
保留唯一可用备份的原件,登记快照来源、年龄、revision 与传输校验,失败时不跳过校验。
原 etcd 集群
本场景只在批准范围读取状态或取得快照,不停止原成员,不改变原有生产客户端入口。工具介绍 原 etcd 集群
etcdutl
使用匹配工具校验并恢复同一快照副本到各自全新目录,离线恢复不自动启动服务。工具介绍 etcdutl
隔离 etcd 新集群
只连接批准的新成员;独立地址、证书、目录和网络限制阻断原 peer 及生产客户端。工具介绍 隔离 etcd 新集群
演练证据记录
分开记录传输、恢复、启动与客户端验收耗时,保留多成员、外部数据库及持久卷的未覆盖项。
隔离测试客户端
按批准范围验证对象读取、加密依赖及重新同步;测试控制器不能触达真实云 API、Webhook 或业务写接口。工具介绍 隔离测试客户端
流向解读 7 条连接
  1. 1

    原 etcd 集群 受控快照副本

    数据 / 请求 · 受控快照取得

    表示获批备份或既有备份副本的取得,不是生产与演练集群持续复制。

  2. 2

    受控快照副本 etcdutl

    数据 / 请求 · 副本离线输入

    校验通过后才用于恢复,原件保持不变。

  3. 3

    恢复参数与依赖 etcdutl

    控制 / 管理 · 参数与隔离审阅

    根据快照年龄和客户端缓存评估 revision bump/mark-compacted,不机械复用固定增量。

  4. 4

    etcdutl 隔离 etcd 新集群

    数据 / 请求 · 写入全新目录

    恢复生成新逻辑集群数据与成员身份;启动服务另经已批准的演练配置。

  5. 5

    隔离 etcd 新集群 隔离测试客户端

    观测 / 查询 · 受控验证响应

    只返回隔离客户端获准读取和 watch 的结果,不存在图中的生产接管路径。

  6. 6

    隔离 etcd 新集群 演练证据记录

    观测 / 查询 · 新成员与健康证据

    验证实际集群身份、成员及运行状态,单成员启动不代表多成员多数已验证。

  7. 7

    隔离测试客户端 演练证据记录

    观测 / 查询 · 同步与业务样本

    分别记录实际执行、替代证据和未验证项目,不将备份成功写成业务恢复成功。

从架构到实施

  1. 01

    确定备份与依赖能否用于恢复

    明确版本和目标,取得可追溯副本并检查完整性、年龄及加密依赖材料。

  2. 02

    只在隔离边界内生成新集群

    先验收网络及成员清单,再审阅 revision 参数,最后恢复到与生产无关的新目录。

  3. 03

    把启动成功与客户端成功分开

    通过独立客户端验证读取和 watch 重新同步,按实际覆盖范围记录耗时与结论。

故障域与操作边界

禁止演练集群与生产互联

新 token 不能代替 TLS 与网络隔离;原成员、生产 API Server 和外部业务不能连接演练端点。

etcd 快照不是全部业务备份

业务数据库、持久卷、密钥与 KMS 等依赖另有恢复责任,不能据此宣称应用已整体恢复。

演练不授权正式接管

本图不执行强制新集群或生产切流,真实多数丢失后的恢复需单独批准和完整依赖评审。

架构依据与版本核对 1 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

方案说明

适用架构

适用于自管 etcd 的定期备份恢复演练,以受控快照副本在隔离环境建立新的逻辑集群。生产多数丢失后的正式恢复需要另行批准,本场景不自动停机或切换现有控制面。托管 Kubernetes 使用服务商支持的恢复通道,不能推断具备 etcd 直连权限。

安全与版本边界

内容为 PENDING(待环境验证),不是已部署或已完成演练的记录。示例以 etcd 3.6 为基准:etcdctl 保存快照,etcdutl 检查与恢复;其他版本重新核对工具支持。新集群使用新目录、成员身份和隔离地址,不能与原成员及生产客户端互联。revision bump 与 mark-compacted 必须按客户端缓存、快照年龄及工具参数支持审阅,不机械使用固定增量。

全局验收

分别证明快照文件完整、隔离 etcd 可启动、计划内客户端可按快照时间点正确同步,并记录所有未测试项。备份成功不等于恢复验证,单成员启动不等于已验证多成员多数与生产接管。etcd 恢复不能代替业务数据库、持久卷、密钥材料和外部依赖恢复。

配套内容

官方参考

工具编排

3 个关联工具
  1. etcd快照与新逻辑集群由 etcdctl 保存受控快照,etcdutl 离线检查及恢复到新的隔离数据目录。
  2. Kubernetes依赖客户端验证仅在隔离环境验证 API 对象读取、加密依赖及 watch 客户端重新同步,禁止接入生产控制器。
  3. Prometheus恢复时间与运行观察使用受控监控记录备份年龄、演练状态与恢复耗时,不把备份任务成功等同于业务恢复。

实施步骤

共 8 步
  1. 01

    明确恢复目标与版本支持

    由恢复负责人界定定期演练或真实灾难,不将单成员异常自动处理为全量重建。记录 RPO、RTO、快照时间点和数据取舍审批人,盘点服务端及工具版本、成员、故障域、加密配置与外部依赖。以下命令仅在获准的管理环境读取状态,TLS 凭据来自受控配置,不输出密钥;多数丢失导致超时时保留结果,不重复施压。

    etcdctl version
    etcdutl version
    etcdctl endpoint status --write-out=table
    etcdctl member list --write-out=table
    验证标准

    版本、成员清单、恢复目标和责任人经过复核;已明确哪些资源不在 etcd 快照内,Kubernetes 与 KMS 依赖各有恢复责任。权限与工具支持可证明,尚无恢复记录时标注待验证,没有把现有备份成功当作前置演练完成。

    停止与回退

    盘点不改变成员关系。目标、版本、备份来源或授权不清时停止后续恢复;保留原集群、服务入口和既有备份策略,不运行强制新集群或成员删除命令,也不临时禁用 TLS 绕过连接失败。

    返回步骤起点
  2. 02

    取得唯一命名的受控快照

    优先选择已有可追溯快照;确需新建时,先审批单一端点、时间、资源开销和唯一输出路径。快照操作会占用读取带宽与存储 I/O,不等同于无影响的状态查看。确认空间、权限和传输加密,保存任务起止时间、文件校验与来源。以下示例不含真实地址,禁止覆盖唯一可用备份。

    # 需备份授权,并替换端点与不存在的新文件路径。
    etcdctl --endpoints=BACKUP_ENDPOINT snapshot save NEW_SNAPSHOT_FILE
    etcdutl snapshot status NEW_SNAPSHOT_FILE --write-out=table
    验证标准

    快照有明确来源、生成时间、revision、文件大小和校验记录,唯一文件路径未覆盖旧备份。访问受限且传输可追溯,生成期间集群负载未超预算;没有把运行中数据目录的随意复制冒充一致快照。

    停止与回退

    备份增加明显延迟、空间不足或输出路径冲突时停止本次新增备份任务并保留错误记录,不中断原 etcd 服务。未完成文件单独标记并按保留策略处理,保持上一份可用备份不变,不清空目录释放空间。

    返回步骤起点
  3. 03

    检查快照完整性与依赖材料

    对受控副本执行离线状态检查,对照源文件和传输校验,检查 revision、键数与体积变化是否有业务解释。分开保存快照与 CA、API Server 加密配置、KMS 接入材料,验证有授权的恢复渠道,不打印 Secret 或遍历导出业务键值。校验失败、快照过旧或缺少加密依赖时停止,不使用跳过校验来掩盖原因。

    验证标准

    文件来源与传输完整性一致,快照状态合理且满足批准的恢复时间点;必要加密材料可以按权限流程取得。验收表将文件可读、etcd 可启动和客户端可用分为不同项,目前仅确认完成的检查,其余保持待验证。

    停止与回退

    离线检查不写入原集群。发现损坏或依赖缺失时隔离有疑问的副本,保留原文件和差异证据,重新选择获准备份;不修改原备份、不关闭数据加密,也不继续启动无法解释来源的恢复集群。

    返回步骤起点
  4. 04

    验收网络隔离与新成员清单

    在恢复前确认演练主机、路由、DNS、监听地址、证书及服务启动参数全部独立,拒绝与原 etcd 客户端和 peer 地址互通;生产 API Server 与其他客户端也不能访问演练端点。审阅新成员名称、新 token 和新目录,token 不能替代认证与网络隔离。若启动测试 Kubernetes 控制器,阻断云 API、Webhook 及业务外部副作用并使用批准的测试替身。

    验证标准

    网络负责人和恢复负责人共同确认原成员与新集群无连接路径,服务配置不含生产端点、原数据目录或自动发现入口。计划测试的客户端在独立范围内,外部副作用有阻断证据;隔离失败项不存在或明确阻止推进。

    停止与回退

    隔离未通过时禁止启动恢复服务,撤回本次尚未启用的演练配置并修正方案。若误启动立即停止本次演练服务对外访问并升级事件,保留审计记录;不得通过更改原生产防火墙来迁就错误的演练地址。

    返回步骤起点
  5. 05

    审阅 revision 与离线恢复参数

    运行实际 etcdutl 的帮助确认参数,以 etcd 3.6 文档作为基准。涉及 Kubernetes 或 watch 缓存客户端时,按快照年龄、已观察最高 revision、写入上界和余量评估 --bump-revision,并与 --mark-compacted 配合验证客户端重新列举。不同发行版和旧版本必须重新确认,不能复制固定十亿增量,也不能把不支持的参数简单删除后宣称等价。

    etcdutl snapshot restore --help
    验证标准

    工具支持、快照 revision、客户端可能见过的 revision 范围和选定增量计算有审阅记录;恢复后的逻辑版本单调性与 watch 重建策略可解释。无法证明边界时标记阻塞并停在方案阶段,不把旧客户端缓存一致性留给上线后观察。

    停止与回退

    本阶段只审阅离线工具能力,不修改数据。计算依据不足、版本不支持或客户端未知时停止恢复,选择经验证的兼容方案后重新审批;不随意升级生产工具、不对在线集群直接执行 compact 作为替代。

    返回步骤起点
  6. 06

    恢复快照副本到全新隔离目录

    仅在第四、五步通过且获得离线恢复授权后操作。下例为单成员隔离模板,全部大写项和 example.invalid 地址须替换为审阅后的演练值;它不启动服务。需要客户端接管验证时,必须把第五步批准的 revision 参数加入最终命令后复核。多成员演练全部使用同一快照,各自新名称、新目录和一致的新成员清单,不引用原成员。

    etcdutl snapshot restore SNAPSHOT_COPY \
      --name=drill-a \
      --data-dir=NEW_DRILL_DATA_DIR \
      --initial-cluster=drill-a=https://drill-a.example.invalid:2380 \
      --initial-advertise-peer-urls=https://drill-a.example.invalid:2380 \
      --initial-cluster-token=UNIQUE_DRILL_TOKEN
    验证标准

    恢复输出只写入新演练目录,原快照与生产目录均未变化;恢复记录包含实际参数、工具版本和新成员映射。revision 相关参数与第五步一致,单成员文件恢复没有被写成已验证生产多成员恢复或客户端接管。

    停止与回退

    命令失败、路径指向现存数据或参数不一致时立即停止,不启动该目录。保留失败目录与日志,再次尝试使用另一个经过确认的新目录;不删除原数据、不覆盖唯一快照、不添加 force-new-cluster 或跳过校验参数强行继续。

    返回步骤起点
  7. 07

    启动新集群并独立验证客户端

    通过获批的演练服务配置启动恢复成员,复查隔离监听、TLS 与端点清单。只对明确列出的演练端点检查身份、成员、告警与受控健康测试,不沿用生产 ETCDCTL 端点变量或自动发现未审阅成员。抽样读取获准脱敏对象,必要时在独立客户端验证 API 读取、加密对象解密和 watch 重新同步;所有功能测试都记入授权演练记录。

    验证标准

    新逻辑集群身份、期望成员数与快照对象相符,计划内客户端按恢复点正确同步且没有外部副作用。分别记录文件恢复、成员启动和客户端通过状态,单成员启动未覆盖多成员多数和业务接管的部分明确列为未验证。

    停止与回退

    发现生产访问、原成员连接、数据不符或客户端持续异常时停止本次隔离服务与测试入口,保留证据并通知负责人。保持原集群不变;不能把回退到更旧快照当成撤销新业务写入,真实接管必须另行进行数据取舍审批。

    返回步骤起点
  8. 08

    记录实测恢复能力并关闭演练

    分别统计备份、传输、离线恢复、启动、客户端验证和人工等待耗时,对照 RPO/RTO 及批准的数据时间点。记录 KMS、持久卷、外部数据库和多成员故障等覆盖缺口,把备份成功率、备份年龄和最近恢复演练结果分别展示。按保留策略关闭本次演练入口、临时权限和快照副本访问,交接可复查的脱敏证据及下次演练计划。

    验证标准

    交接记录包含版本、审批、隔离证据、阶段耗时、对象核对和未验证项,每个结论都能定位对应证据。原生产集群未改动,演练残留权限和入口已处理;只有实际完成的范围更新验证结论,不宣称已具备未经测试的生产容灾能力。

    停止与回退

    清点发现权限残留、证据缺失或恢复目标未达到时重新打开演练记录,先关闭不必要入口并保留必要证据。撤回过度的完成声明,明确负责人和补测期限;不删除唯一恢复材料,也不为缩短耗时跳过业务一致性核对。

    返回步骤起点

DOUYA OPS ECOSYSTEM

体验豆芽自研工具与场景能力

部分场景提供体验环境,用于功能验证、测试和技术交流。