本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 藍/綠部署會經歷幾個不同的階段:
-
初始狀態:藍色服務處理 100% 的生產流量。命名空間中的所有用戶端服務會透過 Service Connect 中設定的邏輯服務名稱連線至藍色服務。
-
Green Service Registration:當綠色部署開始時,它會向 註冊 AWS Cloud Map 為「測試」端點。用戶端服務中的 Service Connect Proxy 會自動接收生產和測試路由組態。
-
測試流量路由:包含測試流量標頭 (例如
x-amzn-ecs-blue-green-test
) 的請求會由 Service Connect Proxy 自動路由至綠色服務。生產流量會繼續流向藍色服務。 -
流量轉移準備:成功測試後,部署程序會準備生產流量轉移。藍色和綠色服務都會保持註冊狀態且運作狀態良好。
-
生產流量轉移:Service Connect 組態會更新,將生產流量路由到綠色服務。這會自動發生,而不需要用戶端服務更新或 DNS 變更。
-
製作期間:生產流量轉移後,藍色和綠色服務修訂同時執行的持續時間。
-
藍色服務取消註冊:成功轉移和驗證流量後,藍色服務會從 取消註冊 AWS Cloud Map 並終止,完成部署。
Service Connect 代理行為
Service Connect 代理在管理藍/綠部署期間的流量方面扮演重要角色。了解其行為可協助您設計有效的測試和部署策略。
藍/綠部署期間的關鍵代理行為:
-
自動路由探索:代理會自動探索來自 的生產和測試路由 AWS Cloud Map ,而不需要重新啟動應用程式或變更組態。
-
以標頭為基礎的路由:代理會根據設定的測試流量規則,檢查傳入的請求標頭,並將流量路由至適當的服務修訂。
-
運作狀態檢查整合:代理只會將流量路由至運作狀態良好的服務執行個體,自動從路由集區中排除運作狀態不佳的任務。
-
重試和斷路器:代理提供內建的重試邏輯和斷路器功能,可改善部署期間的彈性。
-
指標收集:代理會收集藍色和綠色服務的詳細指標,以便在部署期間進行全面監控。
服務探索更新
使用 Service Connect 進行藍/綠部署的主要優點之一是自動處理服務探索更新。傳統的藍/綠部署通常需要複雜的 DNS 更新或負載平衡器重新設定,但 Service Connect 會透明地管理這些變更。
在部署期間,Service Connect 會處理:
-
命名空間更新:Service Connect 命名空間會自動包含藍色和綠色服務端點,並具有適當的路由規則。
-
用戶端組態:命名空間中的所有用戶端服務會自動接收更新的路由資訊,而不需要重新啟動或重新部署。
-
逐步轉換:服務探索更新會逐漸且安全地進行,確保持續的請求不會中斷。
-
回復支援:如果需要回復,Service Connect 可以快速還原服務探索組態,將流量路由回藍色服務。