云应用的应用级联网

阅读数:72 2019 年 10 月 6 日 22:51

云应用的应用级联网

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 格式指定每种类型的组件,并为您提供创建每个组件的命令行工具(创建网格、创建虚拟服务、创建虚拟节点和 创建虚拟路由器)。例如,我可以在文件中定义虚拟路由器:

复制代码
{
"meshName": "mymesh",
"spec": {
"listeners": [
{
"portMapping": {
"port": 80,
"protocol": "http"
}
}
]
},
"virtualRouterName": "serviceA"
}

并使用一个命令创建它:

复制代码
$ aws appmesh create-virtual-router --cli-input-json file://serviceA-router.json

现已推出

AWS App Mesh 现已面向以下区域推出,您可以立即开始使用:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(俄勒冈)、美国西部(加利福尼亚北部)、加拿大(中部)、欧洲(爱尔兰)、欧洲(法兰克福)、欧洲(伦敦)、亚太地区(孟买)、亚太地区(东京)、亚太地区(悉尼)、亚太地区(新加坡)以及亚太地区(首尔)。

作者介绍:
Jeff Barr
AWS 首席布道师; 2004 年开始发布博客,此后便笔耕不辍。

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/aws-app-mesh-application-level-networking-for-cloud-applications/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布