AliCloud AutoScaling(弹性伸缩)
弹性伸缩(Auto Scaling)
弹性伸缩自动为您调整弹性计算资源大小,以满足您业务需求的变化。
根据您设置的伸缩策略,在业务需求增长时自动为您增加ECS实例以保证计算能力,在业务需求 下降时自动减少ECS实例以节约成本。
名词解释
弹性伸缩
弹性伸缩是根据用户的业务需求和策略,自动调整其弹性计算资源的管理服务。其能够在业务增长时自动增加 ECS 实例,并在业务下降时自动减少 ECS 实例。
伸缩组
伸缩组是具有相同应用场景的 ECS 实例的集合。伸缩组定义了组内 ECS 实例数的最 大值、最小值及其相关联的负载均衡实例和 RDS 实例等属性。
伸缩配置
伸缩配置定义了用于弹性伸缩的 ECS 实例的配置信息。
伸缩规则
伸缩规则定义了具体的扩展或收缩操作,例如加入或移出 N 个 ECS 实例。
伸缩活动
伸缩规则成功触发后,就会产生一条伸缩活动。伸缩活动主要用来描述伸缩组内 ECS 实例的变化情况。
伸缩触发任务
用于触发伸缩规则的任务,如定时任务、云监控的报警任务。
冷却时间
冷却时间是指,在同一伸缩组内,一个伸缩活动执行完成后的一段锁定时间。在这段锁定时间内,该伸缩组不执行其他的伸缩活动。
应用场景
某视频公司:春晚或每周日热门节目来临时,如临大敌,需要按负载自动弹性伸缩。
某视频直播公司:无法预估业务负载情况,需要根据 CPU 利用率、Load、 带宽利用率,自动弹性伸缩。
某游戏公司:每天中午 12 点,每天晚上 6 点~9 点,需要定时扩容。
弹性自愈,用户根据自己的业务需求自动替换 不健康的ECS实例使业务始终保持 正常的负载,为业务保驾护航。
伸缩模式
弹性伸缩模式主要分六类:
定时模式:配置周期性任务(如每天 13:00),定时地增加或减少 ECS 实例。
动态模式:基于云监控性能指标(如 CPU 利用率),自动增加或减少 ECS实例。
固定数量模式:通过最小实例数 (MinSize)属性,可以让您始终保持健康运行的ECS 实例数量,以保证日常场景实时可用。
自定义模式:根据用户自有的监控系统,通过 API 手工伸缩 ECS 实例。
手工执行伸缩规则。
手工添加或移出既有的ECS 实例。
手工调整 MinSize、MaxSize 后,弹性伸缩会自动创建或释放 ECS 实例,尽可能将当前 ECS 实例维持在 MinSize~MaxSize 之间。
健康模式:如 ECS 实例为非 running 状态,弹性伸缩将自动移出或释放该不健康的ECS 实例。
多模式并行:以上所有模式都可以组合配置,宠户预期每天 13:00 ~ 14:00 会出现业务高峰,所以设置定时创建 20 台 ECS 实例的伸缩模式,当客户不确定业务高峰期的实际需求是否会高于客户预期时,如某天实际需要 40台 ECS 实例,可同时配置动态伸缩模式以应付不可预期的变化。
限制条件
弹性伸缩对用户有以下限制:
弹性伸缩的ECS实例中部署的应用需要是无状态、可横向扩展的。
由于弹性伸缩会自动释放ECS实例,所以用于弹性伸缩的ECS实例不可以保存应用的状态信息(如session)和相关数据(如数据库、日志等)。如果应用中需要保存状态信息,可以考虑把状态信息保存到独立的状态服务器、数据库(如 RDS)及集中日志存储(如 Log)。
弹性伸缩自动扩展出来的实例暂不支持直接自动添加到OCS访问白名单中,需要您自行添加。
弹性伸缩目前不支持纵向扩展,即弹性伸缩暂时无法自动升降 ECS实例的 CPU、内存和带宽。
每个用户所能创建的伸缩组、伸缩配置、伸缩规则、伸缩ECS实例、定时任务的数量都有一定的限制。
自动伸缩与手动方式对比
自动伸缩方式 |
采用手工方式 |
|
自运维 |
•无需人工干预 •自动根据用户预设策略创建和释放ECS实例 •自动配置SLB和RDS访问白名单 |
•以人工或者脚本的方式进行资源监控,并以此 为基础进行创建和释放业务实例 |
降成本 |
•按需取用,提高资源利用率,有效降低成本。 |
•需要提前准备冗余的ECS资源以防业务高峰时 受到影响,成本上造成浪费。 |
高可用 |
•自动监测ECS实例的健康状况,及时替换不健康实例, 为您的业务保驾护航。 |
•业务受到影响后才会采取措施,影响了业务的 连续性。 |
灵活丰富 |
•智能调度应对各种复杂场景 •可通过API方便对接外部的监控系统 •多模式兼容,可同时支持定时、动态、自定义、固定、 健康等多种伸缩模式 |
•简单的伸缩模式组合 |
使用流程
- 创建伸缩组(CreateScalingGroup),配置伸缩资源的最小值(MinSize)、最大值(MaxSize)及需要关联的负载均衡实例和RDS实例。
- 创建伸缩配置(CreateScalingConfiguration),指定需要弹性伸缩的ECS实例的相关属性,如ImageID、 InstanceType 等。
- 以第二步创建的伸缩配置启用伸缩组(EnableScalingGroup)。
- 创建伸缩规则(CreateScalingRule),如加N台ECS实例的伸缩规则。
- 创建定时任务(CreateScheduledTask),如创建12:00触发第四步伸缩规则的定时任务。
- 创建报警任务(云监控APIPutAlarmRule),如创建CPU平均值(也可以是最大值或最小值)大于等于80%则增加一台 ECS 实例的报警任务。
工作流程
注意事项:
伸缩规则
在计算和执行过程中,伸缩规则可以根据伸缩组的 MinSize、MaxSize 进行自动调整其需要增加或减少的 ECS 实例数 (例:如伸缩规则中指定将伸缩组的 ECS 实例数调整至50台,但伸缩组MaxSize只有45台,则整个伸缩规则会按调整至45台来计算和执行。)
伸缩活动
同一伸缩组内、同一时刻只能有一个伸缩活动在执行。
伸缩活动不可以中断。例如,某个创建20台ECS实例的伸缩活动正在执行中,当创建到第5台ECS实例时,您无法强行终止该伸缩活动。
伸缩活动有ECS实例加入伸缩组失败时,需要保持ECS实例级事务的完整性,而非伸缩活动级事务的完整性,即只进行ECS实例级回滚,而不是伸缩活动级回滚。例如,当伸缩组创建了20台ECS实例,但只有19台ECS实例成功加入负载均衡时,则只对不成功的1台ECS实例进行自动释放操作。
冷却时间
在冷却时间内,伸缩组只会拒绝云监控报警任务类型的伸缩活动请求,其他类型的触发任务(如用户手工执行伸缩规则、定时任务等)可以绕过冷却时间立即执行伸缩活动。弹性伸缩与云监控独立存在。每个伸缩活动的最后一个ECS实例加入或移出伸缩组成功后,整个伸缩组冷却时间才开始计时。
更加详细的资料请查看官方文档
https://help.aliyun.com/product/25855.html?spm=a2c4g.11186623.6.540.64393330wpJULX