路徑 05課程 7 / 8

為自動復原設定安全邊界

以明確權限、驗證與停止條件,自動執行已知復原操作。區分執行期復原與軟體變更。

進階12 分鐘已審查

發布者 我們如何撰寫

檢查理解程度控制器已重新啟動工作程序兩次。佇列持續增加,資料庫也無法連線。政策應怎麼做?進行練習
控制器已重新啟動工作程序兩次。佇列持續增加,資料庫也無法連線。政策應怎麼做?

學習目標

  • 區分自動復原與永久軟體修正。
  • 定義有邊界的復原政策與獨立成功檢查。
  • 辨識自動化必須停止並升級處理的時機。

恢復已知狀態

自動復原(self-healing)會自動偵測已定義故障,並嘗試已授權的復原操作。例如重新啟動失敗程序,或替換不健康執行個體。操作必須符合故障與服務狀態模型。

Kubernetes 可以替換失敗的工作負載執行個體,並使實際狀態符合宣告狀態。但這不會修正錯誤的應用程式邏輯,也無法處理每種儲存故障。基礎架構復原與軟體正確性需要不同檢查。Kubernetes 自動復原。

先定義目標,再選機制。恢復匯出,代表符合條件的工作能正確完成。容器正在執行,只是其中一個前提。

區分三種變更

變更範例必要決定
執行期復原替換一個失敗的無狀態工作程序預先核准的復原政策可以授權
軟體修正修正導致工作程序停止的記憶體洩漏審查、測試、發布控制與正式環境驗證
政策變更增加允許的重啟頻率或存取範圍政策負責人明確核准

代理程式可以在復原後提出修正,但該提案是新的軟體變更,不得從復原控制器繼承無上限權限。

檢查失敗時,控制器也不得修改自己的成功條件。否則系統可能回報改善,實際服務卻沒有改善。

啟用前,先寫好復原政策

以下政策為虛構範例。數字用來示範設計選擇,不是建議預設值。

政策欄位虛構匯出工作程序規則
觸發條件工作程序心跳已消失 90 秒,且仍有排隊工作
前提條件另一個工作程序健康;相依服務檢查通過;沒有疑似入侵或完整性故障
允許操作使用目前核准的產物,替換一個工作程序
狀態保護工作使用持久儲存,以及經過驗證的等冪金鑰
上限15 分鐘內最多替換兩次;任何時候都不超過一個
冷卻時間替換後等待五分鐘,才可再次嘗試
成功條件合成資料工作正確完成,且受影響佇列開始減少
停止並升級處理任一前提不成立、達到上限,或無法驗證成功

使用最小權限身分。記錄政策版本、觸發證據、操作、資源和結果。提供獨立的控制器停用方式,並指定接收升級通報的人員。

同時測試失敗路徑與成功復原

重試可能重複產生副作用。工作程序可能儲存檔案後,在確認工作完成前停止。允許再次執行前,驗證等冪性。參考雲端原生故障範例。

重試也可能加重已過載的相依服務。使用有限次嘗試、逾時和適當退避。避免所有執行個體同時重試。AWS 說明退避與隨機抖動為何能減少這種放大效應。重試指引。

用三個案例測試虛構政策。單一工作程序停止時,應能復原。資料庫中斷時,應阻止重複替換。完整性故障尚未釐清時,應停止自動化並請求應變決定。

也要檢查遙測缺漏。沒有心跳,可能代表工作程序故障,也可能是蒐集路徑故障。控制器需要足以支持操作的證據,不能只相信 AI 的解釋。

衡量政策是否有幫助

記錄經驗證的復原、失敗嘗試、升級通報、重複工作,以及使用者受影響時間。在相近條件下,與先前維運方法比較。

將底層缺陷保留為工程工作。反覆重啟有記憶體洩漏的程序,可能降低眼前影響,但洩漏仍然存在。繼續閱讀持續改善,將觀察連結到長期有效的修正。

進行練習

為本課虛構匯出工作程序設計復原政策。指定觸發條件、排除條件、允許操作、重試上限、冷卻時間、成功檢查和升級處理負責人。用資料庫中斷與原因未知的資料完整性故障測試政策。

下載工作表(Markdown)
檢查理解程度 ↑

繼續學習

來源與延伸閱讀

Taiga 相關延伸閱讀

上一課: 將交付流程連結到 SOC 與 SIRT