亚马逊AWS官方博客

AWS Team

Author: AWS Team

新一代负载均衡器服务NLB概述

在去年9月份,AWS发布了托管的网络负载均衡器服务Network Load Balancer,NLB是继Classic Load Balancer,Application Load Balancer之后,AWS发布的第三款负载均衡器服务,本文将着重介绍NLB的工作原理,特点以及在使用配置上的注意事项,帮助读者更好地在自己的业务场景中运用NLB服务。 NLB能够在极低的延迟下,支持每秒数千万的请求,在API上兼容现有的ALB应用负载均衡器,下面是NLB的一些主要功能和特点: 静态IP地址 每个NLB在每个可用区中提供单个静态IP地址,用户端发往该IP地址的流量会被负载分发到同可用区内的多个后端实例上,用户可以为NLB在每个可用区中分配固定的弹性IP,如此设计使得NLB能够被纳入企业现有的防火墙安全策略中,并且能够避免DNS缓存带来的问题。 同可用区内分发流量 客户端的流量到达NLB在某个可用区提供的IP后,NLB会向相同可用区内的后端实例分发流量,通过避免跨可用区的流量分发能够获得更好的延迟性能。 源地址保留 NLB在转发流量的同时,并不会修改数据包的源IP地址,后端实例无需支持诸如X-Forward-For,proxy协议,就能够直接从数据包的包头获取客户端的IP,从而很方便地分析客户端的地理位置等信息。 长连接支持 NLB内置的容错机制能够保证长连接应用的稳定运行,从而更好的贴合诸如IoT,游戏,消息应用等业务场景。 故障切换 利用Route 53的健康检查,NLB支持在一个区域内及跨区域和本地站点实现故障切换。 下面我们来看一下如何在AWS控制台创建NLB,可以看到,客户在创建负载均衡器页面中,目前可以有三种负载均衡器可选,我们选择NLB。 NLB和其他AWS提供的负载均衡器一样,支持创建面向internet及internal两种场景,除此之外,用户需要配置NLB监听的端口及所处的子网,如果创建面向internet的NLB,需要注意将NLB放到公有子网中。 考虑NLB本身的冗余,建议至少选择2个可用区,同时用户可以根据需要为NLB在每个可用区绑定弹性IP。 后续的配置与ALB的配置十分类似,用户需要配置目标组,目标组监听的协议、端口以及健康检查等相关配置,目前无论ALB还是NLB都支持将EC2实例及某个IP作为目标,前者实现VPC内部的负载均衡,后者通过IP可以为本地站点的实例提供负载均衡。 这里选择实例类型的目标类型,之后需要选择注册的实例。 需要注意的是,为了能够接受外部客户端的访问以及健康检查流量,建议后端实例的安全组做如下设置,如果用户觉得健康检查源地址设置VPC CIDR过于宽泛的话,建议可以设置为NLB的私有IP,NLB的私有IP可以在ENI界面通过NLB名字搜索到相关NLB的ENI来获取。 除了安全组设置上的考虑,对于面向internet的NLB来说,后端实例收到的流量的源IP地址是处于公网的客户端IP,对于接收internet流量的这部分后端实例,建议放到公有子网中,即默认路由指向IGW,如果用户不希望后端实例能够被外界直接访问,可以在将后端实例放入公有子网的同时,选择不分配公网IP,从而保证外界只能通过NLB来访问到后端实例。 选择完后端实例后,就可以完成NLB的创建。 NLB对外提供的是一个域名,客户端通过访问该域名将流量发给NLB,用户可以通过设置DNS CNAME记录来方便客户端通过自定义的域名来访问用户的后端系统。 以上介绍了面向internet的NLB的配置方法,对于面向internal的NLB,用户可以做类似的配置,这里不做过多的介绍,只是如果NLB后端对接的是容器业务,并且网络模式是bridge模式,需要做额外的考虑。 这里先给出结论再解释相关的原理,对于两个需要通过NLB互访的内部容器应用,建议将这两个应用的容器调度到不同的EC2节点上,对于AWS ECS,用户可以通过为两个应用创建不同的ECS Cluster或者在一个ECS Cluster内通过亲和性调度算法实现。 为什么需要做上述的设置呢?下面解释下如果将这两个应用调度到相同的ECS Cluster上会出现什么问题。 在上面这个场景中,App1和App2使用容器部署在EC2中,App1需要通过NLB来访问App2,如果网络模式使用bridge,App1的流量在发出所在EC2实例的时候,源IP地址会从App1的容器IP转换成EC2的IP,如果NLB通过负载分发算法将流量发往处于相同EC2上的App2容器,NLB会将目的IP转换成相同的EC2的IP地址,流量到达EC2后,EC2会将目的IP转换成App2的容器IP,问题在于App2回包的时候,当流量到达EC2 OS层,OS通过查询路由表发现目的地址是自己,会在OS层面直接处理流量,而不会将流量返回给NLB,导致App1访问App2失败。 这个问题是由于NLB的工作原理导致的,NLB在接收到流量后,保持源IP地址不变,通过负载均衡算法选择后端实例,并将目的IP转换成后端实例的IP地址进行流量分发,我们需要在设计上避免上述问题,将App1和App2的容器调度到不同的EC2实例上,从而在根本上避免App1访问App2的流量的发起和终止在同一台EC2实例上。 以上我们的介绍了NLB的主要特点,配置方法及常见的配置注意事项,读者如果感兴趣的话,可以通过下面的链接来进一步学习NLB的相关内容: https://aws.amazon.com/documentation/elastic-load-balancing/ https://aws.amazon.com/elasticloadbalancing/faqs/ 作者介绍 余骏,AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广。在加入AWS之前,在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富经验。  

