Amazon ECS 藍/綠服務部署工作流程 - Amazon Elastic Container Service

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

Amazon ECS 藍/綠服務部署工作流程

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

  1. 準備階段:在現有的藍色環境旁建立綠色環境。這包括佈建新的服務修訂,以及準備目標群組。

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

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

  4. 流量轉移階段:根據您設定的部署策略,將生產流量從藍色轉移到綠色。此階段包含監控和驗證檢查點。

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

  6. 完成階段:根據您的組態,透過終止藍色環境或維護潛在的復原案例來完成部署。

工作流程

下圖說明完整的藍/綠部署工作流程,顯示 Amazon ECS 與 Application Load Balancer 之間的互動:

完整圖表顯示 Amazon ECS 中的藍/綠部署程序,其中包含詳細的元件互動、流量轉移階段和監控檢查點

增強型部署工作流程包含下列詳細步驟:

  1. 初始狀態:藍色服務 (目前生產) 處理 100% 的生產流量。Application Load Balancer 具有單一接聽程式,其規則會將所有請求路由至包含運作狀態良好藍色任務的藍色目標群組。

  2. 綠色環境佈建:Amazon ECS 會使用更新的任務定義建立新的任務。這些任務會向新的綠色目標群組註冊,但一開始不會接收流量。

  3. 運作狀態檢查驗證:Application Load Balancer 會對綠色任務執行運作狀態檢查。只有在綠色任務通過運作狀態檢查時,部署才會繼續進行下一個階段。

  4. 測試流量路由:如果已設定,Application Load Balancer 的接聽程式規則會將特定流量模式 (例如具有測試標頭的請求) 路由至綠色環境,以便在生產流量保持藍色時進行驗證。這由處理生產流量的相同接聽程式控制,根據請求屬性使用不同的規則。

  5. 生產流量轉移:根據部署組態,流量會從藍色轉移到綠色。在 ECS 藍色/綠色部署中,這是立即 all-at-once轉移,其中 100% 的流量會從藍色移至綠色環境。Application Load Balancer 使用單一接聽程式搭配接聽程式規則,根據權重控制藍色和綠色目標群組之間的流量分佈。

  6. 監控和驗證:在整個流量轉移期間,Amazon ECS 會監控 CloudWatch 指標、警示狀態和部署運作狀態。如果偵測到問題,自動轉返觸發會啟用。

  7. 製作期間:生產流量轉移後,藍色和綠色服務修訂同時執行的持續時間。

  8. 藍色環境終止:在成功的流量轉移和驗證之後,藍色環境會終止以釋放叢集資源,或維護以快速復原功能。

  9. 最終狀態:綠色環境會成為新的生產環境,處理 100% 的流量。部署會標示為成功。

部署生命週期階段

藍/綠部署程序會經歷不同的生命週期階段 (部署操作中的一系列事件,例如「生產流量轉移後」),每個事件都有特定的責任和驗證檢查點。了解這些階段可協助您監控部署進度,並有效疑難排解問題。

每個生命週期階段最多可持續 24 小時。建議值保持在 24 小時標記以下。這是因為非同步程序需要時間來觸發掛鉤。系統逾時、部署失敗,然後在階段達到 24 小時後啟動復原。 AWS CloudFormation 部署有額外的逾時限制。雖然 24 小時階段限制仍然有效,但 對整個部署 AWS CloudFormation 強制執行 36 小時限制。 會 AWS CloudFormation 失敗部署,然後在程序未在 36 小時內完成時啟動轉返。

生命週期階段 描述 將此階段用於 lifecycle hook?
RECONCILE_SERVICE 此階段只會在您以 ACTIVE 狀態啟動超過 1 個服務修訂的新服務部署時發生。
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 生產流量正在轉移到綠色服務修訂版。綠色服務修訂版正在從 0% 遷移到 100% 的生產流量。
POST_PRODUCTION_TRAFFIC_SHIFT 生產流量轉移已完成。
BAKE_TIME 同時執行藍色和綠色服務修訂的持續時間。
CLEAN_UP 藍色服務修訂已完全縮減至 0 個執行中的任務。綠色服務修訂現在是此階段之後的生產服務修訂。

每個生命週期階段都包含內建驗證檢查點,這些檢查點必須先通過,才能繼續進行下一個階段。如果任何驗證失敗,部署可以自動復原,以維持服務的可用性和可靠性。