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,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。