本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
什么是 AWS App Mesh?
重要
终止支持通知:2026 年 9 月 30 日, AWS 将停止对的支持。 AWS App Mesh 2026 年 9 月 30 日之后,您将无法再访问 AWS App Mesh 控制台或 AWS App Mesh 资源。有关更多信息,请访问此博客文章从迁移 AWS App Mesh 到 Amazon ECS Service 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 ECS Service Connect
考虑以下不使用 App Mesh 的简单示例应用程序。这两项服务可以在亚马逊弹性容器服务 (Amazon ECS) AWS Fargate、亚马逊弹性 Kubernetes Service (Amazon EKS)、亚马逊弹性计算 EC2云 (亚马逊) 实例上的 Kubernetes 上运行,也可以在 Docker 的亚马逊实例上运行。 EC2
在此插图中,serviceA 和 serviceB 均可通过 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.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虚拟服务配置为通过名为serviceB的虚拟路由器将流量路由到serviceB和serviceBv2虚拟节点。有关更多信息,请参阅 虚拟节点。 -
虚拟路由器 — 处理用于您的网格内一项或多个虚拟服务的流量。路由与虚拟路由器关联。该路由用于匹配对虚拟路由器的请求并将流量分发到其关联的虚拟节点。在上图中,
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 配置,则无需更改或重新部署服务本身或代理。有关更多信息,请参阅 Envoy 镜像。
如何开始
要使用 App Mesh,你必须在亚马逊 ECS、亚马逊 EKS AWS Fargate、亚马逊上的 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 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 参考。