Amazon ECS 藍/綠部署的 Service Connect 資源 - Amazon Elastic Container Service

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

Amazon ECS 藍/綠部署的 Service Connect 資源

搭配藍/綠部署使用 Service Connect 時,您需要設定特定元件,以在藍/綠服務修訂版之間啟用適當的流量路由。本節說明必要的元件及其組態。

架構概觀

Service Connect 透過自動插入 Amazon ECS 任務的受管附屬代理來建置服務探索和服務網格功能。這些代理處理路由決策、重試和指標收集,同時 AWS Cloud Map 提供服務登錄後端。當您在啟用 Service Connect 的情況下部署服務時,該服務會自行註冊 AWS Cloud Map,而用戶端服務會透過 命名空間探索該服務。

在標準 Service Connect 實作中,用戶端服務會連線至邏輯服務名稱,而附屬代理會處理路由至實際服務執行個體的作業。使用藍/綠部署時,此模型會擴展為包含透過testTrafficRules組態路由的測試流量。

在藍/綠部署期間,下列關鍵元件可一起運作:

  • Service Connect Proxy:服務之間的所有流量都會通過 Service Connect Proxy,這會根據組態進行路由決策。

  • AWS Cloud Map 註冊:藍色和綠色部署都會向 註冊 AWS Cloud Map,但綠色部署一開始會註冊為「測試」端點。

  • 測試流量路由:Service Connect 組態testTrafficRules中的 會決定如何識別測試流量並將其路由至綠色部署。這是透過標頭型路由完成的,其中請求中的特定 HTTP 標頭會將流量導向測試修訂版。在預設情況下,當未指定自訂規則時,Service Connect 會辨識 HTTP 型通訊協定的 x-amzn-ecs-blue-green-test標頭。

  • 用戶端組態:命名空間中的所有用戶端都會自動接收生產和測試路由,但只有符合測試規則的請求才會進入綠色部署。

這種方法的功能強大之處在於它在轉換期間處理服務探索的複雜性。隨著流量從藍色轉移到綠色部署,所有連線和探索機制都會自動更新。不需要單獨更新 DNS 記錄、重新設定負載平衡器或部署服務探索變更,因為服務網格會處理所有變更。

流量路由和測試

Service Connect 提供藍/綠部署的進階流量路由功能,包括用於測試案例的標頭型路由和用戶端別名組態。

測試流量標頭規則

在藍/綠部署期間,您可以設定測試流量標頭規則,將特定請求路由到綠色 (新) 服務修訂以供測試之用。這可讓您在完成部署之前,使用受控制的流量驗證新版本。

Service Connect 使用標頭型路由來識別測試流量。在預設情況下,當未指定自訂規則時,Service Connect 會辨識 HTTP 型通訊協定的 x-amzn-ecs-blue-green-test標頭。當請求中出現此標頭時,Service Connect 代理會自動將請求路由到綠色部署進行測試。

測試流量標頭規則可讓您:

  • 將具有特定標頭的請求路由至綠色服務修訂版

  • 使用一部分流量測試新功能

  • 在完全流量切換之前驗證服務行為

  • 實作 Canary 測試策略

  • 在類似生產的環境中執行整合測試

標頭型路由機制可與您現有的應用程式架構無縫搭配運作。用戶端服務不需要知道藍/綠部署程序 - 它們在傳送測試請求時只包含適當的標頭,Service Connect Proxy 會自動處理路由邏輯。

如需設定測試流量標頭規則的詳細資訊,請參閱《Amazon Elastic Container Service API 參考》中的 ServiceConnectTestTrafficHeaderRules

標頭比對規則

標頭比對規則定義藍/綠部署期間路由測試流量的條件。您可以設定多個相符條件,以精確控制哪些請求會路由到綠色服務修訂版。

標頭比對支援:

  • 精確標頭值相符

  • 標頭存在檢查

  • 模式型比對

  • 多個標頭組合

範例使用案例包括將具有特定使用者代理程式字串、API 版本或功能旗標的請求路由至綠色服務進行測試。

如需標頭比對組態的詳細資訊,請參閱《Amazon Elastic Container Service API 參考》中的 ServiceConnectTestTrafficHeaderMatchRules

藍/綠部署的用戶端別名

用戶端別名可在藍/綠部署期間為 服務提供穩定的 DNS 端點。它們可在藍色和綠色服務修訂之間實現無縫流量路由,而無需用戶端應用程式變更其連線端點。

在藍/綠部署期間,用戶端別名為:

  • 維持用戶端連線的一致 DNS 名稱

  • 啟用服務修訂之間的自動流量切換

  • 支援逐步流量遷移策略

  • 將流量重新導向至藍色修訂版,以提供轉返功能

您可以為不同的連接埠或通訊協定設定多個用戶端別名,讓複雜的服務架構在部署期間維持連線。

如需用戶端別名組態的詳細資訊,請參閱《Amazon Elastic Container Service API 參考》中的 ServiceConnectClientAlias

流量路由的最佳實務

使用 Service Connect 實作藍/綠部署的流量路由時,請考慮下列最佳實務:

  • 從標頭型測試開始:使用測試流量標頭規則,在切換所有流量之前,使用受控流量來驗證綠色服務。

  • 設定運作狀態檢查:確保藍色和綠色服務都已設定適當的運作狀態檢查,以防止將流量路由至運作狀態不佳的執行個體。

  • 監控服務指標:在部署期間追蹤兩個服務修訂的關鍵效能指標,以提早識別問題。

  • 計劃復原策略:設定用戶端別名和路由規則,以便在偵測到問題時啟用藍色服務的快速復原。

  • 測試標頭比對邏輯:在非生產環境中驗證標頭比對規則,然後再將其套用至生產部署。

Service Connect 藍/綠部署工作流程

了解 Service Connect 如何管理藍/綠部署程序,可協助您有效實作和疑難排解部署。下列工作流程顯示不同元件如何在部署的每個階段互動。

部署階段

Service Connect 藍/綠部署會經歷幾個不同的階段:

  1. 初始狀態:藍色服務處理 100% 的生產流量。命名空間中的所有用戶端服務會透過 Service Connect 中設定的邏輯服務名稱連線至藍色服務。

  2. Green Service Registration:當綠色部署開始時,它會向 註冊 AWS Cloud Map 為「測試」端點。用戶端服務中的 Service Connect Proxy 會自動接收生產和測試路由組態。

  3. 測試流量路由:包含測試流量標頭 (例如 x-amzn-ecs-blue-green-test) 的請求會由 Service Connect Proxy 自動路由至綠色服務。生產流量會繼續流向藍色服務。

  4. 流量轉移準備:成功測試後,部署程序會準備生產流量轉移。藍色和綠色服務都會保持註冊狀態且運作狀態良好。

  5. 生產流量轉移:Service Connect 組態會更新,將生產流量路由到綠色服務。這會自動發生,而不需要用戶端服務更新或 DNS 變更。

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

  7. 藍色服務取消註冊:成功轉移和驗證流量後,藍色服務會從 取消註冊 AWS Cloud Map 並終止,完成部署。

Service Connect 代理行為

Service Connect 代理在管理藍/綠部署期間的流量方面扮演重要角色。了解其行為可協助您設計有效的測試和部署策略。

藍/綠部署期間的關鍵代理行為:

  • 自動路由探索:代理會自動探索來自 的生產和測試路由 AWS Cloud Map ,而不需要重新啟動應用程式或變更組態。

  • 以標頭為基礎的路由:代理會根據設定的測試流量規則,檢查傳入的請求標頭,並將流量路由至適當的服務修訂。

  • 運作狀態檢查整合:代理只會將流量路由至運作狀態良好的服務執行個體,自動從路由集區中排除運作狀態不佳的任務。

  • 重試和斷路器:代理提供內建的重試邏輯和斷路器功能,可改善部署期間的彈性。

  • 指標收集:代理會收集藍色和綠色服務的詳細指標,以便在部署期間進行全面監控。

服務探索更新

使用 Service Connect 進行藍/綠部署的主要優點之一是自動處理服務探索更新。傳統的藍/綠部署通常需要複雜的 DNS 更新或負載平衡器重新設定,但 Service Connect 會透明地管理這些變更。

在部署期間,Service Connect 會處理:

  • 命名空間更新:Service Connect 命名空間會自動包含藍色和綠色服務端點,並具有適當的路由規則。

  • 用戶端組態:命名空間中的所有用戶端服務會自動接收更新的路由資訊,而不需要重新啟動或重新部署。

  • 逐步轉換:服務探索更新會逐漸且安全地進行,確保持續的請求不會中斷。

  • 回復支援:如果需要回復,Service Connect 可以快速還原服務探索組態,將流量路由回藍色服務。