亚马逊AWS官方博客
AWS App Mesh – 云应用的应用级联网
AWS App Mesh 帮助您大规模运行和监控 HTTP 和 TCP 服务。您可以一致的方式进行路由和监控流量,深入了解问题,并能够在故障或代码更改后重新路由流量。App Mesh 使用开源 Envoy 代理,为您提供源自 AWS 合作伙伴和开源社区的各种工具的使用权限。
服务可以在 AWS Fargate、Amazon EC2、Amazon ECS, Amazon Elastic Container Service for Kubernetes 或 Kubernetes 上运行。进出每个服务的所有流量均通过 Envoy 代理,以便进行路由、塑造、测量和记录。这种额外的间接级别使您可以使用任何所需语言构建服务,而无需使用通用的通信库集。
App Mesh 概念
在深入研究之前,让我们回顾几个重要的 App Mesh 概念和组件:
Service Mesh – 位于其中的服务之间的网络流量的逻辑边界。网格可以包含虚拟服务、虚拟节点、虚拟路由器和路由。
Virtual Service – 直接(通过虚拟节点)或间接(通过虚拟路由器)提供的服务的抽象(逻辑名称)。网格中的服务使用逻辑名称来引用和使用其他服务。
虚拟节点 – 指向任务组(ECS 服务或 Kubernetes 部署)或在一个或多个 EC2 实例上运行的服务的指针。每个虚拟节点都可以通过侦听器接受入站流量,并可以通过后端连接到其他虚拟节点。此外,每个节点都有一个服务发现配置(目前是一个 DNS 名称),允许其他节点发现任务、Pod 或实例的 IP 地址。
虚拟路由器 – 网格中一个或多个虚拟服务的处理程序。每个虚拟路由器都会侦听特定端口上的 HTTP 流量。
路由 – 路由使用基于前缀的 URL 匹配来将流量路由到虚拟节点,并具有可选的每节点权重。权重可用于测试生产中的新服务版本,同时逐渐增加它们处理的流量。
把以上内容结合在一起,每个服务网格都包含一组可通过路由指定的 URL 路径访问的服务。在网格中,服务按名称相互引用。
我可以通过 App Mesh 控制台、App Mesh CLI 或 App Mesh API 访问 App Mesh。我将向您展示如何使用控制台并简要介绍 CLI。
使用 App Mesh 控制台
可以使用控制台创建服务网格及其中的组件。打开 App Mesh 控制台并单击 Get started(开始):
输入网格名称和第一个虚拟服务(我可以稍后添加),然后单击 Next(下一步):
定义第一个虚拟节点:
可以单击 Additional configuration(其他配置)来指定服务后端(此节点可以调用的其他服务)和日志记录:
我通过协议(HTTP 或 TCP)和端口定义节点的侦听器,设置可选的运行状况检查,然后单击 Next(下一步):
接下来,定义第一个虚拟路由器及其路由:
可以在百分比基础上跨多个虚拟节点(目标)分配流量,并且可以对传入流量使用基于前缀的路由:
查看我的选择并单击 Create mesh service(创建网格服务):
组件在几秒钟内创建,马上及准备就绪了:
如 App Mesh 入门指南中所述,最后一步是更新我的任务定义(Amazon ECS 或 AWS Fargate)或 Pod 规范(Amazon EKS 或 Kubernetes),以引用 Envoy 容器映像和代理容器映像。如果我的服务在 EC2 实例上运行,我将需要在那里部署 Envoy。
使用 AWS App Mesh 命令行
App Mesh 允许您以简单的 JSON 格式指定每种类型的组件,并为您提供创建每个组件的命令行工具(创建网格
、创建虚拟服务
、创建虚拟节点
和 创建虚拟路由器
)。例如,我可以在文件中定义虚拟路由器:
并使用一个命令创建它:
现已推出
AWS App Mesh 现已面向以下区域推出,您可以立即开始使用:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(俄勒冈)、美国西部(加利福尼亚北部)、加拿大(中部)、欧洲(爱尔兰)、欧洲(法兰克福)、欧洲(伦敦)、亚太地区(孟买)、亚太地区(东京)、亚太地区(悉尼)、亚太地区(新加坡)以及亚太地区(首尔)。