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

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

什么是 Amazon App Mesh?

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

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

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

在此插图中,serviceAserviceB均可通过apps.local命名空间被发现。例如,假设您决定部署新版本的 namserviceb.apps.local edservicebv2.apps.local。接下来,您需要将一定百分比的流量定servicea.apps.local向到,将百分比serviceb.apps.local的流量定向到servicebv2.apps.local。当你确定效果servicebv2不错时,你想向它发送百分之百的流量。

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虚拟服务获取名为的虚拟节点的配置信息serviceAserviceA虚拟节点的servicea.apps.local名称配置为服务发现。serviceb.apps.local虚拟服务配置为通过名为的serviceBv2虚拟路由器将流量路由到serviceB和虚拟节点serviceB。有关更多信息,请参阅虚拟节点

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

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

如何开始

要使用 App Mesh,你必须在 Amazon ECSAmazon Fargate、亚马逊 EKS、Amazon EC2 上的 Kubernetes 或带有 Docker 的Amazon 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命令参考中的 appmesh

Amazon Tools for Windows PowerShell

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

Amazon CloudFormation

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

Amazon 软件开发工具包

我们还提供 SDK,可让您通过各种编程语言访问 App Mesh。SDK 会自动处理任务,例如:

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

  • 重试请求

  • 处理错误响应

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

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