REL11-BP03 在所有圖層上自動復原 - 可靠性支柱

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

REL11-BP03 在所有圖層上自動復原

偵測到失敗時,使用自動化功能執行動作來進行修復。降級可能透過內部服務機制自動修復,或需要透過矯正動作重新啟動或移除資源。

對於自我管理的應用程式和跨區域修復,復原設計和自動修復程序可從現有最佳實務中提取。

重新啟動或移除資源是修復故障的重要工具。最佳實務是盡可能讓服務無狀態。這可防止資源重新啟動時遺失資料或可用性。在雲端,您可以 (且通常應該) 在重新啟動時取代整個資源 (例如,運算執行個體或無伺服器函數)。重新啟動本身是從故障中復原的一個簡單、可靠方法。工作負載中會發生許多不同類型的故障。硬體、軟體、通訊和營運可能會發生故障。

重新啟動或重試也適用於網路請求。對網路逾時和相依系統故障 (其中相依系統會返回錯誤) 套用相同的復原方法。這兩個事件對系統具有類似的影響,因此,不要嘗試讓任何一個事件成為特殊情況,而是藉由指數退避和抖動來採用類似的限制重試策略。重新啟動的能力是復原導向運算和高可用性叢集架構中的一種復原機制。

預期成果:執行自動化動作來矯正錯誤偵測。

常見的反模式:

  • 佈建資源,但無自動擴展。

  • 個別部署執行個體或容器中的應用程式。

  • 部署不透過自動復原就無法部署到多個位置的應用程式。

  • 手動復原自動擴展和自動復原無法修復的應用程式。

  • 未自動化資料庫容錯移轉。

  • 缺乏自動化方法可將流量重新路由至新端點。

  • 沒有儲存複寫。

建立此最佳實務的優勢:自動修復可減少您的平均復原時間,並提高可用性。

未建立此最佳實務時的曝險等級:

實作指引

Amazon EKS或其他 Kubernetes 服務的設計應包含最小和最大複本或狀態集,以及最小叢集和節點群組大小調整。這些機制提供了最少量的連續可用處理資源,同時會使用 Kubernetes 控制平面自動修復任何失敗。

透過使用運算叢集的負載平衡器存取的設計模式應利用 Auto Scaling 群組。Elastic Load Balancing (ELB) 會自動將傳入的應用程式流量分散到一個或多個可用區域中的多個目標和虛擬設備 (AZs)。

未使用負載平衡的叢集式運算設計,其大小設計應考量至少遺失一個節點。這可讓服務在復原新節點的同時,維持在可能減少的容量中自行執行。範例服務為 Mongo、DynamoDB Accelerator、Amazon Redshift、Amazon EMR、Cassandra、Kafka、MSK-EC2、Couchbase、 ELK和 Amazon OpenSearch Service。其中許多服務都可以設計為納入額外的自動修復功能。某些叢集技術必須在節點遺失時產生警示,才能觸發自動或手動工作流程來重新建立新節點。此工作流程可以使用 自動執行 AWS Systems Manager ,以快速修復問題。

Amazon EventBridge 可用來監控和篩選事件,例如 CloudWatch 警示或其他 服務的狀態 AWS 變更。根據事件資訊,它可以叫用 AWS Lambda、Systems Manager Automation 或其他目標,在工作負載上執行自訂修復邏輯。Amazon EC2 Auto Scaling 可設定為檢查EC2執行個體運作狀態。如果執行個體處於執行以外的任何狀態,或者系統狀態受損,Amazon EC2 Auto Scaling 會將執行個體視為運作狀態不佳,並啟動替換執行個體。對於大規模替換 (例如遺失整個可用區域),靜態穩定性是高可用性的首選。

實作步驟

  • 使用 Auto Scaling 群組在工作負載中部署分層。Auto Scaling 可以對無狀態應用程式進行自我修復,並新增或移除容量。

  • 對於先前提及的運算執行個體,請使用負載平衡並選擇適當的負載平衡器類型。

  • 考慮為 Amazon 進行復原RDS。對於待命執行個體,請設定待命執行個體的自動容錯移轉。對於 Amazon RDS Read Replica,需要自動化工作流程才能將僅供讀取複本設為主要。

  • 在已部署應用程式且無法部署在多個位置的EC2執行個體上實作自動復原,並可在失敗時容忍重新啟動。無法將應用程式部署到多個位置時,自動復原可以用來取代失敗的硬體並重新啟動執行個體。會保留執行個體中繼資料和相關聯的 IP 地址,以及 Amazon Elastic File SystemFile Systems for LustreWindows EBS的磁碟區和掛載點。使用 AWS OpsWorks,您可以在層層級設定EC2執行個體的自動修復。

  • 當您無法使用自動擴展或自動復原,或自動復原失敗時,則使用 AWS Step FunctionsAWS Lambda 實作自動復原。當您無法使用自動擴展,且無法使用自動復原或自動復原失敗時,您可以使用 AWS Step Functions 和 自動復原 AWS Lambda。

  • Amazon EventBridge 可用來監控和篩選事件,例如CloudWatch警示或其他 AWS 服務的狀態變更。根據事件資訊,它接著可以調用 AWS Lambda (或其他目標),在您的工作負載上執行自訂修復邏輯。

資源

相關的最佳實務:

相關文件:

相關影片:

相關範例:

相關工具: