REL11-BP04 復原期間需使用資料平面,而非控制平面
控制平面提供的管理 API 適用於建立、讀取和描述、更新、刪除和列出 (CRUDL) 資源,而資料平面則處理日常服務流量。對可能影響彈性的事件實作復原或緩解回應時,請盡量使用最少數量的控制平面操作來復原、重新擴展、還原、修復或容錯移轉服務。資料平面動作應取代這些降級事件期間的任何活動。
例如,以下全都是控制平面動作:啟動新的運算執行個體、建立區塊儲存,以及說明佇列服務。啟動運算執行個體時,控制平面必須執行多項工作,例如尋找具有容量的實體主機、配置網路介面、準備本機區塊儲存磁碟區、產生憑證,以及新增安全規則。控制平面往往是複雜的協同運作。
預期成果: 當資源進入受損狀態時,系統能夠將流量從受損資源轉移到健康狀況良好的資源,來自動或手動復原。
常見的反模式:
-
依賴變更 DNS 記錄來重新路由流量。
-
依賴控制平面擴展操作來取代因佈建資源不足而受損的元件。
-
依靠大量、多服務、多 API 的控制平面動作來修復任何類別的損害。
建立此最佳實務的優勢: 提高自動化修復的成功率可減少平均復原時間,並改善工作負載的可用性。
未建立此最佳實務時的曝險等級: 中:對於某些類型的服務降級,控制平原會受到影響。若倚賴大量使用控制平面來進行修復,可能會增加復原時間 (RTO) 和平均復原時間 (MTTR)。
實作指引
若要限制資料平面動作,請評估每一項服務還原時所需的動作。
利用 Amazon Application Recovery Controller (ARC) 轉移 DNS 流量。這些功能會持續監控應用程式從失敗中復原的功能,讓您在多個 AWS 區域、可用區域和內部部署上控管應用程式復原。
Route 53 路由政策使用控制平面,因此不要依賴它進行復原。Route 53 資料平面會答覆 DNS 查詢,以及執行並評估運作狀態檢查。它們遍布全球,而且針對 100% 可用性服務水準協議 (SLA) 所設計
您在其中建立、更新和刪除 Route 53 資源的 Route 53 管理 API 和主控台,是在控制平面上執行,這些控制平面的設計旨在優先考慮您在管理 DNS 時所需的強大一致性和耐久性。為了實現此目標,控制平面位於單一區域中:美國東部 (維吉尼亞北部)。儘管這兩個系統都建置得非常可靠,但控制平面未包含在 SLA 中。在極少數情況下,資料平面的彈性設計允許它保持可用性,而控制平面則不允許。對於災難復原和容錯移轉機制,使用資料平面功能提供可能最好的可靠性。
對於 Amazon EC2,請使用靜態穩定性設計來限制控制平面動作。控制平面動作包括個別或使用 Auto Scaling 群組 (ASG) 縱向擴展資源。為獲得最高層級的彈性,請在用於容錯移轉的叢集中佈建足夠的容量。如果必須限制此容量閾值,請對整體端對端系統設定節流,以安全地限制總流量達到所限制的資源集。
對於像是 Amazon DynamoDB、Amazon API Gateway、負載平衡 和 AWS Lambda 無伺服器等服務,使用這些服務會利用資料平面。不過,建立新功能、負載平衡器、API 閘道或 DynamoDB 資料表是控制平面動作,應在降級前完成,以準備進行事件和容錯移轉動作的演練。對於 Amazon RDS,資料平面動作允許存取資料。
如需資料平面、控制平面,以及 AWS 如何建置服務以符合高可用性目標的詳細資訊,請參閱 使用可用區域實現靜態穩定性
了解哪些作業位於資料平面,哪些位於控制平面。
實作步驟
針對需要在降級事件之後還原的每個工作負載,評估容錯移轉執行手冊、高可用性設計、自動修復設計,或 HA 資源還原計畫。找出可能視為控制平面動作的每個動作。
考慮將控制動作變更為資料平面動作:
-
Auto Scaling (控制平面) 與預先擴展 Amazon EC2 資源 (資料平面) 的比較
-
遷移至 Lambda 及其擴展方法 (資料平面) 或 Amazon EC2 ASG (控制平面)
-
使用 Kubernetes 評估任何設計,以及控制平面動作的性質。新增 Pod 是 Kubernetes 中的資料平面動作。動作應限於新增 Pod 而不是新增節點。使用 過度佈建的節點
是限制控制平面動作的慣用方法
請考慮可讓資料平面動作影響相同修復措施的替代方法。
-
Route 53 記錄變更 (控制平面) 或 ARC (資料平面)
如果服務具任務關鍵性,請考慮次要區域中的某些服務,以便在未受影響的區域中執行更多控制平面和資料平面動作。
-
主要區域中的 Amazon EC2 Auto Scaling 或 Amazon EKS 與次要區域中的 Amazon EC2 Auto Scaling 或 Amazon EKS 比較,並將流量路由到次要區域 (控制平面動作)
-
將僅供讀取複本設為主要,或在主要區域中嘗試相同的動作 (控制平面動作)
資源
相關的最佳實務:
相關文件:
-
AWS Lambda 執行 (分割成控制平面和資料平面)
相關影片:
相關範例:
相關工具: