什么是 Amazon App Mesh? - Amazon App Mesh
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

什么是 Amazon App Mesh?

Amazon App Mesh 是一种服务网格,可轻松监控和控制服务。服务网格是一个基础设施层,专门用于处理服务到服务的通信,通常通过与应用程序代码一起部署的一系列轻量级网络代理。App Mesh 实现了服务通信方式的标准化,为您提供端到端的可见性,并有助于确保应用程序的高可用性。App Mesh 将为您提供对应用程序中的每个服务的一致可见性和网络流量控制。

将 App Mesh 添加到示例应用程序中

考虑以下不使用 App Mesh 的简单示例应用程序。这两项服务可以在 Amazon Fargate、Amazon Elastic Container Service (Amazon ECS) 、Amazon Elastic Kubernetes Service (Amazon EKS)、Amazon Elastic Compute Cloud (Amazon EC2) 实例上的 Kubernetes 或带 Docker 的 Amazon EC2 实例上运行。

在此插图中,serviceAserviceB 均可通过 apps.local 命名空间发现。例如,假设您决定部署 serviceb.apps.local named servicebv2.apps.local 的新版本。接下来,您要将一定比例的流量从 servicea.apps.local 定向到 serviceb.apps.local,将一定比例的流量定向到 servicebv2.apps.local。当您确定 servicebv2 它表现不错时,您想向它发送100%的流量。

App Mesh 无需更改任何应用程序代码或注册的服务名称即可帮助您完成此操作。如果您在此示例应用程序中使用 App Mesh,则您的网格可能如下图所示。

在此配置中,服务不再直接相互通信。相反,它们通过代理相互通信。与 servicea.apps.local 服务一起部署的代理读取 App Mesh 配置,并根据配置向 serviceb.apps.localservicebv2.apps.local 根据配置发送流量。

App Mesh

App Mesh 由以下组件组成,如上一个示例所示:

  • 服务网格 — 一种用于驻留在其内的服务之间的网络流量的逻辑边界。在示例中,网格被命名为 apps,它包含网格的所有其他资源。有关更多信息,请参阅 服务网格

  • 虚拟服务 — 一种抽象的实际服务,由虚拟节点直接提供或通过虚拟路由器的方式间接提供。在插图中,两项虚拟服务代表两项实际服务。虚拟服务的名称是实际服务的可发现名称。当虚拟服务和实际服务具有相同名称时,多项服务可以使用与实现 App Mesh 之前相同的名称相互通信。有关更多信息,请参阅 虚拟服务

  • 虚拟节点 — 虚拟节点充当可发现服务的逻辑指针,如 Amazon ECS 或 Kubernetes 服务。对于每项虚拟服务,您将至少有一个虚拟节点。在插图中,servicea.apps.local 虚拟服务获取名为 serviceA 的虚拟节点的配置信息。serviceA 虚拟节点配置了用于服务发现的 servicea.apps.local 名称。serviceb.apps.local 虚拟服务配置为通过名为 serviceB 的虚拟路由器将流量路由到 serviceBserviceBv2 虚拟节点。有关更多信息,请参阅 虚拟节点

  • 虚拟路由器 — 处理用于您的网格内一项或多个虚拟服务的流量。路由与虚拟路由器关联。该路由用于匹配对虚拟路由器的请求并将流量分发到其关联的虚拟节点。在上图中,serviceB 虚拟路由器的路由将一定比例的流量定向到 serviceB 虚拟节点,将一定百分比的流量定向到 serviceBv2 虚拟节点。您可以设置路由到特定虚拟节点的流量百分比,并随着时间推移进行更改。您可以根据诸如 HTTP 标头、URL 路径或 gRPC 服务和方法名称之类的标准来路由流量。您可以配置重试策略,以便在响应中出现错误时重试连接。例如,在插图中,如果 serviceb.apps.local 返回特定类型的错误,serviceb.apps.local 路由的重试策略可以指定重试与 连接五次,两次重试之间有十秒钟。有关更多信息,请参阅 虚拟路由器路由

  • 代理 — 创建网格及其资源后,您可以将服务配置为使用代理。代理读取 App Mesh 配置并适当地引导流量。在插图中,所有从 servicea.apps.localserviceb.apps.local 的通信都通过为每项服务部署的代理进行。这些服务使用与引入 App Mesh 之前相同的服务发现名称相互通信。由于代理会读取 App Mesh 配置,因此您可以控制这两项服务之间的通信方式。如果要更改 App Mesh 配置,则无需更改或重新部署服务本身或代理。有关更多信息,请参阅 Envoy 镜像

如何开始

要使用 App Mesh,您必须在 Amazon Fargate、亚马逊 ECS、亚马逊 EKS、亚马逊 ECS、亚马逊 EC2 上的 Kubernetes 或带有 Docker 的亚马逊 EC2 上运行现有服务。

要开始使用 App Mesh 中的标签,请参阅以下指南:

访问 App Mesh

您可以通过以下方式使用 App Mesh:

Amazon Web Services Management Console

控制台是一个基于浏览器的界面,您可以用它来管理 App Mesh 资源。您可以通过访问 https://console.aws.amazon.com/appmesh/ 打开 App Mesh 控制台。

Amazon CLI

提供大量 Amazon 产品的相关命令,同时被 Windows、Mac 和 Linux 支持。要开始使用,请参阅 Amazon Command Line Interface 用户指南。有关 App Mesh 的更多信息,请参阅 Amazon CLI Command Reference 中的 appmesh

Amazon Tools for Windows PowerShell

为在 PowerShell 环境中编写脚本的用户提供大量 Amazon 产品的相关命令。要开始使用,请参阅 Amazon Tools for Windows PowerShell 用户指南。有关 Amazon Mesh 的 Cmdlet 的更多信息,请参阅Amazon Tools for PowerShell Cmdlet Reference中的App Mesh

Amazon CloudFormation

您可以创建一个模板来描述要使用的所有 Amazon 资源。使用模板为您 Amazon CloudFormation 预置和配置资源。要开始使用,请参阅Amazon CloudFormation《用户指南》。有关 App Mesh 资源类型的更多信息,请参阅Amazon CloudFormation《模板参考》App Mesh 资源类型参考。

Amazon 软件开发工具包

我们还提供 SDK 用于通过各种编程语言访问 App Mesh。软件开发工具包将自动处理任务,例如:

  • 使用密码对服务请求签名

  • 重试请求

  • 处理错误响应

有关可用软件开发工具包的更多信息,请参阅适用于 Amazon Web Services 的工具

有关使用这些 App Mesh API 的更多信息,请参阅 Amazon App Mesh API 参考