

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

# Amazon ECS 藍色/綠色、線性和 Canary 部署的 Service Connect 資源
<a name="service-connect-blue-green"></a>

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

## 架構概觀
<a name="service-connect-blue-green-architecture"></a>

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 記錄、重新設定負載平衡器或部署服務探索變更，因為服務網格會處理所有工作。

## 流量路由與測試
<a name="service-connect-blue-green-traffic-routing"></a>

Service Connect 為藍/綠部署提供進階的流量路由功能，包括以標頭為基礎的路由與用於測試案例的用戶端別名組態。

### 測試流量標頭規則
<a name="service-connect-test-traffic-header-rules"></a>

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

Service Connect 使用**以標頭為基礎的路由**來識別測試流量。依預設，當未指定自訂規則時，Service Connect 會識別以 HTTP 為基礎的通訊協定的 `x-amzn-ecs-blue-green-test` 標頭。當請求中出現此標頭時，Service Connect Proxy 會自動將請求路由至綠色部署進行測試。

測試流量標頭規則可讓您：
+ 將具有特定標頭的請求路由至綠服務修訂版
+ 使用流量子集測試新功能
+ 在流量完全切換之前驗證服務行為
+ 實作 Canary 測試策略
+ 在類似生產的環境中執行整合測試

以標頭為基礎的路由機制可與現有應用程式架構無縫搭配運作。用戶端服務無需了解藍綠部署程序，只需在傳送測試請求時包含相應的標頭，Service Connect Proxy 就會自動處理路由邏輯。

如需有關設定測試流量標頭規則的詳細資訊，請參閱 *Amazon Elastic Container Service API Reference* 中的 [ServiceConnectTestTrafficHeaderRules](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectTestTrafficHeaderRules.html)。

### 標頭比對規則
<a name="service-connect-header-match-rules"></a>

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

標頭比對支援：
+ 精確標頭值比對
+ 檢查標頭是否存在
+ 模式型比對
+ 多個標頭組合

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

如需有關標頭比對組態的詳細資訊，請參閱 *Amazon Elastic Container Service API Reference* 中的 [ServiceConnectTestTrafficHeaderMatchRules](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectTestTrafficHeaderMatchRules.html)。

### 用於藍/綠部署的用戶端別名
<a name="service-connect-client-alias-blue-green"></a>

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

在藍/綠部署期間，用戶端別名會：
+ 為用戶端連線維持一致的 DNS 名稱
+ 啟用服務修訂版之間的自動流量切換
+ 支援漸進式流量遷移策略
+ 透過將流量重新導向至藍色修訂版，提供復原功能

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

如需有關用戶端別名組態的詳細資訊，請參閱 *Amazon Elastic Container Service API Reference* 中的 [ServiceConnectClientAlias](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectClientAlias.html)。

### 流量路由最佳實務
<a name="service-connect-blue-green-best-practices"></a>

使用 Service Connect 實作藍/綠部署的流量路由時，請考量下列最佳實務：
+ **從標頭型測試開始著手**：先使用測試流量標頭規則透過受控流量來驗證綠服務，再切換所有流量。
+ **設定運作狀態檢查**：確保藍色與綠色服務均已設定相應的運作狀態檢查，防止將流量路由至運作狀態不良的執行個體。
+ **監控服務指標**：在部署期間追蹤兩個服務修訂版的關鍵績效指標，以及早識別問題。
+ **規劃復原策略**：設定用戶端別名與路由規則，以便在偵測到問題時能夠快速復原至藍色服務。
+ **測試標頭比對邏輯**：先在非生產環境中驗證您的標頭比對規則，再將規則套用至生產部署。

## Service Connect 藍/綠部署工作流程
<a name="service-connect-blue-green-workflow"></a>

了解 Service Connect 如何管理藍/綠部署程序，可協助有效地實作部署並對其進行疑難排解。下列工作流程展示了不同元件如何在部署的每個階段互動。

### 部署階段
<a name="service-connect-deployment-phases"></a>

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

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

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

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

1. **流量轉移準備**：成功測試後，部署程序會準備進行生產流量轉移。藍色與綠色服務都會保持註冊狀態且運作狀態良好。

1. **生產流量轉移**：Service Connect 組態會更新，將生產流量路由至綠色服務。此動作會自動發生，無需更新用戶端服務或變更 DNS。

1. **封裝時間段**：在生產流量轉移後，藍色與綠色服務修訂版同時執行的持續時間。

1. **藍色服務取消註冊**：在成功的流量轉移和驗證之後，藍色服務會從 取消註冊 AWS Cloud Map 並終止，完成部署。

### Service Connect Proxy 行為
<a name="service-connect-proxy-behavior"></a>

Service Connect Proxy 在管理藍/綠部署期間的流量方面起著重要作用。了解其行為可協助您設計有效的測試與部署策略。

藍/綠部署期間的關鍵代理行為：
+ **自動路由探索**：代理會自動探索來自 的生產和測試路由 AWS Cloud Map ，而不需要重新啟動應用程式或變更組態。
+ **以標頭為基礎的路由**：代理會檢查傳入的請求標頭，並根據設定的測試流量規則將流量路由至相應的服務修訂版。
+ **運作狀態檢查整合**：代理僅會將流量路由至運作狀態良好的服務執行個體，自動從路由集區中排除運作狀態不良的任務。
+ **重試與斷路器**：代理會提供內建的重試邏輯與斷路器功能，從而改善部署期間的恢復能力。
+ **指標收集**：代理會收集藍色與綠色服務的詳細指標，以便在部署期間進行全面監控。

### 服務探索更新
<a name="service-connect-service-discovery-updates"></a>

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

在部署期間，Service Connect 會處理：
+ **命名空間更新**：Service Connect 命名空間會自動包含藍色與綠色服務端點，並具有相應的路由規則。
+ **用戶端組態**：命名空間中的所有用戶端服務會自動接收更新後的路由資訊，無需重新啟動或重新部署。
+ **逐步轉移**：服務探索更新會逐步且安全地進行，確保不會中斷正在進行的請求。
+ **復原支援**：如果需要復原，Service Connect 可以快速還原服務探索組態，將流量路由回藍色服務。