什么是弹性伸缩AS?
弹性伸缩(Auto Scaling),是根据用户的业务需求和策略,经济地自动调整弹性计算资源的管理服务。弹性伸缩不仅适合业务量不断波动的应用程序, 同时也适合业务量稳定的应用程序。
弹性伸缩AS的功能与特性:
-
动态伸缩模式
基于云监控性能指标(如CPU、内存利用率),自动增加或减少ECS实例。 -
定时伸缩模式
配置周期性任务,定时地增加或减少ECS实例,当周期性需求有所波动时,可同时配置动态伸缩模式以应付不可预期的变化 -
固定数量模式
通过“最小实例数”属性,可以让您始终保持健康运行的ECS实例数量,自动替换不健康实例,以保证日常场景实时可用 -
自动配置负载均衡(SLB)和云数据库(RDS)
在增加或减少ECS实例时,自动向SLB实例添加或移除相应的ECS实例,且自动向RDS访问白名单添加或移出该ECS实例的IP
弹性伸缩AS费用计算
您可以免费开通弹性伸缩服务
。但是,如果弹性伸缩服务根据伸缩配置自动创建了 ECS 实例,或者您手动添加了已有 ECS 实例,您需要为 ECS 实例支付费用。
自动创建的 ECS 实例,付费方式支持按量付费和抢占式实例。
弹性伸缩AS使用限制
弹性伸缩AS应用场景
阿里云弹性伸缩AS应用场景参考案例:
- 某视频公司:春晚或每周五热门节目来临时,负载激增,需及时、自动扩展云计算资源。
- 某视频直播公司:业务负载变化难以预测,需要阿里云自动根据CPU利用率、应用负载、带宽利用率作为衡量指标进行弹性伸缩。
- 某游戏公司:每天中午12点及晚上6点到9点间需求增长,需要定时扩容。
- 某电商:在大促中,临时激增大量云服务器需求,需要在数分钟内实现从创建到可用。
弹性伸缩AS工作流
创建好伸缩组、伸缩配置、伸缩规则、伸缩触发任务后,系统会自动化执行以下流程(以增加 ECS 实例为例):
-
伸缩触发任务会按照各自触发生效的条件来触发伸缩活动。
– 云监控任务会实时监控伸缩组内 ECS 实例的性能,并根据用户配置的报警规则(如伸缩组内所有 ECS 实例的 CPU 平均值大于 60%)触发执行伸缩规则请求。
– 定时任务会根据用户配置的时间来触发执行伸缩规则请求。
– 您可以根据自己的监控系统及相应的报警规则(如在线人数、作业队列)来触发执行伸缩规则请求。
– 健康检查任务会定期检查伸缩组和 ECS 实例的健康情况,如发现有不健康的 ECS 实例(如 ECS 为非 Running 状态)会触发执行 移出该 ECS 实例 的请求。 -
系统自动通过 ExecuteScalingRule 接口触发伸缩活动,并在该接口中指定需要执行的伸缩规则的阿里云资源唯一标识符(Ari)。
如果是用户自定义的任务,则需要用户在自己的程序中调用 ExecuteScalingRule 接口来实现。 -
根据步骤 2 传入的伸缩规则 Ari(Rule Ari)获取伸缩规则、伸缩组、伸缩配置的相关信息,并创建伸缩活动。
– 通过伸缩规则 Ari 查询伸缩规则以及相应的伸缩组信息,计算出需要增加的 ECS 实例数量,并获得需要配置的负载均衡和 RDS 信息。
– 通过伸缩组查询到相应的伸缩配置信息,即获得了需要创建的ECS实例的配置信息(CPU、内存、带宽等)。
– 根据需要增加的 ECS 实例数量、ECS 实例配置信息、需要配置的负载均衡实例和 RDS 实例创建伸缩活动。 -
在伸缩活动中,自动创建 ECS 实例并配置负载均衡和 RDS。
– 按照实例配置信息创建指定数量的 ECS 实例。
– 将创建好的 ECS 实例的内网 IP 添加到指定的 RDS 实例的访问白名单当中,将创建好的 ECS 实例添加到指定的负载均衡实例当中。 -
伸缩活动完成后,启动伸缩组的
冷却功能
。待冷却时间完成后,该伸缩组才能接收新的执行伸缩规则请求。
伸缩活动存在冷却时间,冷却时间具有以下特点:
- 在冷却时间内,伸缩组只会拒绝云监控报警任务类型的伸缩活动请求,其他类型的触发任务(如手工执行伸缩规则、定时任务等)可以绕过冷却时间立即执行伸缩活动。
- 每个伸缩活动的最后一个ECS实例加入或移出伸缩组成功后,整个伸缩组冷却时间才开始计时。
- 如果您停用伸缩组,然后再次启用伸缩组,冷却时间将会失效
示例 1
一个伸缩组 asg-uf6f3xewn3dvz4bsy7r1,默认冷却时间是 10 分钟,伸缩组内存在一条伸缩规则 add3,冷却时间为 15 分钟。
根据 add3 成功执行一次伸缩活动后,扩张了 3 台 ECS 实例,从第 3 台 ECS 实例加入伸缩组开始计算冷却时间,15 分钟内不会接受由云监控报警任务触发的伸缩活动请求。
弹性伸缩AS涉及的名词说明:
弹性伸缩AS伸缩模式
弹性伸缩AS创建流程
- 创建伸缩组(CreateScalingGroup),配置伸缩资源的最小值(MinSize)、最大值(MaxSize)及需要关联的负载均衡实例和RDS实例。
- 创建伸缩配置(CreateScalingConfiguration),指定需要弹性伸缩的 ECS 实例的相关属性,如 ImageID、InstanceType 等。
- 以第二步创建的伸缩配置启用伸缩组(EnableScalingGroup)。
- 创建伸缩规则(CreateScalingRule),如加 N 台 ECS 实例的伸缩规则。
- 创建定时任务(CreateScheduledTask),如创建 12:00 触发第四步伸缩规则的定时任务。
- 创建报警任务(云监控 API PutAlarmRule),如创建 CPU 平均值 (也可以是最大值或最小值)大于等于 80% 则增加一台 ECS 实例的报警任务。