全部產品
Search
文件中心

Elastic Compute Service:故障演練

更新時間:Apr 10, 2025

故障演練是實現系統穩定性保障的關鍵手段,它通過向系統注入可控的特定故障,以驗證和促進系統的高可用性建設,以及訓練相關人員應急能力、驗證故障處理機制,從而減少真實故障發生時的故障恢復(MTTR,Mean Time To Repair)。阿里雲提供了以ecs-fault-{scenename}ACS-ECS-{scenename}命名的雲助手外掛程式向ECS注入故障,可以更精確、便捷地進行演練,提升演練的效果和效率。

故障演練優勢

  • 免費開源:所有執行過的外掛程式會自動儲存在雲助手目錄下,其中包含故障注入源碼和可執行檔。

  • 遵循最小化原則:每個外掛程式都僅代表一個特定的演練情境,按需下載使用。

  • 操作便捷高效:所有安裝雲助手的ECS執行個體均可執行,只需一行命令即可完成外掛程式的安裝和運行。

故障演練支援的情境

演練情境

說明

宕機演練

伺服器宕機是一種常見的故障現象,其根源來自於軟體和硬體上發生的異常,且幾乎無法避免。通過類比核心故障造成的ECS宕機,可以測試業務系統在宕機時的反應、檢測系統復原能力、驗證監控和警示機制的有效性等,並基於演練結果制定應對策略,確保生產環境發生宕機時系統能夠迅速恢複正常運行,降低業務中斷風險。

CPU利用率高演練

CPU利用率是衡量業務系統是否健康的一個重要指標,為使業務達到足夠的穩定性,CPU利用率需保持在合理的範圍內。過高的CPU利用率會導致業務延遲甚至中斷。通過注入高CPU故障,可以測試業務系統在特定CPU負載時的反應、檢測系統復原能力、驗證監控和警示機制的有效性等,並基於演練結果制定應對策略,確保生產環境高CPU利用率時系統能夠迅速恢複正常運行,降低業務中斷風險。

記憶體溢出(OOM)演練

通過注入進程不斷消耗記憶體,類比Elastic Compute Service發生OOM(即記憶體溢出)情況,測試業務進程是否會被終止、檢測系統復原能力、驗證監控和警示機制的有效性等,並基於演練結果制定應對策略,確保生產環境發生OOM時系統能夠迅速恢複正常運行,降低業務中斷風險。

網路演練

  • 網路丟包演練:網路丟包是一種常見的網路故障,網路擁塞、網路硬體故障、網路鏈路幹擾等情況都可能會造成網路丟包,通過此演練情境驗證系統在網路丟包時的警示和恢複情況。

  • 網路中斷演練:ECS所在網路故障是一種常見情境,如發生硬體鏈路異常,電訊廠商網路波動,系統配置等,都會造成網路無法串連,對外表現為ECS長時間不可用。因此通過該情境驗證業務在其中某個節點不可用時的監控和恢複能力。

  • 網路延遲演練:網路延遲直接影響應用程式和服務的響應速度,過高的網路延遲會影響使用者的使用體驗。網路流量增大、線路不穩定等情況都會增大網路延遲。通過此演練情境驗證系統在網路延遲時的警示和恢複情況。

磁碟和IO演練

  • 磁碟容量利用率高演練:磁碟容量利用率過高,通常由資料積累、臨時檔案堆積等原因引起,可能導致系統效能下降、崩潰風險增加、資料丟失等問題。通過磁碟容量利用率高演練可以驗證在磁碟利用率高、滿載情況下,系統能否穩定運行以及保障資料安全。

  • 磁碟IO Hang演練:IO Hang是指在進行讀或寫操作時,系統因為某些原因無法完成這些操作,導致進程或系統無法繼續正常工作的一種情況。其可以由多種原因引起,包括硬體故障、驅動問題、檔案系統錯誤、網路延遲或擁塞等。對業務產生效能下降,服務延遲,資料一致性問題等風險。通過此演練情境驗證系統在磁碟發生IO Hang時的警示和恢複情況。

  • 磁碟IO高負載演練:IO高負載是一種常見的故障現象,導致的原因可能由於過高的業務進程負載,非預期的非業務進程佔用,記憶體資源不足間接導致等情況。出現該情況可能會導致業務效能受損,資料丟失等風險。因此通過此演練情境驗證系統在IO高負載時的警示和恢複情況。

系統資源演練

  • 系統負載高演練:系統負載load是衡量系統工作量的一個指標,具體的表示為:在特定時間間隔內,系統處於可運行狀態和不可中斷狀態的平均進程數。監控負載load是一個重要指標,可以判斷當前業務的負載情況,用於及時警示並做出應對措施。

  • PID資源不足演練:在作業系統中,PID(Process Identifier)是用於唯一標識進程的數字,可以在進程釋放後被重複利用。雖然很難將PID資源耗盡,但仍存在意外耗盡的情況,導致新進程無法建立,可能會導致業務掛起,從而影響業務能力。因此,有必要類比PID資源耗盡或主動類比業務掛起的情況,以檢測業務的高可用能力。

  • 系統時間跳變演練:時間跳變指系統時鐘突然發生變化。系統時間的準確性、系統各組件時間的一致性,對於生產系統至關重要,否則會導致依賴時間各種服務的異常,如日誌、同步備份等。通過時間跳變演練可以驗證系統在發生系統時間跳變時,能否及時同步恢複正確時間並恢複業務。

使用方法

本最佳實務依賴雲助手及雲助手外掛程式,使用格式如下。

  • 故障注入

    sudo acs-plugin-manager --exec --plugin {plugin-name} --params inject,paramA=a,paramB=b
  • 故障恢複

    sudo acs-plugin-manager --exec --plugin {plugin-name} --params recover
說明
  • {plugin-name}為對應雲助手外掛程式的外掛程式名。

  • 外掛程式一般分為注入(inject)和恢複(recover)兩個動作。

  • 故障注入會拼接注入參數,參數索引值對內用等號串連,參數對之間用逗號串連。