GH GambleHub

DR策略和RTO/RPO

1)基本原则

1.目标早于资金。首先,我们制定RTO/RPO和关键场景,然后选择技术。
2.按重要性划分。并非所有服务都需要"黄金";按业务关键性划分。
3.数据-DR.一致性、复制、损坏检测和恢复点比"铁"更重要。
4.自动化和可验证性。如果没有IaC,恢复回归测试和遥测,DR就毫无意义。
5.教义和证据。没有常规"游戏日"的计划是准备就绪的幻觉。
6.安全和合规。加密,隔离,WORM/immutable备份,DPA/辖区。

2)术语和合规性

RTO-从事件发生到"正常"恢复服务的时间。
RPO是恢复时最后一个健康数据点的"年龄"。
RLO(恢复水平目标)是必须恢复(最低可行服务)的功能级别。
MTD (Maximum Tolerable Downtime)是企业遭受不可接受的损害的门槛。
RTA/RPA (Actual)-实践中的实际恢复时间/点。

联系:RTO ≤ MTD;RPA ≤ RPO.目标与事实之间的差距是验尸和改进的主题。

3)DR策略类(准备级别)

级别说明说明典型的RTO/RPO成本二.应用
Backup/Restore只有becaps和周围的形象RTO:时日,RPO:时钟$非临界系统,报告
Pilot Light"Twinkle":最小堆栈上升,数据复制RTO:数十分钟时钟,RPO:分钟时钟$$平均临界值,节省
Warm Standby温暖看台:几乎准备就绪,负荷低RTO:分钟-<小时,RPO:分钟$$$B2C内核,支付网关
Active/Passive全被动克隆,自动锁定器RTO:分钟,RPO:秒-分钟$$$$任务关键型API
Active/Active出售的两个地点RTO≈0,RPO≈0-seck。$$$$$极端SLO、全球产品
💡 规则:选择符合业务风险的最低限度的适当级别。

4)我们为之辩护的场景

区域/云/数据中心损失(电气,网络,提供商)。
数据腐败/操作员错误(删除,"击败"副本,逻辑损坏)。
恶意软件/勒索软件(ransomware)。
版本/配置缺陷(质量外观)。
依赖性崩溃(KMS,DNS,秘密,支付提供商)。
法律事件(阻止,禁止从管辖权中删除数据)。

对于每个脚本,指定RTO/RPO、DR级别、花花公子、负责。

5)数据策略(RPO关键)

5.1 Becaps

完整+增量+事务日志(用于DB)。
固定/WORM存储和离线副本("空插")。
带有元数据和加密子图的后备目录;定时测试恢复。

5.2复制

同步(低RPO,↑latentnost,战利品传播的风险)。
异步(对perf的低影响,RPO> 0;与战利品检测器结合使用)。
用于流复制和状态重建的CDC(更改数据捕获)。

5.3逻辑损坏保护

带有≥ N天窗口的转换/时间点(PITR)。
不变量签名(平衡,和和,chexumma)是"bit"数据的早期特征。
"慢速"复制通道(延迟15-60分钟)作为防止即时损坏的缓冲区。

选择恢复点的草图:
python def pick_restore_point(pitr, anomaly_signals, max_age):
healthy = [p for p in pitr if not anomaly_signals. after(p. time)]
return max(healthy, key=lambda p: p. time if now()-p. time <= max_age else -1)

6)应用程序、状态、缓存

Statless层-在任何区域(Git中的映像/图表/清单)中扩展和重新启动。
状态(DB/缓存/Kew):真相来源-DB之一;缓存和索引可重新生成。
相等性和重新驱动-允许重新传递事件;使用outbox/inbox、dedup和版本。

7)网络和输入点

GSLB/DNS收件人:后端/基于健康,在事故窗口中短TTL。
Anycast/L7代理:单个IP,区域健康路由。
区域域和管辖区政策(PII的geo-pinning)。
证书管理员/KMS:备用链条,双键。

Feylover伪代码:
python if slo_breach("region-a") or health("region-a")==down:
route. shift(traffic, from_="region-a", to="region-b", step=20) # канарим enable_readonly_if_needed()

8)操作模型和自动化

IaC/GitOps:第二区域基础设施=代码,"单键"部署。
策略作为代码:门"没有DR清单/备份/备份-没有发布"。
Runbooks:分步指令和与两个区域相同的"红色按钮"。
秘密:短期信条,OIDC联合会,损害/召回计划。

Gate(想法):
rego package dr deny["Missing PITR ≥ 7d"] {
input. db. pitr_window_days < 7
}
deny["No restore test in 30d"] {
now() - input. db. last_restore_test > 3024h
}

9)演习和测试(游戏日)

