執行從故障狀況復原的測試

Last reviewed 2024-12-30 UTC

Google Cloud 良好架構架構可靠性支柱中的這項原則提供建議,協助您設計及執行測試,以便在發生故障時進行復原。

這項原則與學習 重點領域的穩定性相關。

原則總覽

為確保系統可從故障中復原,您必須定期執行測試,包括區域備援、版本回溯,以及從備份還原資料。

這項測試可協助您練習回應對可靠性造成重大風險的事件,例如整個區域的服務中斷。這項測試也有助於您確認系統在中斷期間的運作情形是否符合預期。

如果整個區域發生故障,您必須將所有流量容錯移轉至其他區域。在工作負載的正常運作期間,如果資料經過修改,就必須從主要區域同步至備援區域。您需要驗證複製的資料一律是最新的,以免使用者發生資料遺失或工作階段中斷的情形。負載平衡系統也必須能夠隨時將流量轉移至容錯區域,且不會中斷服務。為了盡可能縮短區域停機後的停機時間,運作工程師也必須能夠手動且有效率地將使用者流量從某個區域移出,盡可能縮短時間。這項作業有時稱為「排空區域」,也就是停止傳入該區域的流量,並將所有流量移至其他位置。

建議

設計及執行失敗復原測試時,請參考下列子節點中的建議。

定義測試目標和範圍

明確定義您希望透過測試達成的目標。舉例來說,您的目標可以包括以下項目:

  • 驗證復原時間目標 (RTO) 和復原點目標 (RPO)。詳情請參閱「DR 規劃的基本概念」。
  • 評估系統在各種故障情況下的復原力和容錯能力。
  • 測試自動容錯機制的成效。

決定測試範圍內的元件、服務或區域。範圍可以包含特定應用程式層級 (例如前端、後端和資料庫),也可以包含特定 Google Cloud 資源 (例如 Cloud SQL 執行個體或 GKE 叢集)。範圍也必須指定任何外部依附元件,例如第三方 API 或雲端連結。

準備測試環境

請選擇合適的環境,最好是複製正式版設定的階段或沙箱環境。如果您在實際環境中進行測試,請務必準備好安全措施,例如自動監控和手動回復程序。

建立備份方案。請為重要資料庫和服務建立快照或備份,以免在測試期間發生資料遺失。請確保團隊已準備好在自動容錯機制失效時,進行手動介入。

為避免測試中斷,請確認您已正確設定 IAM 角色、政策和容錯移轉設定。確認測試工具和指令碼具備必要權限。

請向內部人員 (包括營運、開發運作和應用程式擁有者) 說明測試時程、範圍和潛在影響。向利益相關者提供預估時間表,以及測試期間的預期行為。

模擬失敗情境

使用 Chaos Monkey 等工具,規劃及執行失敗情況。您可以使用自訂指令碼模擬重要服務的失敗情形,例如在多區域 GKE 叢集中關閉主要節點,或是停用 Cloud SQL 執行個體。您也可以使用指令碼,根據測試範圍使用防火牆規則或 API 限制,模擬全區域的網路中斷情形。逐步增加失敗情境,觀察系統在各種情況下的行為。

引入負載測試和失敗情境,以便在停機期間模擬實際使用情形。測試連鎖失敗的影響,例如當後端服務無法使用時,前端系統的行為。

如要驗證設定變更,並評估系統對人為錯誤的復原能力,請測試涉及設定錯誤的情境。例如,使用不正確的 DNS 備援設定或不正確的 IAM 權限執行測試。

監控系統行為

監控負載平衡器、健康狀態檢查和其他機制如何重新導向流量。使用 Cloud Monitoring 和 Cloud Logging 等 Google Cloud 工具,在測試期間擷取指標和事件。

觀察失敗模擬期間和之後的延遲時間、錯誤率和吞吐量變化,並監控整體效能影響。找出使用者體驗中的任何降級或不一致之處。

確保系統會針對重要事件 (例如服務中斷���備援) 產生記錄檔並觸發快訊。您可以使用這項資料,驗證警示和事件回應系統的有效性。

根據 RTO 和 RPO 驗證復原作業

測量系統在發生故障後,恢復正常運作所需的時間,然後將這項資料與定義的 RTO 進行比較,並記錄任何差距。

確保資料完整性和可用性符合 RPO。如要測試資料庫一致性,請比較資料庫的快照或備份,並比較發生錯誤前後的情況。

評估服務復原作業,確認所有服務都已恢復到可運作狀態,並盡量減少對使用者的干擾。

記錄及分析結果

記錄每個測試步驟、失敗情境和對應的系統行為。附上時間戳記、記錄檔和指標,以便進行詳細分析。

強調測試期間觀察到的瓶頸、單點故障或非預期行為。為協助您安排修正順序,請依據嚴重性和影響程度將問題分類。

建議改善系統架構、容錯機制或監控設定。根據測試結果,更新任何相關的備援政策和 Playbook。向相關人員提交事後分析報告。這份報告應概述結果、所學到的經驗和後續步驟。詳情請參閱「進行完整的解剖作業」。

疊代與改善

如要驗證持續可靠性和復原力,請安排定期測試 (例如每季一次)。

在不同情境下執行測試,包括基礎架構變更、軟體更新和流量負載增加。

使用 CI/CD 管道將可靠性測試整合至開發生命週期,自動執行備援測試。

在事後分析期間,請參考利害關係人和使用者的意見回饋,改善測試程序和系統復原能力。