首页/数据/备份与容灾速查/应用容灾设计要点

应用容灾设计要点

应用层为容灾做的设计:无状态化、会话外置、配置与密钥集中管理、依赖降级与幂等重试,让切换后应用能快速可用。

备份与容灾速查数据更新于 2026-10-13

应用容灾设计要点

容灾能不能切换成功,很大程度取决于应用自身是否为『被替换』做好了准备:实例无状态、会话外置、配置与密钥集中管理、依赖可降级、操作幂等。这些工作平时不显眼,切换时却决定成败。切换的常见卡点不在数据库,而在应用启动依赖——证书、密钥、外部回调地址、白名单,任何一个缺失都会让应用起不来。

基本信息

设计目标任一实例可以被随时替换,切换后短时间内可对外服务
关键改造无状态化、会话外置、配置中心化、依赖治理、幂等重试
验证手段探针分离、切换演练、启动依赖清单核对
常见遗漏本地缓存、节点本地文件、硬编码 IP、证书与密钥分发

典型使用场景

  • 主备机房切换:备侧实例拉起后无需人工干预即可接流量
  • 滚动发布与弹性伸缩:实例随时可替换,发布不影响存量连接
  • 数据库迁移:应用通过配置切换连接,不改代码
  • 故障隔离:单个实例异常被自动摘除,不影响整体
  • 多活单元化:流量调度到其他单元时应用行为可预期

健康检查与就绪分离

健康检查与就绪分离
# readinessProbe:未通过则不接流量,用于启动依赖尚未就绪的阶段
readinessProbe:
  httpGet: { path: /healthz, port: 8080 }
  initialDelaySeconds: 5
  periodSeconds: 5
# livenessProbe:失败则重启容器,用于进程假死
livenessProbe:
  httpGet: { path: /livez, port: 8080 }
  periodSeconds: 10
  failureThreshold: 3
# 要点:/healthz 检查数据库、缓存、关键下游是否可用
#       /livez 只检查进程本身,避免下游抖动引发整批重启

启动依赖清单

类别典型项缺失后果
凭据与密钥TLS 证书、密钥管理服务凭据应用启动即失败
配置配置中心连通性、环境变量启动参数缺失或指向错误环境
网络下游白名单、DNS 解析、出网策略启动成功但调用全超时
外部依赖回调地址、短信与支付通道部分功能不可用,业务侧才暴露
把启动依赖清单化并在切换演练中逐项核对,比事后排查快得多。清单也要覆盖操作系统层:时钟同步、文件句柄与进程数限制、内核参数。

易错点

  • 本地缓存与会话未外置:切换后用户全部掉线重新登录,业务体验断崖式下降
  • 启动依赖未梳理:应用在备侧卡在证书或回调白名单校验上
  • 就绪与存活探针混用:下游抖动触发大规模重启,把小问题放大成故障
  • 硬编码地址与配置:切换需要改代码重新发版,窗口内根本来不及

数据来源与参考

  • Kubernetes 文档(探针配置)
  • SRE 实践(依赖降级与幂等设计)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