一、弹性伸缩简介
根据需求“恰到好处”地分配资源,无需提前预测需求变化,实时应对需求突增。在业务需求增长时自动增加 ECS 实例以保证稳定的提供服务;在业务需求下降时自动减少 ECS 实例以节约成本。
二、弹性伸缩功能
- 弹性扩张:当业务升级时,弹性伸缩为您自动完成底层资源升级,避免访问延时和资源超负荷运行。
- 弹性收缩:与弹性扩张相反。
- 弹性自愈:弹性伸缩提供健康检查功能,自动监控伸缩组内的 ECS 实例,自动释放不健康实例并创建新实例。
PS:
- 自动从 slb 实例中添加或移除 ECS 实例。
- 自动添加或移除 RDS 白名单。
- 弹性伸缩暂不支持直接接入 redis,想实现自动添加 redis 白名单,需要通过 MNS 主题触发器,触发执行上传的代码,将 ECS 实例添加到 redis 白名单中,详情见阿里云。移除白名单需要手动执行。
- 自动部署应用目前只支持 vpc 专有网络,经典网络可以考虑使用自定义镜像的方式部署。
- 如果不要求自动部署应用,可以为伸缩组创建生命周期挂钩,此时新扩张的服务器不会立马进入服务中状态,而是进入加入挂起中的状态。挂钩超时时间结束前,你可以进行ECS初始化或登录服务器安装软件等。
三、功能实现方式
- 定时模式:定时增加ECS实例。
- 动态模式:根据云监控指标自动增加或减少ECS实例。
- 固定数量模式:设置健康运行的ECS最小实例数,以保证可用性。
- 自定义模式:通过API手动添加或者移除实例。
- 多模式:上面的模式可以组合配置使用。
四、功能相关说明
使用限制
- 伸缩组内部署在 ECS 实例的应用必须无状态并且可横向扩展。
- 无法纵向扩展,无法自动升降 ECS 实例的配置。
同一个账户一个地域最多创建 20 个伸缩组。
- 一个伸缩组内最多创建 10 个伸缩配置。
- 一个伸缩组内最多创建 50 个伸缩规则。
- 一个伸缩组内最多创建 6 个事件通知。
- 一个伸缩组内最多创建 6 个生命周期挂钩。
- 一个伸缩组最多同时关联 5 个负载均衡实例。
- 一个账号最多创建 20 个定时任务。
- 一个伸缩配置下,最多可以选择 10 个实例规格。
- 单个ECS实例不支持同时加入到多个伸缩组中。
关联至伸缩组的负载均衡实例必须已经开启健康检查。
简要配置流程
- 开通弹性伸缩功能。
- 创建伸缩组。
- 创建伸缩配置。
- 创建伸缩规则。
- 创建伸缩触发任务。
- 编写部署应用的脚本,在扩展的实例启动后自动运行。
概念说明
- 触发伸缩规则开始执行扩展或者收缩实例时,便是开始了一个伸缩活动。
- 同一伸缩组内、同一时刻只能有一个伸缩活动在执行,且伸缩活动不可中止。
- 冷却时间是指,在同一伸缩组内,一个伸缩活动执行完成后的一段锁定时间。在这段锁定时间内,该伸缩组不执行其他的伸缩活动。先停用,再启用伸缩组,冷却时间将会失效。
- 如果在伸缩活动中,没有 ECS 实例成功加入或者移出伸缩组,则不会开始计算冷却时间。冷却时间从最后一个ECS成功加入伸缩组后开始计时。
- 冷却时间内,伸缩组只会拒绝云监控报警任务类型的伸缩活动请求,其他类型的触发任务(如手工执行伸缩规则、定时任务等)可以绕过冷却时间立即执行伸缩活动。
- 如果在伸缩规则中没有配置冷却时间,就会把伸缩组中配置的冷却时间作为默认冷却时间。
- 无论执行伸缩规则后扩张或者收缩多少台,都不会超过伸缩组中配置的实例最大数或最小数。
费用计算
- 自动创建的ECS实例,付费方式支持按量付费和抢占式实例。收费跟正常 ECS 一致。
- 实例停机不收费功能仅适用于按量付费的 VPC 类型 ECS 实例。
由于弹性伸缩是借助阿里云的 RAM(Resource Access Management)服务,通过 ECS OpenAPI 为您弹性创建 ECS 实例,所以回滚的 ECS 实例仍然会被扣费。
- 例如,伸缩组创建了 20 台 ECS 实例,但只有 19 台 ECS 实例成功加入负载均衡时,则只对不成功的 1 台 ECS 实例进行自动回滚释放操作,而不是对整个伸缩组回滚。
弹性收缩
移出策略
- OldestScalingConfiguration(默认策略):优先移出自动扩展的实例,若自动扩展的实例数移出完毕后仍需移出,则会随机移出手工加入的ECS实例。
- OldestInstance: 取最早创建的 ECS 实例。如果作为一级筛选条件,则不论是手动加入还是自动扩展的实例,直接移出最早加入伸缩组的实例。
- NewestInstance: 取最晚创建的 ECS 实例。如果作为一级筛选条件,则不论是手动加入还是自动扩展的实例,直接移出最晚加入伸缩组的实例。
- 您也可以将不希望被移出伸缩组的ECS实例转为保护状态
回收模式
释放模式
- 触发弹性收缩时完全释放,下次需要扩展时再新建立实例。
停机回收模式
- 触发弹性收缩时停止实例,并把实例放进停机实例池内,下次扩张优先使用池内的实例。
- 停机状态下实例的CPU和内存不收费,云盘(包括系统盘、数据盘)、弹性公网IP和带宽仍旧收费,公网IP将被回收,待启动时重新分配(弹性公网IP仍旧保留)。
使用限制
- 只有VPC实例的伸缩组才能开启此模式。
- 所有本地盘实例不支持此模式。
- 实例扩张时,停机实例池中的实例并不是一定会重新启动成功并加入伸缩组中,如不成功,则会释放后重新创建新实例。
五、不同网络架构区别
- 实例停机不收费功能仅适用于按量付费的 VPC 类型 ECS 实例。
- 为自动创建的ECS实例自动化部署应用功能只支持VPC网络。
- 经典网络在弹性扩张时可能会由于可用区ECS库存不足导致扩张失败;而VPC专有网络可以设置多个可用区(选择不同可用区下的虚拟交换机即可)。