View a markdown version of this page

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 函數或暫停點。Lambda 勾點會叫用您定義用來執行自訂程式碼的 Lambda 函數。暫停掛鉤會暫停部署,並等待您呼叫 ContinueServiceDeployment 以繼續。為每個生產流量轉移步驟PRE_PRODUCTION_TRAFFIC_SHIFT調用為 PRODUCTION_TRAFFIC_SHIFT或 設定的勾點。

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

  • 接聽程式 – 一種 Elastic Load Balancing 資源,用於透過已設定的通訊協定與連接埠檢查連線請求。您為接聽程式定義的規則決定了 Amazon ECS 如何將請求路由至已註冊的目標。

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

考量事項

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

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

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

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

  • 漸進式驗證:線性部署可讓您透過增加的生產流量來驗證新修訂版,從而提高部署的可信度。

  • 部署持續時間:由於步驟之間的增量流量轉移和等待時間,線性部署的完成時間比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 函數或暫停掛鉤,以執行自動驗證、監控或自訂邏輯。為每個生產流量轉移步驟PRE_PRODUCTION_TRAFFIC_SHIFT調用為 PRODUCTION_TRAFFIC_SHIFT或 設定的勾點。

部署生命週期階段

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

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

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

對於暫停掛鉤,您可以設定逾時最多 20,160 分鐘 (14 天)。整體部署逾時為 30 天。

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