

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

# Amazon ECS Service Connect 區域感知路由
<a name="service-connect-zone-aware-routing"></a>

使用 Amazon ECS Service Connect 區域感知路由時，流量會保持在與用戶端相同的可用區域 (AZ) 內。這可降低跨可用區資料傳輸成本和延遲，而不需要額外的基礎設施或應用程式程式碼變更。當端點跨可用AZs平衡時，超過 80% 的流量會保持在本機，而流量權重會隨著端點擴展而動態調整，以維持目標服務之間的平衡負載。對於使用 Service Connect 的所有新的和現有服務，區域感知路由預設為開啟。

## 區域感知路由的運作方式
<a name="service-connect-zone-aware-routing-how-it-works"></a>

演算法使用 Service Connect Proxy 中的 Envoy 區域感知路由功能，根據端點地區性路由流量：

1. **端點探索** - 代理會探索目的地服務及其可用區域放置的所有可用端點。

1. **Same-AZ 優先順序** - 代理會根據來源 （用戶端） 和目的地 （伺服器） AZ 之間的端點分佈比率，計算相同 AZs 中的流量百分比。當端點平均分散到區域時，相同可用區域流量通常會超過 80%。

1. **剩餘容量路由** - 無法停留在相同 AZ 中的流量會根據其剩餘容量分佈至其他 AZs。代理會計算每個區域的剩餘容量，並在具有正剩餘容量的區域之間按比例分割跨可用區域流量。隨著端點擴展或縮減，代理會即時重新計算路由權重。

1. **過載保護和備用** - 為了防止單一可用區域過載，代理至少需要 2 倍的可用AZs數量作為目的地服務中的可用端點。對於 3-AZ 區域，這表示至少 6 個端點。低於此閾值時，區域感知路由會停用，並使用循環配置負載平衡平均分配流量。當端點計數超過閾值時，路由會自動重新啟用。如果相同可用區域中的端點無法使用，流量會重新分佈到其他AZs，以維持可用性。

## 驗證 Amazon EC2 上的區域感知路由
<a name="service-connect-zone-aware-routing-verify"></a>

在使用 Docker 執行時間的 Amazon EC2 容器執行個體上，您可以檢查 Service Connect 代理程式容器中的 Envoy 代理統計資料，以確認區域感知路由處於作用中狀態。此程序需要 AWS Systems Manager Session Manager 主機存取 和 `docker exec`。對於使用 的 AWS Fargate 或 容器執行個體`containerd`，請使用 Amazon Virtual Private Cloud Flow Logs 來驗證路由行為，如中所述[監控區域感知路由](#service-connect-zone-aware-routing-monitoring)。

**使用 Docker 驗證 Amazon EC2 上的區域感知路由**

1. 使用 AWS Systems Manager Session Manager 連線至容器執行個體。將 {{instance-id}} 取代為您的容器執行個體 ID。

   ```
   aws ssm start-session --target {{instance-id}}
   ```

1. 在 Service Connect 代理程式容器中開啟 Shell。

   ```
   sudo docker exec -it $(sudo docker ps --filter "name=ecs-service-connect" -q | head -1) /bin/sh
   ```

1. 從 Envoy 管理員界面查詢區域路由統計資料。

   ```
   curl --unix-socket /tmp/envoy_admin.sock http://unix/stats | grep "lb_zone"
   ```

1. 驗證輸出。具有區域感知路由作用中的運作狀態良好的部署會顯示零個跨區域請求：

   ```
   cluster.{{my-service}}.lb_zone_routing_cross_zone: 0
   cluster.{{my-service}}.lb_zone_cluster_too_small: 0
   ```

下表說明金鑰區域路由指標。


| 指標 | 說明 | 
| --- | --- | 
| lb\_zone\_routing\_cross\_zone | 路由到不同 AZ 中端點的請求數量。持續值 0 會確認所有流量保持在相同的可用區域內。 | 
| lb\_zone\_cluster\_too\_small | 因為端點計數低於最低閾值而略過區域感知路由的次數。初始部署期間會預期非零值，並在端點運作狀態良好時解析。穩定的部署顯示 0。 | 

## 監控區域感知路由
<a name="service-connect-zone-aware-routing-monitoring"></a>

將 Amazon Virtual Private Cloud Flow Logs 與 `az-id` 欄位搭配使用，以觀察網路層級的流量模式。這會顯示每個流程記錄源自和終止的可用區域，可讓您測量相同可用區域與跨可用區域流量比率。您也可以使用 AWS Cost Explorer 來追蹤重新部署服務前後的跨可用區域資料傳輸費用，以啟用區域感知路由。

如需設定流程日誌的詳細資訊，請參閱《*Amazon Virtual Private Cloud 使用者指南*》中的 [VPC 流程日誌](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)。

## 考量事項
<a name="service-connect-zone-aware-routing-considerations"></a>

當您使用區域感知路由時，請記住下列事項：
+ 區域感知路由適用於所有啟動類型。
+ 區域感知路由與透過 共用的跨帳戶 Service Connect 命名空間相容 AWS Resource Access Manager。
+ 現有的服務 （用戶端和伺服器） 需要重新部署一次，才能啟用區域感知路由。在初始重新部署之後，路由會隨著端點變更動態調整，而無需進一步重新部署。