弹性伸缩是根据用户的业务需求自动调整弹性计算资源的服务,即能够根据应用负载情况自动扩张和收缩应用环境所使用的计算资源。在请求增加时,弹性伸缩能够为自动分配更多的计算资源,在请求下降时,弹性伸缩能够自动回收过量的资源。这样,带来一个好处是在满足客户需求的情况下,我们只需要为短期使用的资源来付费,即Pay as you go。如果我们的业务请求模式具有较大的波动性,如广告、游戏和直播等,使用弹性伸缩打造高可用高弹性的应用是非常好的选择。
从特性来看,弹性伸缩服务为构建弹性可扩展的应用开发提供了以下两个方面的能力:
- 弹性:自动管理弹性计算资源的能力。在系统运行的整个生命周期,弹性伸缩会自动根据系统运行情况,动态创建或释放资源,使我们的应用系统能够像生物体一样自动的扩张或收缩。在整个过程中不需要任何人工的干预;
- 可用性:可用性也是弹性伸缩提供的重要功能。弹性伸缩会自动监测应用的运行情况,如果发现某个节点的状态异常处于停止的状态,弹性伸缩会自动将异常的节点从伸缩组中移除,并创建新的机器来替换。该特点能够极大提高系统的可用性。
下面我们一步一步讲解如何使用弹性伸缩来构建高弹性高可靠的应用集群。
创建伸缩组
使用弹性伸缩服务的第一步是是创建一个新的伸缩组。伸缩组是我们管理部署在弹性伸缩上业务的基本单元,基本上可以映射为一个应用或者一个集群。每一个伸缩组可以挂载多个SLB或者多个RDS实例。
在创建伸缩组的对话框中,我们需要输入以下参数:
- 最大实例数:伸缩组内包含的最大实例数量。如果伸缩组内的实例数大于该参数,弹性伸缩会自动按照释放规则将多余的实例移除伸缩组。
- 最小实例数:伸缩组内包含的最小实例数量。如果伸缩组内的实例数小于该参数,弹性伸缩会自动创建新的按量实例来补齐缺失的数量。如果我们创建伸缩组时最小实例数不为零,则弹性伸缩会自动创建相应的实例。所以,在新建伸缩组时,最小实例数最好设置为零。等待包年包月机器加入后,再将该参数调整为需要的数量。
- 冷却时间:弹性伸缩活动的冷却时间,缺省为5分钟。该时间是指在某一个弹性伸缩活动执行完成后,在冷却时间内所有的新的伸缩活动请求会被拒绝,即不允许执行新的伸缩活动。该时间设置有助于避免伸缩组的频繁伸缩。
- 释放策略:释放策略是当弹性伸缩服务需要从伸缩组内释放实例时依据的策略,目前我们可以选择的策略包括:最早创建实例,最晚创建实例和最早伸缩配置创建的实例。如果我们希望包年包月的机器不要被移出伸缩组,则释放策略需要选择最早伸缩配置创建的实例加最早创建的实例。
- 网络类型:网络类型是配置弹性计算资源所使用的网络环境,目前支持两种网络类型:经典网络和专有网络。如果选择专有网络,则我们还需要选择特定的VPC和特定的vSwitch。
- 负载均衡:负载均衡是伸缩组内ECS实例对外挂接的负载均衡。缺省情况下只支持一个服务均衡实例,如果我们想要挂接多个负载均衡器,则需要通过工单联系客服人员修改。
- 数据库:数据库是ECS实例需要的RDS资源。如果设置该数据库,弹性伸缩会自动将新创建的ECS机器自动加入RDS白名单,保证ECS和RDS之间的连通性。如果我们不需要将ECS加入数据库白名单,则无需设置该选项。
伸缩组创建完成后,控制台会自动提示需要创建新的伸缩配置。下面我们会进入创建伸缩配置的步骤。
创建伸缩配置
伸缩配置是弹性伸缩在自动创建计算资源时所使用的机型配置,如4核8G或者8核16G等。目前一个伸缩组可以拥有多个不同的伸缩配置,但是生效的伸缩组只允许有一个。
伸缩配置的第一步是选择需要的机型,这一步我们根据业务需要选择相应的机型即可。目前,ECS提供了三种机型:系列1、系列2和系列3。由于系列1的机型在后期会被逐步淘汰,导致按量机型的库存非常不稳定,我们一般使用系列2或者系列3的机型。
在完成机型选择后,我们需要选择机器的网络配置。目前网络配置有两种:按使用流量和按使用带宽。如果我们希望自动创建的机器带有公网IP,则选择按使用流量或者按使用带宽并且带宽值不为零。如果不希望创建公网IP,则需要按照使用带宽并且带宽值为零。
最后是选择系统镜像、系统盘和数据盘的信息。这一块的配置内容我们根据需要自行选择即可。需要注意的是,系统盘和数据盘的配置最好能够和镜像一一对应。如果选择系统盘太小或者数据盘太小,有可能导致系统无法启动或者启动速度过慢。
伸缩组创建完成后,控制台会自动提醒是否启用该伸缩配置。如果我们希望直接启用,则点击“启用”即可完成配置。
创建伸缩规则
下面的一步是创建伸缩规则,我们需要告诉系统创建或者释放多少台机器,控制台界面如下。
在该对话框中,我们需要输入如下信息:
- 规则名称:该伸缩规则特定的名称,例如“增加3台机器”或者“减少2台机器”。
- 规则:具体的规则,目前我们能够选择三种选项:调整至,增加和减少。调整至是让伸缩组的实例数调整至多少数量。增加是为伸缩组增加多少台机器。减少是从现有伸缩组减少多少台机器。
- 冷却时间:伸缩规则的冷却时间,缺省使用伸缩组的冷却时间。
在创建完成伸缩组、伸缩配置和伸缩规则后,下一步是配置定时任务或者报警任务来触发伸缩活动。
创建定时任务
如果我们了解自己业务请求波动的特点,可以使用定时任务来自动创建弹性计算资源。创建定时任务首先需要选择执行时间,即在什么时间点执行该任务。之后我们还需要选择相应的伸缩组和伸缩规则,即定时任务触发时会执行哪条伸缩规则。
定时任务也支持重复周期设置,我们可以按天、按周或者按月来执行该条特定的伸缩规则。
创建报警任务
如果我们希望基于弹性计算资源的监控指标来动态管理弹性计算资源,则可以使用报警任务,界面如下。
报警任务的配置需要我们提供如下的参数:
- 任务名称:监控任务的名称,必须保证唯一;
- 描述:监控任务描述
- 监控资源:我们想要监控的伸缩组。弹性伸缩会收集该伸缩组内所有ECS机器的监控指标,并以此为基础决定是否执行伸缩规则。如果我们的伸缩组不包含任何ECS机器,则报警任务会报“数据不足”的错误。
- 监控指标:选择的监控项。目前支持七种监控指标:CPU、内存、负载、外网出流量、外网入流量、内网出流量、内网入流量。负载的监控指标只适用于Linux的运行环境。
- 统计周期:数据指标聚合的周期,目前支持2分钟、5分钟和15分钟。
- 统计办法:数据指标统计的规则,比如CPU大于70%报警等。
- 重复几次后报警:重复多少次之后触发报警规则,建议使用2次或3次。如果使用1次,有可能出现系统突然抖动导致触发报警规则。
- 报警触发的规则:报警规则满足后系统执行的伸缩规则。
当我们填好以上参数时,报警任务创建完成,整个弹性伸缩配置的工作也就全部完成了。
配置包年包月机器
在伸缩组配置完成后,我们可以把需要的包年包月的机器加入伸缩组。在加入包年包月机器之前,需要注意加入机器的机型必须与伸缩组内生效的伸缩配置保持一致。如果不一致,则需要我们为伸缩组创建新的伸缩配置,再把机器加入。
在包年包月机器配置完成后,我们会在弹性伸缩控制台上看到如下界面,这表示弹性伸缩配置完成。
小结
弹性伸缩服务能够很好的帮助我们管理弹性计算资源,在系统高峰时创建新的计算资源,保证用户体验,在系统低谷时释放多余的计算资源,节约成本。用好弹性伸缩服务,能够很好的帮助我们构建高性能高可用的弹性应用系统。