Read More

AWS Lambda 配合 Jenkins 实现自动化持续部署

AWS Lambda是AWS无服务器框架中的重要组成部分,而开发、测试和部署Lambda函数需要经过一个较为枯燥的过程:在集成开发环境(IDE)中编写函数,然后将其打包,并上传到AWS使用控制台进行测试。事实上,您可以在本地进行编写测试,并将其上传到自己的代码库,然后使用CICD(Continuous Integration/Continuous Development)工具来进行集成部署。 本文中将介绍如何使用Jenkins在AWS上进行Lambda开发部署。更多有关AWS Lambda 介绍可参考链接https://amazonaws-china.com/lambda/ 架构图 通过git命令提交代码 通过部署在EC2中的Jenkins拉取Github上的代码 将代码部署到Lambda,完成代码部署 上传一张图片到S3 触发S3的ObjectCreate事件,调用Lambda生成缩略图 将生成的缩略图储存到指定位置 创建Lambda 从控制台进入Lambda,选择从头开始创作 输入Lambda名称 选择从模板创建新角色 点击创建函数 记录已创建Lambda函数的 ARN,位于Lambda函数右上角 修改处理程序为CreateThumbnail.handler 创建S3存储桶 从控制台进入S3创建存储桶,输入自定义桶名,这边需要创建两个存储桶,一个是源数据桶,另一个是目标数据桶 源存储桶 目标桶 进入源存储桶,并选中属性标签 选中高级设置中的事件,按照以下顺序依次操作并保存 添加通知 输入名称 配置事件类型,及Lambda函数 修改Lambda角色 在之前的Lambda函数创建的过程中,自动创建了一个Lambda角色,但是这个角色只有最基本的创建CloudWatch Logs的权限,还需要对创建的S3存储桶有相应的进行读写的权限。 首先获取S3存储桶ARN,选中存储桶,点击复制存储桶ARN 从控制台进入IAM,选中角色,找到在Lambda里创建的新角色,点击附加策略 在搜索栏中输入S3,选中AmazonS3FullAccess并附加(在此案例中) Jenkins 环境 – Java 8 下载并解压Java 8 wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz tar -zxvf jdk-8u151-linux-x64.tar.gz 创建Java目录,并将Java移动至此目录 sudo mkdir -p /usr/local/java/jdk1.8 sudo mv […]

Read More

成本优化利器——Amazon EC2 Spot实例详细介绍