情景表:DB损失,"重击"数据,KMS故障,区域下降,突然失控。
频率:任务关键的季度;每半年一次-为其他人。
演习指标:RTA/RPA vs目标,自动步骤比例,手动干预次数,花花公子错误。
发行版中的Chaos-smoke:依赖性降解不应"打破"DR路径。

迷你教义示例:

T0: cut off the primary database (firewall drop)
T + 2m: GSLB shift 20% of traffic, then 100% at SLO_ok
T + 6m: checking business invariants and lag replication
T + 10m: post-drill: fixing RTA/RPA, playbook improvements

10)花花公子(规范模板)

yaml playbook: "dr-failover-region-a-to-b"
owner: "platform-sre"
rto: "15m"
rpo: "5m"
triggers:
- "health(region-a)==down"
- "slo_breach(payments)"
prechecks:
- "backup_catalog ok; last_restore_test < 30d"
- "pitr_window >= 7d"
steps:
- "Announce incident; open war-room; assign IC"
- "Freeze writes in region-a (flag write_readonly)"
- "Promote db-b to primary; verify replication stopped cleanly"
- "Shift GSLB 20%→50%→100%; monitor p95/error"
- "Enable compensations and re-drive queues"
validation:
- "Business invariants (balances, duplicate_checks)"
- "Synthetic tests green; dashboards stable 30m"
rollback:
- "If db-b unhealthy: revert traffic; engage restore from PITR T-Δ"
comms:
- "Status updates each 15m; external note if SEV1"

11) DR可观测度量

Replica lag(秒),RPO漂移(目标和实际RPO之间的差异)。
Restore SLI:周围环境寒冷/温暖恢复的时间。
覆盖率:花花公子/后援/PITR ≥ N天服务的百分比。
演练得分:自动步骤比例、RTA分布、错误率。
Immutability:WORM/air-gapped中后备的百分比。
事件度量:回收器之后的队列长度/重新驱动速度。

12)成本和权衡

CapEx/OpEx:温暖的展位比Active/Active便宜,但比Pilot Light便宜。
Egress:跨区域/跨云复制成本;缓存/压缩/本地聚合。
RTO/RPO vs$:每个"九"的可用性和二秒RPO成本都高出两倍-与业务保持一致。
绿色窗口:batch复制-在便宜/"绿色"时钟。

13)安全和合规性

"静止"和"过境"加密,按区域分开KMS域。
Ransomware防护:"3-2-1"(3份副本,2个媒体,1个离线),MFA-delete。
司法管辖区:PII的geo-pinning,备用本地化,TTL之上的Legal Hold。
时间访问:DR操作的临时角色,审计日志。

14)反模式

"我们以后写一个计划"-DR没有练习。
不受逻辑损坏保护的复制-闪烁地复制错误。
单个KMS/secret区域是不可能的捕获器。
没有定期恢复的后备箱是"Shredinger" DR。
区域之间的密切相关的同步交易是级联潜伏期/下降。
没有优先级:相同的DR级别适用于一切(昂贵且无用)。

15)建筑师支票清单

1.RTO/RPO/RLO是按服务和脚本定义的?

2.数据分类:真理来源,PITR/窗口,WORM/immutable?

3.选择了DR级别(Backup/Restore, Pilot, Warm, A/P, A/A)?

4.网络:GSLB/Anycast,库存证书/钥匙,"只读"标志?

5.应用: 等效性,outbox/inbox抵消交易?

6.IaC/GitOps/Policy as Code: 单击推出第二个区域?

7.演习:时间表,KPI RTA/RPA,后培训活动?
8.监视:lag、RPO-drift、restore-SLI、drill-score、immutable back?

9.安全/合规性: KMS域,司法管辖区,法律保留?

10.成本:egress预算,"绿色"窗口,经济上合理的水平?

16)迷你食谱和素描

16.Postgres的1个PITR(想法):

bash base backup daily + WAL archive pg_basebackup -D/backups/base/$ (date +% F)
archive_command='aws s3 cp %p s3://bucket/wal/%f --sse'
restore pg_restore --time "2025-10-31 13:21:00Z"...

16.2逻辑损坏保护(延迟复制副本):

yaml replication:
mode: async apply_delay: "30m" # window to roll back on corruption

16.3流量切换(GSLB 伪API):

bash gslb set-weight api. example. com region-a 0 gslb set-weight api. example. com region-b 100

16.4检查feilover后不变式(伪代码):

python assert total_balance(all_accounts) == snapshot_total assert no_duplicates(events_since(t_failover))

结论

DR是做出技术和组织决策的能力,其速度快于损害的增长。确定现实的RTO/RPO,选择足够的准备水平,自动化基础架构和检查,定期培训和测量实际RTA/RPA。然后,事故不会变成灾难,而是变成可预测的结果的可管理事件。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

Telegram
@Gamble_GC
开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。