什么是 AWS App Mesh? - AWS App Mesh

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

什么是 AWS App Mesh?

重要

终止支持通知:2026 年 9 月 30 日, AWS 将停止对的支持。 AWS App Mesh 2026 年 9 月 30 日之后,您将无法再访问 AWS App Mesh 控制台或 AWS App Mesh 资源。如需了解更多信息,请访问此博客文章从迁移 AWS App Mesh 到 Amazon S ECS ervice 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 S ECS ervice Connect

考虑以下不使用 App Mesh 的简单示例应用程序。这两项服务可以在亚马逊弹性容器服务(亚马逊) AWS Fargate、亚马逊弹性Kubernetes服务(亚马逊ECS)、亚马逊弹性计算云(EKS亚马逊)上的Kubernetes上运行,或者在带有Docker的EC2亚马逊实例上运行。EC2

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

在此插图中,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,则您的网格可能如下图所示。

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

在此配置中,服务不再直接相互通信。相反,它们通过代理相互通信。与 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路径或 g RPC 服务和方法名称等标准来路由流量。您可以配置重试策略,以便在响应中出现错误时重试连接。例如,在插图中,如果 serviceb.apps.local 返回特定类型的错误,serviceb.apps.local 路由的重试策略可以指定重试与 连接五次,两次重试之间有十秒钟。有关更多信息,请参阅 虚拟路由器路线

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

如何开始

要使用 App Mesh,你必须在亚马逊 AWS Fargate、亚马逊ECSEKS、亚马逊上的 Kubernetes EC2 或带有 Docker 的亚马逊上运行现有服务。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 Command Reference 中的 appmesh

AWS Tools for Windows PowerShell

为那些在 PowerShell 环境中编写脚本的用户提供一系列 AWS 产品的命令。要开始使用,请参阅 AWS Tools for Windows PowerShell 用户指南。有关 App Mesh 的 cmdlet 的更多信息,请参阅 PowerShellCmdlet 参考AWS 工具中的 App Mesh

AWS CloudFormation

使您能够创建描述所需的所有 AWS 资源的模板。使用该模板 AWS CloudFormation 为您预置和配置资源。要开始使用,请参阅AWS CloudFormation 《用户指南》。有关 App Mesh 资源类型的更多信息,请参阅AWS CloudFormation 《模板参考》App Mesh 资源类型参考。

AWS SDKs

我们还提供了允许SDKs您从各种编程语言访问 App Mesh 的功能。它们会SDKs自动处理任务,例如:

  • 对服务请求进行加密签名

  • 重试请求

  • 处理错误响应

有关可用工具的更多信息SDKs,请参阅适用于 Amazon Web Services 的工具

有关 App Mesh 的更多信息APIs,请参阅AWS App Mesh API参考文档