1.  前言 AWS EC2实例类型从实例类型上可以划分成通用型,计算优化型,内存优化型,存储优化型,GPU加速计算等实例类型。从实例的购买模式来看,又可以分为按需实例、预留实例、专用实例、Spot实例等类型。今天我来给大家介绍一下Spot实例这样一个非常有特色的实例类型。本文将会着重介绍Spot实例的基本概念,新的定价模型和计费方法,如何启动Spot实例,以及Spot实例的中断处理,Stop和Resume,Hibernate。希望通过这篇文章,您可以对Spot实例有个全面的了解。 2.  什么是Spot实例(Spot Instance) Amazon EC2 Spot 实例,是 AWS服务中的可用空闲计算容量。与按需实例的价格相比,这类实例可提供超低折扣。EC2 Spot 可帮助您优化 AWS服务的成本,可在预算相同的情况下将应用程序的吞吐量提高到10倍。您只需在启动 EC2 实例时选择“Spot”,即可节省按需实例价格的 90%; 按需实例和 Spot 实例的唯一区别在于,当 EC2 需要更多容量时,它会发出两分钟的通知继而中断 Spot 实例。您可以将 EC2 Spot 用于各种容错且灵活的应用程序,如测试和开发环境、无状态 Web 服务器、图像渲染、视频转码,以运行分析、机器学习和高性能计算 (HPC) 工作负载。EC2 Spot 还可与其他 AWS 产品紧密集成,包括 EMR、Auto Scaling、Elastic Container Service (ECS)、CloudFormation等,让您可以灵活选择如何启动和维护 Spot 实例上运行的应用程序。 Spot实例是购买和使用 Amazon EC2 实例的新方式。Spot实例的现货价格根据供需情况定期变化。直接使用类似购买按需实例的方式启动Spot实例,价格将根据供需关系确定(不超过按需实例价格);用户也可以设置一个最高价,当设置的最高价高于当前现货价格的期间内运行此类实例。Spot实例是按需实例和预留实例的补充,为获得计算容量提供了另一种选择。以下是Spot实例的一些基本概念: Spot实例池 – 一组未使用的 EC2 实例,具有相同的实例类型、操作系统、可用区。 现货价格 – Spot […]

Read More

使用 Amazon EC2 Run Command 在不使用 SSH 访问的情况下大规模地管理实例

以下博文的投稿者为 Ananth Vaidyanathan (EC2 Systems Manager 高级产品经理) 和 Rich Urmston (Pegasystems 公司云架构高级总监),介绍了如何使用 EC2 Run Command 在不使用 SSH 的情况下管理大量 EC2 实例。 -Jeff 企业通常具有若干托管环境和成千上万的 Amazon EC2 实例。安全地管理系统非常重要,同时也要避免棘手的安全外壳 (SSH)。Run Command 是 Amazon EC2 Systems Manager 的一部分,可以让您以可控制和可审查的方式对实例 (或使用标签的实例组) 运行远程命令。这有效地提升了每天都要依赖 Run Command 服务的 Pega 云操作的效率。 您可以通过标准 IAM 角色和策略控制 Run Command 访问,定义文档以获取输入参数,控制用于返回命令输出的 S3 存储桶。您还可以与其他 AWS 账户共享文档或将文档公开。总而言之,Run Command 提供了一组很有用的远程管理功能。 优于 SSH Run […]

Read More

AWS Marketplace 中的 Box 平台 – Lambda 蓝图和示例代码

Box 是一个基于云的文件共享和内容管理系统,具有一个最近已在 AWS Marketplace 中提供的 API (Box 平台 – 云内容管理 API)。凭借一系列协作相关功能的推出,以及对安全性的重视,Box 已经在许多企业中得到了广泛应用 (请参见其成功案例页面中的列表)。 Box API 允许开发人员将内容体验构建到 Web 和移动应用程序中。今天我想向您介绍一些 [lambda] 蓝图和模板,这些蓝图和模板将可以帮助您在构建 AWS 应用程序时使用此 API 来简化用户身份验证和将元数据添加到新上传的内容中。这些模板基于 Box 节点 Lambda 示例而创建,可作为您开发工作的一个强大起点。我们来看一看这些蓝图,顺便查看一些我们在 Box 的好友所撰写的博客文章。 适用于 Lambda 的 Box 蓝图 蓝图显示了您如何通过 [apigateway] 调用 Box API 和将 Box webhook 连接到 Lambda 函数。要找到它们,请直接打开 Lambda 控制台,搜索 box: 第一个蓝图使用存储在 BOX_CONFIG 环境变量中的安全凭证。您可以从 Lambda 控制台内设置此变量: 此蓝图中的代码会检索并记录通过凭证确定的用户的 […]

Read More

全新推出 – Auto Scaling for Amazon DynamoDB

