REL11-BP02 容錯移轉至運作良好的資源
如果發生資源失敗,運作良好的資源應繼續處理請求。對於位置受損 (例如可用區域或 AWS 區域),請確保您的系統已就位,可容錯移轉至未受影響位置中運作良好的資源。
設計服務時,請將負載分散到各個資源、可用區域或區域。因此,可以透過將流量轉移到剩餘運作狀態良好的資源來減輕個別資源故障或損害的影響。請考慮發生故障時,如何找到服務及其路由。
設計服務時,務必考慮故障復原。在 AWS,我們設計服務以盡可能減少從故障復原的時間並減輕對資料的影響。我們的服務主要使用的資料存放區,會在請求持久儲存於區域內的多個複本中之後,才確認請求。經過建構後,它們會使用以儲存格為基礎的隔離,以及使用可用區域提供的故障隔離。我們在營運程序中廣泛使用自動化。我們還將取代-重啟功能最佳化,以期從中斷快速復原。
允許容錯移轉的模式和設計會隨著各 AWS 平台服務而有所不同。許多 AWS 原生受管服務本身就是多個可用區域 (例如 Lambda 或 API Gateway)。其他 AWS 服務 (例如 EC2 和 EKS) 需要特定的最佳實務設計,以支援在 AZ 的各資源或資料儲存容錯移轉。
監控應設定為確認容錯移轉資源是否正常運作、追蹤資源容錯移轉的進度,以及監控業務程序復原。
預期成果: 系統能夠自動或手動使用新資源,以從降級恢復。
常見的反模式:
-
故障計畫不是規劃和設計階段的一部分。
-
未建立 RTO 和 RPO。
-
監控不足,無法偵測出失敗的資源。
-
正確隔離故障網域。
-
未考慮多區域容錯移轉。
-
決定進行容錯移轉時,失敗偵測太過敏感或積極。
-
未測試或驗證容錯移轉設計。
-
進行自動修復自動化,但未通知需要修復。
-
缺少緩衝期,以避免過早容錯恢復。
建立此最佳實務的優勢: 您可以建置更具彈性的系統,在發生故障時透過適當降級並快速復原來維持可靠性。
未建立此最佳實務時的曝險等級: 高
實作指引
AWS 服務,例如 Elastic Load Balancing 和 Amazon EC2 Auto Scaling,會協助各資源和可用區域分配負載。因此,可以透過將流量轉移到剩餘運作狀態良好的資源來緩解個別資源 (例如 EC2 執行個體) 的失敗或可用區域的損害。
對於多區域工作負載,設計會更複雜。例如,跨區域僅供讀取複本可讓您將資料部署到多個 AWS 區域。不過仍需要容錯移轉,才能將僅供讀取複本提升為主要複本,然後將流量指向新端點。Amazon Route 53、Route 53 ARC、CloudFront 和 AWS Global Accelerator 可協助路由 AWS 區域 的各流量。
AWS 服務 (例如 Amazon S3、Lambda、API Gateway、Amazon SQS、Amazon SNS、Amazon SES、Amazon Pinpoint、Amazon ECR、AWS Certificate Manager、EventBridge 或 Amazon DynamoDB) 會由 AWS 自動部署到多個可用區域。如果發生故障,這些 AWS 服務會自動將流量路由到運作良好的位置。資料以冗餘方式存放在多個可用區域中,並且仍然可用。
對於 Amazon RDS、Amazon Aurora、Amazon Redshift、Amazon EKS 或 Amazon ECS,多可用區域是組態選項。如果啟動容錯移轉,AWS 可將流量導向運作良好的執行個體。此容錯移轉動作可由 AWS 執行,或依客戶要求執行
對於 Amazon EC2 執行個體、Amazon Redshift、Amazon ECS 任務或 Amazon EKS Pod,您可以選擇要部署到哪個可用區域。對於某些設計,Elastic Load Balancing 會提供解決方案,以偵測運作狀態不佳區域中的執行個體,並將流量路由至運作良好的區域。Elastic Load Balancing 也可將流量路由至內部部署資料中心內的元件。
對於多區域流量容錯移轉,重新路由可利用 Amazon Route 53、ARC、AWS Global Accelerator、Route 53 Private DNS for VPCs 或 CloudFront 來提供定義網際網路網域和指派路由政策 (包括運作狀態檢查) 的方法,以便將流量路由到運作狀態良好的區域。AWS Global Accelerator 提供靜態 IP 地址,做為應用程式端點的固定進入點,然後使用 AWS 全球網路 (而不是網際網路) 路由至您所選 AWS 區域 中的端點,以獲得更好的效能和可靠性。
實作步驟
-
為所有適當的應用程式和服務建立容錯移轉設計。隔離每個架構元件,並為每個元件建立符合 RTO 和 RPO 的容錯移轉設計。
-
設定較低的環境 (例如開發或測試),且其中所有服務都需要有容錯移轉計畫。使用基礎設施即程式碼 (IaC) 來部署解決方案,以確保可重複性。
-
設定復原站台 (例如第二個區域),以實作和測試容錯移轉設計。如有必要,可以臨時設定測試的資源,以限制額外的成本。
-
判斷哪些容錯移轉計畫是由 AWS 自動執行、哪些可由 DevOps 程序自動執行,以及哪些可能要手動執行。記錄並測量每一項服務的 RTO 和 RPO。
-
建立容錯移轉程序手冊,並包括容錯移轉每個資源、應用程式和服務的所有步驟。
-
建立容錯恢復程序手冊,並包括容錯恢復 (含時程) 每個資源、應用程式和服務的所有步驟
-
制定計畫來啟動和演練程序手冊。使用模擬和混亂測試來測試程序手冊的步驟和自動化。
-
對於位置受損 (例如可用區域或 AWS 區域),請確保您的系統已就位,可容錯移轉至未受影響位置中運作良好的資源。在容錯移轉測試之前,檢查配額、自動擴展層級和執行的資源。
資源
相關 Well-Architected 的最佳實務:
相關文件:
相關範例: