Amazon ECS 線性部署 - Amazon Elastic Container Service

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

Amazon ECS 線性部署

線性部署會逐漸將流量從舊服務修訂版轉移到新的服務修訂版,隨著時間的推移以相等遞增,允許您監控每個步驟,然後再繼續進行下一個步驟。透過 Amazon ECS 線性部署,控制流量轉移的速度,並透過增加的生產流量來驗證新的服務修訂。此方法提供一種可控制的方式來部署變更,並能夠監控每個增量的效能。

線性部署中涉及的資源

以下是 Amazon ECS 線性部署中涉及的資源:

  • 流量轉移 - Amazon ECS 用來轉移生產流量的程序。對於 Amazon ECS 線性部署,流量會以相等百分比增量轉移,每個增量之間的可設定等待時間。

  • 步驟百分比 - 線性部署期間每個增量的流量百分比。此欄位採用 Double 作為值,有效值介於 3.0 到 100.0 之間。

  • 步驟製作時間 - 在線性部署期間,每個流量轉移增量之間的等待時間。有效值為 0 - 1440 分鐘。

  • 部署製作時間 - 在將所有生產流量轉移到新服務修訂版之後,Amazon ECS 會在終止舊服務修訂版之前等待的時間,以分鐘為單位。這是生產流量轉移後,藍色和綠色服務修訂同時執行的持續時間。

  • 生命週期階段 – 部署操作中的一系列事件,例如「生產流量轉移後」。

  • 生命週期掛鉤 - 在特定生命週期階段執行的 Lambda 函數。您可以建立可驗證部署的 函數。為每個生產流量轉移步驟調用為 PRODUCTION_TRAFFIC_SHIFT 設定的 Lambda 函數或生命週期掛鉤。

  • 目標群組 - 用於將請求路由到一或多個已註冊目標 (例如 EC2 執行個體) 的 ELB 資源。當您建立接聽程式時,可以為其預設動作指定一個目標群組。流量會轉送至接聽程式規則中指定的目標群組。

  • 接聽程式 - 使用您設定的通訊協定和連接埠檢查連線請求的 ELB 資源。您為接聽程式定義的規則決定了 Amazon ECS 如何將請求路由至已註冊的目標。

  • 規則 - 與接聽程式相關聯的 ELB 資源。規則定義了請求的路由方式,包含動作、條件與優先順序。

考量事項

選擇部署類型時,請考量下列事項:

  • 資源用量:線性部署會同時暫時執行藍色和綠色服務修訂版,這可能會在部署期間將您的資源用量加倍。

  • 部署監控:線性部署提供詳細的部署狀態資訊,可讓您監控部署程序的每個階段和每個流量轉移增量。

  • 回復:線性部署可讓您在偵測到問題時更輕鬆地回復到先前的版本,因為藍色修訂版會持續執行,直到製作時間過期為止。

  • 逐步驗證:線性部署可讓您使用增加的生產流量來驗證新修訂版,從而提高部署的可信度。

  • 部署持續時間:由於步驟之間的增量流量轉移和等待時間,線性部署的完成時間比all-at-once部署更長。

線性部署的運作方式

Amazon ECS 線性部署程序遵循結構化方法,具有六個不同的階段,以確保安全可靠的應用程式更新。每個階段都有特定用途,以驗證應用程式,並將其從目前版本 (藍色) 轉換為新版本 (綠色)。

  1. 準備階段 – 在現有的藍色環境旁建立綠色環境。

  2. 部署階段:將新的服務修訂版部署到綠色環境。Amazon ECS 會使用更新後的服務修訂版啟動新任務,同時藍色環境會繼續處理生產流量。

  3. 測試階段:使用測試流量路由驗證綠色環境。Application Load Balancer 會將測試請求導向綠色環境,同時生產流量仍保留在藍色環境中。

  4. 線性流量轉移階段:根據您設定的部署策略,以相等百分比遞增,逐步將生產流量從藍色轉移到綠色。

  5. 監控階段:在封裝時間段內監控應用程式運作狀態、效能指標與警示狀態。偵測到問題時,會啟動復原操作。

  6. 完成階段:終止藍色環境以完成部署。

