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

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

什么是 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 Container Container Service (Amazon EKS)、Amazon EC2 实例上的 Kubernetes 实例。

在此插图中,两者serviceAserviceB可通过apps.local命名空间。比方说,例如,你决定部署新版本serviceb.apps.local被命名servicebv2.apps.local. 接下来,你想引导一定百分比的流量来自servicea.apps.localserviceb.apps.local和百分比到servicebv2.apps.local. 当你确定servicebv2表现良好,你想将 100% 的流量发送给它。

App Mesh 可以帮助您在不更改任何应用程序代码或注册服务名称的情况下完成 如果您在此示例应用程序中使用 App Mesh,那么您的网格可能看起来像下图所示。

在此配置中,服务不再直接相互通信。相反,他们通过代理相互沟通。使用servicea.apps.local服务读取 App Mesh 配置并将流量发送到serviceb.apps.local要么servicebv2.apps.local根据配置。

App Mesh 的组件

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

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

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

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

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

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

如何开始

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

要开始使用 App Mesh,请参阅以下指南之一:

访问 App Mesh

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

Amazon Web Services Management Console

该控制台是一个基于浏览器的界面,您可以用它来管理 App Mesh 资源。你可以在以下位置打开 App Mesh 控制台https://console.aws.amazon.com/appmesh/.

Amazon CLI

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

Amazon Tools for Windows PowerShell

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

Amazon CloudFormation

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

Amazon 开发工具包

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

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

  • 重试请求

  • 处理错误响应

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

有关 App Mesh API 的更多信息,请参阅Amazon App MeshAPI 参考.