Fault Injection Testing 總覽

Fault Injection Testing 可讓您進行故障注入實驗,這是一種在系統中導入故障的方法,以便在故障導致實際的意外失敗,進而影響客戶之前,測試系統的復原能力。透過 Fault Injection Testing,您可以將錯誤注入 Google Cloud 環境中的各種元件,確保應用程式以可預測的方式處理這些錯誤。

在 Fault Injection Testing 的初始版本中,錯誤通常等同於目標資源發生故障。如果您已在應用程式中設計容錯機制,這些失敗應會觸發應用程式將流量重新導向至健康狀態良好的執行個體。

您應在注入錯誤前、期間和之後觀察應用程式,確認應用程式是否如預期處理錯誤。

為什麼要使用 Fault Injection Testing?

Fault Injection Testing 可讓您在各種失敗情境下,對應用程式的復原能力進行實驗。 Google Cloud 這個範圍的主要部分是執行實驗,以估算區域和地區的故障情形,這類實驗難以或不可能完全由您自行執行。 Google Cloud 此外,Fault Injection Testing 也是實用的開發和改善工具,可讓您在正式環境中導入設計的復原機制前,先進行實驗。在問題浮現於實際工作環境前就先找出,可加快設計改善速度、避免代價高昂的停機時間和聲譽損失,並提升整體體驗。

如果沒有 Google Cloud原生錯誤注入產品,您就必須自行進行實驗。自行進行實驗會有問題,因為Google Cloud 是共用環境,而且在許多情況下,您可能無法直接存取基礎服務和基礎架構。這種情況可能會導致實驗不充分、費力,最終可能無法有效達成目標,也就是適當測試應用程式的復原能力。Fault Injection Testing 可協助您減少自動執行這些實驗的作業量、存取您無法存取的故障模式,並提高實驗作業的準確度。

對於受監管的客戶,定期進行實驗通常是遵守產業管理機構規定的必要條件。在這些情況下,實驗通常會以災難復原測試的形式進行,證明可用區或區域發生故障時,應用程式仍能持續有效運作。

可供實驗使用的故障

可用的故障如下

  • 容錯移轉 Cloud SQL - 將資料庫從主要資料庫容錯移轉至待命資料庫。
  • 降低應用程式流量 - 透過第 7 層負載平衡器模擬流量降低

這些故障的目的是將實驗範圍限制在單一專案的資源,且位於單一或更小的區域。實驗不會影響超出預期範圍的項目。不過,這些錯誤會導致環境中的目標資源發生實際故障。

您可以指定基礎架構元件 (例如 Cloud SQL 資料庫或 Application Load Balancer),以及日後支援的其他元件,在自家應用程式的環境中合理模擬可用區或區域故障。

如何使用 Fault Injection Testing

使用 Fault Injection Testing 前,請確認以下事項:

  • 要進行實驗的環境已備妥部分備援機制。注入錯誤時,這個環境的應用程式可以繼續在備援基礎架構上執行。
  • 資源管理員或擁有者:請謹慎決定要授予哪些使用者權限,讓他們設定及執行 Fault Injection Testing 實驗。 Google Cloud 在 Google Cloud 環境中,對正在執行的基礎架構元件造成故障會導致中斷。因此,您只能將權限授予瞭解雲端環境架構,以及如何安全地實驗該架構復原能力的作業人員,讓他們設定實驗時不會造成非預期的中斷。

使用 Fault Injection Testing 時,需要設定實驗。如要設定新實驗,請先建立實驗範本,定義要注入的錯誤和目標資源。接著,您將從範本執行實驗。實驗是範本中定義的一組動作,會針對您在範本中選取的資源執行。