什麼是 AWS App Mesh? - AWS App Mesh

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

什麼是 AWS App Mesh?

AWS App Mesh是一種服務網格,可以輕鬆地監控和控制服務。服務網格是一個專門用於處理通信的基礎架構層, service-to-service 通常是通過與應用程序代碼一起部署的輕量級網絡代理數組。App Mesh 標準化服務通訊方式,為您提供可 end-to-end 見性,並有助於確保 App Mesh 的高可用性。App Mesh 對應用程式中的每個服務提供一致的可見性和網路流量控制。

將 App Mesh 加入範例應用程式

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

在此圖例中serviceAserviceB可透過apps.local命名空間探索和。例如,假設您決定部署新版本的serviceb.apps.local namedservicebv2.apps.local. 接下來,您想要將流量的百分比定servicea.apps.local向到,serviceb.apps.local並將百分比導向到servicebv2.apps.local。當您確定表現servicebv2良好時,您想要將 100% 的流量發送給它。

App Mesh 可以幫助您完成此操作,而無需更改任何應用程序代碼或註冊服務名稱。如果您將 App Mesh 與此範例應用程式搭配使用,則您的網格看起來可能如下圖所示。

在此配置中,服務不再直接相互通信。相反,他們通過代理相互通信。隨servicea.apps.local服務一起部署的 Proxy 會讀取 App Mesh 組態,並將流量傳送至serviceb.apps.localservicebv2.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會透過與每個服務一起部署的 Proxy 進行。這些服務會使用他們在引入 App Mesh 之前使用的相同服務探索名稱彼此通訊。由於 Proxy 會讀取 App Mesh 組態,因此您可以控制兩個服務之間的通訊方式。當您想要變更 App Mesh 設定時,您不需要變更或重新部署服務本身或 Proxy。如需詳細資訊,請參閱 特使形象

如何開始

要使用應用程序網格,您必須在亞馬遜 ECSAWS Fargate,亞馬遜 EKS,亞馬遜 EC2 上的庫伯內特斯或 Amazon EC2 上運行的現有服務。

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

存取 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》。如需適用於 App Mesh 之指令程式的相關資訊,請參閱 PowerShellCmdlet 參考AWS工具中的 App Mesh 格

AWS CloudFormation

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

AWS SDK

我們也提供開發套件,可以從各種程式語言存取 App Mesh。SDK 會自動處理以下任務:

  • 加密簽署服務請求

  • 重試請求

  • 處理錯誤回應

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

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