線性流量轉移階段遵循下列步驟:

  • 初始 - 部署從 100% 路由到藍色 (目前) 服務修訂版的流量開始。綠色 (新) 服務修訂最初會接收測試流量,但不會接收生產流量。

  • 增量流量轉移 - 流量會以相等百分比的增量逐漸從藍色轉移到綠色。例如,使用 10.0% 步驟組態時,流量轉移會如下所示:

    • 步驟 1:10.0% 到綠色,90.0% 到藍色

    • 步驟 2:20.0% 到綠色,80.0% 到藍色

    • 步驟 3:30.0% 到綠色,70.0% 到藍色

    • 因此,直到 100% 達到綠色

  • 步驟製作時間 - 在每個流量轉移增量之間,部署會等待可設定的持續時間 (步驟製作時間),以允許在流量負載增加的情況下監控和驗證新修訂版的效能。請注意,當流量轉移 100.0% 時,會略過最後一個步驟的製作時間。

  • 生命週期掛鉤 - 選用 Lambda 函數可以在部署期間的不同生命週期階段執行,以執行自動驗證、監控或自訂邏輯。為每個生產流量轉移步驟調用為 PRODUCTION_TRAFFIC_SHIFT 設定的 Lambda 函數或生命週期掛鉤。

部署生命週期階段

線性部署程序會經過不同的生命週期階段,每個階段都有特定的責任和驗證檢查點。了解這些階段有助於監控部署進度並對問題進行有效的疑難排解。

每個生命週期階段最多可持續 24 小時,此外,ProductION_TRAFFIC_SHIFT 中的每個流量轉移步驟最多可持續 24 小時。建議將該值保持在 24 小時標記以內。這是因為非同步程序需要時間來觸發勾點。系統逾時、部署失敗,然後在階段達到 24 小時後啟動轉返。

CloudFormation 部署有額外的逾時限制。雖然 24 小時階段限制仍然有效,但 會 CloudFormation 強制執行整個部署的 36 小時限制。 會 CloudFormation 失敗部署,然後在程序未在 36 小時內完成時啟動轉返。

生命週期階段 Description 生命週期掛鉤支援
RECONCILE_SERVICE 僅當啟動新的服務部署且存在多個處於 ACTIVE 狀態的服務修訂版時,此階段才會發生。
PRE_SCALE_UP 綠色服務修訂版尚未啟動。藍色服務修訂版正在處理 100% 的生產流量。沒有測試流量。
SCALE_UP 綠色服務修訂版向上擴展到 100% 並啟動新任務的時間。此時綠色服務修訂版不處理任何流量。
POST_SCALE_UP 綠色服務修訂版已啟動。藍色服務修訂版正在處理 100% 的生產流量。沒有測試流量。
TEST_TRAFFIC_SHIFT 藍色與綠色服務修訂版均在執行中。藍色服務修訂版處理 100% 的生產流量。綠色服務修訂版正在從 0% 遷移至 100% 的測試流量。
POST_TEST_TRAFFIC_SHIFT 測試流量轉移已完成。綠色服務修訂版處理 100% 的生產流量。
PRODUCTION_TRAFFIC_SHIFT 流量會逐漸從藍色轉換為綠色,並以相等百分比遞增,直到綠色接收到 100% 的流量。每個流量轉移都會調用具有 24 小時逾時的生命週期關聯。
POST_PRODUCTION_TRAFFIC_SHIFT 生產流量轉移已完成。
BAKE_TIME 藍色與綠色服務修訂版同時執行的持續時間。
CLEAN_UP 藍色服務修訂已完全縮減至 0 項執行中任務。在此階段之後,綠色服務修訂版現在是生產服務修訂版。