Amazon DynamoDB 拥有十万多的客户,客户身处各种行业,使用案例也各不相同。这些客户依赖于 DynamoDB 在任何规模下都能提供的一致性能和覆盖全球 16 个地理区域的服务网络。最近我们注意到一个趋势,客户正在使用 DynamoDB 来为他们的无服务器应用程序提供支持。这是一个很好的搭配:使用 DynamoDB,您无需考虑配置服务器、执行操作系统和数据库软件修补或跨可用区配置复制以确保高可用性之类的事情 – 您只需创建一些表,然后开始添加数据,其他的交给 DynamoDB 处理。 DynamoDB 提供预置容量模式,可以让您设定您的应用程序所需的读取和写入容量。尽管这让您无需考虑服务器,在 AWS管理控制台中进行简单的 API 调用或按钮单击就可以对表的配置进行更改,但客户已经在询问我们,有没有方法让管理 DynamoDB 容量变得更加轻松。 现在,我们推出了 Auto Scaling for DynamoDB,可帮助您实现表和全局二级索引容量管理的自动化。您只要指定所需的目标使用率,并提供读取和写入容量的上限和下限。之后,DynamoDB 将利用 Amazon Cloudwatch 警报来监控吞吐量占用情况,并根据需要上调或下调预置容量。Auto Scaling 对于所有新表和索引默认启用,您还可以对现有表和索引配置此功能。即使您不在左右,DynamoDB Auto Scaling 也将监控您的表和索引,并根据应用程序流量的变化自动调整吞吐量。这使您可以更加轻松地管理 DynamoDB 数据,帮助您最大程度地提高应用程序的可用性,并帮助您降低 DynamoDB 成本。我们来看看它是如何工作的…… 使用 Auto Scaling 现在当您创建新表时,DynamoDB 控制台会提出一组适宜的默认参数。您可以原样接受它们,也可以取消选中“Use default settings”,然后输入您自己的参数: 以下是您输入自己的参数的方式: 目标使用率以占用容量与预置容量的比值来表示。以上参数将允许提供足够的空间,使占用容量能够在读取或写入请求突增时倍增 (请参阅容量单位计算,了解更多有关 DynamoDB 读取和写入操作与预置容量之间关系的信息)。预置容量的变化是在后台发生的。 Auto Scaling 的实际操作 为了了解这项重要的新功能的实际操作,我按照入门指南中的指示进行了操作。我启动了一个全新的 […]

Read More

利用Amazon ElastiCache寻找附近的X

基于地理信息的应用已经越来越深入到日常生活中,人们经常会在应用中寻找附近的朋友,车,餐厅或其它资源。而与此同时,随着物理网技术及设备的普及,应用需要更加实时和精确的处理来自各种数据源(包括用户手机,各种传感器设备及其他系统)的大量数据,以完成相关的搜索和计算距离等操作。 架构 对于开发者来说,Redis因为其性能上的优势往往会被采用作为位置数据的缓存,只是在3.2版本之前需要代码中把位置数据进行Geohash后才能有效的排序和分析。不过3.2版本后,Redis已经能够原生支持基于位置信息的存储,计算及搜索了。Amazon ElastiCache是AWS提供的托管型的数据缓存服务,借助该服务,用户能够在云中轻松部署、运行和扩展分布式内存数据存储或缓存。 Amazon ElastiCache 的Redis引擎是一项与 Redis 兼容的内存服务,兼具 Redis 的易用性和强大功能,同时还可为要求最苛刻的应用程序提供适用的可用性、可靠性和性能,提供单节点和多达 15 个分片的群集,从而可将内存数据扩展到高达 3.55TiB。这里,我们可以基于Elasticache并结合AWS其他服务构建出以下的示例架构: 1)终端设备获取GPS位置信息,定时或基于事件将数据上传到云端。在AWS上可以选择使用IoT或Kinesis等托管型服务作为数据收集的接收端,也可以使用部署在EC2/Lambda上的自定义服务。 2)所有位置信息写入可以自动扩展的DynamoDB,基本Schema包含设备Id/Timestamp/Geo location, 方便历史查询或轨迹查询。 3)打开DynamoDB流,用KCL或Lambda监听DynamoDB的数据改变,并将当前变化的位置数据更新到Elasticache中建立基于Geospatial的索引缓存。 4)手机应用搜索附近资源时,部署在EC2/Lambda的查询服务利用Elasticache geospatial直接获取结果。 实现 如前文所述,步骤1和2可选择的方案很多,比如采用AWS IoT服务甚至可以无需任何代码仅通过配置即可完成云端的功能讲数据实时写入相应的DynamoDB表中。因此,本文将着重介绍如何实现前文架构中的3和4步: a) 打开DynamoDB 流,获取流的ARN用于读取,如下图: 读取DynamoDB流数据有三种方式:利用Kinesis adapter,利用低级别API以及利用Lambda函数来进行读取。从易用性的角度来说,当然是Lambda函数最简单,不需要考虑shard,吞吐和checkpoint等问题而专注于业务逻辑。但是Lambda函数并不是在所有的AWS区域都支持,因此本文采用第一种方式利用Kinesis adapter完成读取。具体参考文档:http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/Streams.KCLAdapter.html b) 在读取流的同时,我们需要将最新的地理位置信息利用GEOADD更新到Elasticache中。前文提到Redis在3.2版本后,Geospatial Indexing已经被原生支持,而它实际上是Sorted List数据结构的一种扩展,即排序 key扩展成了经纬度,如下图所示的数据结构,并且可以方便的使用基于地理信息的API,例如GEOADD——添加地理位置 。 通过Elasticache可以快速构建出一个Redis环境,包括支持shard的集群模式,如下图所示。 构建完成后,通过Elasticache提供的终端节点就可以访问cache了。 需要注意的是如果选择的Redis是集群模式,那么就得同步升级支持Redis集群模式的客户端SDK用以开发。因为Redis的集群提供的是分片功能,它会把不同的slots分布在不同的节点上,需要由客户端通过CRC16(Key)取模从而计算出数据在哪个节点上。目前可以支持redis集群模式的客户端有很多,比如本文用到的java的jedis以及nodejs的ioredis。 综合a,b两步的示例代码的StreamCacheProcessor.java如下(其余代码参考http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/Streams.KCLAdapter.Walkthrough.CompleteProgram.html ): import java.nio.charset.Charset; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.logging.Log; […]

