什麼是 AWS App Mesh? - AWS 應用程式網格

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

什麼是 AWS App Mesh?

重要

支援終止通知:2026 年 9 月 30 日, AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請造訪此部落格文章,從 遷移 AWS App Mesh 至 Amazon ECS Service Connect

AWS App Mesh 是一種服務網格,可讓您輕鬆監控和控制服務。服務網格是專用於處理 service-to-service通訊的基礎設施層,通常透過與應用程式程式碼一起部署的一系列輕量型網路代理。App Mesh 會標準化您的服務通訊方式,為您提供 end-to-end可見性,並協助確保應用程式的高可用性。App Mesh 對應用程式中的每個服務提供一致的可見性和網路流量控制。

將 App Mesh 新增至範例應用程式

重要

支援終止通知:2026 年 9 月 30 日, AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請造訪此部落格文章,從 遷移 AWS App Mesh 至 Amazon ECS Service Connect

請考慮下列未使用 App Mesh 的簡單範例應用程式。這兩個服務可以在 AWS Fargate、Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS)、Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上的 Kubernetes 或 Amazon EC2執行個體上使用 Docker 執行。

Diagram showing client service connecting to servicea.apps.local, which connects to serviceb.apps.local.

在此圖中, serviceAserviceB 都可以透過apps.local命名空間探索。例如,假設您決定部署serviceb.apps.local名為 的新版本servicebv2.apps.local。接下來,您要將流量的百分比從 導向 servicea.apps.localserviceb.apps.local並將百分比 導向 servicebv2.apps.local。當您確定 servicebv2 效能良好時,您要將 100% 的流量傳送至該流量。

App Mesh 可協助您執行此操作,而不需要變更任何應用程式碼或註冊的服務名稱。如果您搭配此範例應用程式使用 App Mesh,則您的網格看起來可能會如下圖所示。

Diagram showing App Mesh architecture with virtual services, nodes, and router in a mesh network.

在此組態中,服務不再直接彼此通訊。相反地,它們透過代理彼此通訊。與 servicea.apps.local服務一起部署的代理會讀取 App Mesh 組態,並根據servicebv2.apps.local組態將流量傳送至 serviceb.apps.local或 。

App Mesh 的元件

App Mesh 由下列元件組成,如上例所示:

  • 服務網格 – 服務網格是位於其中之服務之間的網路流量邏輯界限。在此範例中,網格名為 apps,且包含網格的所有其他資源。如需詳細資訊,請參閱服務網格

  • 虛擬服務 – 虛擬服務是虛擬節點透過虛擬路由器直接或間接提供的實際服務摘要。在圖中,兩個虛擬服務代表兩個實際服務。虛擬服務的名稱是實際服務的可探索名稱。當虛擬服務和實際服務具有相同的名稱時,多個服務可以使用在實作 App Mesh 之前使用的相同名稱彼此通訊。如需詳細資訊,請參閱虛擬服務

  • 虛擬節點 – 虛擬節點可做為可探索服務的邏輯指標,例如 Amazon ECS或 Kubernetes 服務。針對每個虛擬服務,您至少會有一個虛擬節點。在 圖中,servicea.apps.local虛擬服務會取得名為 之虛擬節點的組態資訊serviceAserviceA 虛擬節點已設定為服務探索servicea.apps.local的名稱。serviceb.apps.local 虛擬服務設定為透過名為 的serviceBv2虛擬路由器將流量路由至 serviceB和虛擬節點serviceB。如需詳細資訊,請參閱虛擬節點

  • 虛擬路由器和路由 – 虛擬路由器會處理網格中一或多個虛擬服務的流量。路由會與虛擬路由器相關聯。此路由用於比對虛擬路由器的請求,並將流量分佈至其相關聯的虛擬節點。在上圖中,serviceB虛擬路由器有一個路由,會將一定百分比的流量引導至serviceB虛擬節點,並將一定百分比的流量引導至serviceBv2虛擬節點。您可以設定路由至特定虛擬節點的流量百分比,並隨時間變更。您可以根據HTTP標頭、URL路徑或 gRPC 服務和方法名稱等條件路由流量。您可以設定重試政策,在回應發生錯誤時重試連線。例如,在 圖例中,路由的重試政策可以指定 serviceb.apps.local 的連線會重試五次,如果 serviceb.apps.local 傳回特定類型的錯誤,重試嘗試之間會間隔十秒。如需詳細資訊,請參閱 虛擬路由器路由

  • Proxy – 您可以在建立網格及其資源後,將服務設定為使用 Proxy。代理會讀取 App Mesh 組態,並適當地引導流量。在 圖例中,來自 servicea.apps.local的所有通訊serviceb.apps.local都會經過與每個 服務一起部署的代理。服務會使用與導入 App Mesh 之前相同的服務探索名稱彼此通訊。由於代理會讀取 App Mesh 組態,因此您可以控制這兩個 服務如何互相通訊。當您想要變更 App Mesh 組態時,您不需要自行或代理變更或重新部署服務。如需詳細資訊,請參閱Envoy 映像

如何開始

若要使用 App Mesh,您必須擁有在 AWS Fargate、Amazon ECS、Amazon EKS、Amazon 上的 Kubernetes EC2或 EC2 Amazon 搭配 Docker 上執行的現有服務。

若要開始使用 App Mesh,請參閱下列其中一個指南:

存取應用程式網格

您可以透過下列方式使用 App Mesh:

AWS Management Console

主控台是瀏覽器型介面,可用來管理 App Mesh 資源。您可以在 開啟 App Mesh 主控台https://console.aws.amazon.com/appmesh/

AWS CLI

為廣泛的 AWS 產品提供命令,並在 Windows、Mac 和 Linux 上支援 。若要開始使用,請參閱《AWS Command Line Interface 使用者指南》。如需 App Mesh 命令的詳細資訊,請參閱 AWS CLI 命令參考 中的 Appmesh

AWS Tools for Windows PowerShell

為在 PowerShell 環境中編寫指令碼的人員提供廣泛的 AWS 產品命令。若要開始使用,請參閱《 使用者指南AWS Tools for Windows PowerShell》。如需有關應用程式網格的 cmdlet 詳細資訊,請參閱 適用於 AWS Cmdlet PowerShell的工具參考 中的應用程式網格

AWS CloudFormation

可讓您建立範本,描述您想要的所有 AWS 資源。使用 範本,為您 AWS CloudFormation 佈建和設定 資源。若要開始使用,請參閱《AWS CloudFormation 使用者指南》。如需 App Mesh 資源類型的詳細資訊,請參閱範本參考 中的 App Mesh 資源類型AWS CloudFormation 參考

AWS SDKs

我們也提供SDKs可讓您從各種程式設計語言存取 App Mesh。SDKs 會自動處理下列任務:

  • 加密簽署服務請求

  • 重試請求

  • 處理錯誤回應

如需可用 的詳細資訊SDKs,請參閱適用於 Amazon Web Services 的工具。

如需 App Mesh 的詳細資訊APIs,請參閱AWS App Mesh API參考