Read More

如何在Amazon EC2 Container Service上实现服务高可用的自动伸缩

1. 简介 Amazon EC2 Container Service (ECS)是Amazon提供的一项Docker容器管理服务,可以让您轻松构建、运行、管理您的Docker容器服务。ECS Service是ECS的重要组件,它可以在集群中运行指定数量的任务,当某个任务不可用时,它会重新启动新的任务,维持住任务的指定数量。这个特性从一定程度上保证了服务的可用性,但当面对突发流量,ECS本身并不能动态地进行任务数量的扩展,当流量较少时,ECS也无法动态地进行任务数量的缩减。为解决此问题,可以使用Auto Scaling和Amazon CloudWatch等实现服务的自动伸缩,保证服务高可用。本文将介绍一个运用Auto Scaling在ECS中实现服务高可用的方案,并通过对方案构建过程的剖析,让您对高可用、自动伸缩的服务架构有更进一步的了解。 2. 方案构建 2.1 整体结构图 本方案使用AWS CloudFormation模板声明整个资源堆栈所需资源和相关配置,并实现自动化构建。关于AWS CloudFormation相关知识,请通过以下链接了解:CloudFormation入门。 从上面这个结构图可以看出以下主要组成部分: 初始由两个跨AZ的Container Instance组成的ESC Cluster。 初始ESC Service中有两个task。 Service Auto Scaling与CloudWatch结合,当Service维度的 CPUUtilization与Threshold满足设定的触发条件时,触发CloudWatch Alarm,CloudWatch Alarm根据设定的Scaling Policy进行Task数量伸缩。 Auto Scaling Group与CloudWatch结合,当Cluster维度的CPUReservation与Threshold满足设定的触发条件时,触发CloudWatch Alarm,CloudWatch Alarm根据设定的Scaling Policy进行实例数量的伸缩。 2.2 准备工作 (1)准备好CloudFormation模板脚本 请从这里(点我)下载用于构建整个资源堆栈的模板脚本文件。 或者通过点击下面按钮来运行堆栈: (2)准备好Lambda Function 本方案在Auto Scaling Group中的实例关闭时,会调用一个实现自动切换Draining状态的Lambda Function。那么在构建整个堆栈之前,需要先准备好这个Lambda Function。这里我们使用Python编写了这个脚本auto_drain.py来实现此功能。您可以了载包含了这个脚本的压缩包(点我)。 下载完成后,请将它上传到您账户上同个Region的S3 Bucket中。记住这个S3 Bucket Name,在构建堆栈时,将它传给Lambda Function S3 […]

Read More

基于Amazon EC2 Container Service构建安全高可用的Docker私有库

1. 背景 Docker hub作为docker官方镜像仓库,提供了大量Docker镜像的托管服务。但使用它来托管企业私有Docker镜像存在一些问题,比如: (1)Docker hub托管私有镜像的服务目前只面对收费账户; (2)使用Docker hub托管私有镜像并不适合一些特殊场景,比如工作环境网络是内网,不允许访问外网,那就更不可能到Docker hub去下载镜像。 在这种情况下,如果能构建一个安全可靠的Docker私有库,将会是一个更好的选择。本文将介绍在Amazon EC2 Container Service基础上结合AWS Elastic LoadBalancer、AWS Autoscaling Group、AWS S3及Docker官方提供的registry镜像构建安全、高可用的Docker私有库的方案,帮助您轻构实现这一需求。 2. 方案详解 我们会使用AWS CloudFormation服务,使用自定义的模板脚本声明所需的资源,实现自动化构建。接下来结合我们的模板脚本对本方案进行详细介绍。 注意:以下内容与代码相关部分只贴出主要代码,部分代码用…表示省略;红字部分请替换成您自己账号相关的信息。 完整模板代码地址:https://s3-us-west-2.amazonaws.com/blog.leonli.org/registry.yml          或者点击按钮直接在控制台中运行: 2.1 架构图 根据以上架构图,基本数据传输过程为: (1)Docker客户端向镜像仓库发送的pull/push等命令事实上都是通过docker daemon转换成restful请求的形式再发送给镜像仓库的。在本架构中,我们利用AWS Elastic LoadBalancer(简称ELB)接收客户端发来的请求,作为整个架构的接入层。由于我们要求数据是通过TLS加密传输的,所以我们需要使用AWS IAM中的server certificate(由AWS IAM账户上传的TLS证书)与ELB关联,实现对客户端发来的请求进行加密。 (2)ELB会将请求反向代理给后端分布在不同可用区的两台Container Instance(安装了Docker运行环境的EC2实例),Container Instance中运行了Docker registry服务。当请求到达registry时,我们需要首先使用内置在registry中的用户认证文件(比如本架构中使用apache htpasswd创建的基本用户名密码保护文件),进行用户认证,认证不通过,则驳回请求,认证通过,才可以读写数据。 (3)我们将数据统一存储在一个只供创建者使用的S3 Bucket中。 2.2 基于AWS ECS运行Docker Registry服务 Amazon EC2 Container Service (ECS) 是一项高度可扩展的高性能容器管理服务,它让您能够在托管的 Amazon EC2 […]

Read More

新增 – EC2 Auto Scaling 的目标跟踪策略

最近我介绍过 DynamoDB Auto Scaling,并演示了它如何使用多个 CloudWatch 警报来实现 DynamoDB 表的自动容量管理。此功能在后台使用了一种更为通用的 Application Auto Scaling 模型,我们计划以后逐渐在多项不同 AWS 服务中投入使用该模型。 这一新的 Auto Scaling 模型包括一项重要的新功能,我们称之为目标跟踪。在创建使用目标跟踪的 Auto Scaling 策略时,需要为特定 CloudWatch 指标选择一个目标值。然后,Auto Scaling 旋转相应的旋钮 (打个比方) 推动指标趋向于目标,同时调整相关的 CloudWatch 警报。比起使用初始步进扩展策略类型来手动设置范围和阈值而言,采用对应用程序有意义的任何指标驱动的单元来指定期望的目标,通常来说要更简单,也更为直接。不过,您可以结合使用目标跟踪和步进扩展来实现高级扩展策略。例如,您可以使用目标跟踪实现扩展操作,使用步进扩展实现缩减操作。 现在面向 EC2 现在我们为 EC2 Auto Scaling 增加了目标跟踪支持。您现在可以创建应用程序负载均衡器请求计数、CPU 负载、网络流量或自定义指标 (Request Count per Target 是新指标,也是在今天发布) 驱动的扩展策略: 这些指标都具有同一个重要的特性:添加额外的 EC2 实例会推动指标下降 (但不会改变总体负载),反之亦然。 要创建使用目标跟踪的 Auto Scaling 组,只需输入策略名称、选择一个指标,然后设置所需的目标值: 您可以选择禁用策略的缩减功能。如果禁用,您可以手动缩减,也可以使用独立的策略。您可以使用 AWS Management Console, […]

Read More