前言
该文档全部摘自阿里云官方文档,个人只是整理了觉得有用的信息。
一、弹性伸缩简介
根据需求“恰到好处”地分配资源,无需提前预测需求变化,实时应对需求突增。在业务需求增长时自动增加 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 移除策略
- 设定网络类型
- 设定 SLB 和 RDS
-
- 设定 ECS 规格的模板(类似于购买 ECS 时的步骤)
- VPC 网络类型的伸缩组支持自定义数据(比如定义部署应用的脚本,在 ECS 被创建后开机时执行一次)
创建伸缩规则。
- 简单规则:指定要调整至多少台服务器和冷却时间
- 目标追踪规则:设定一个目标值。比如设定 CPU 为 50%,弹性伸缩就会自动增加或者缩减 ECS 来维持这个值。
- 预测规则:根据至少 24 小时的历史数据来预测未来 48 小时的监控指标值,并为这 48 个小时创建 48 个预测任务,预测任务执行后会修改伸缩组边界值。
- 步进规则:指定一个报警任务,该报警任务的触发条件会作为分步步骤的参照条件。例如,CPU 使用率平均值连续 3 次 >= 80% 时增加机器。
创建定时任务
使用说明
- 触发伸缩规则开始执行扩展或者收缩实例时,便是开始了一个伸缩活动。
- 同一伸缩组内、同一时刻只能有一个伸缩活动在执行,且伸缩活动不可中止。
- 冷却时间是指,在同一伸缩组内,一个伸缩活动执行完成后的一段锁定时间。在这段锁定时间内,该伸缩组不执行其他的伸缩活动。先停用,再启用伸缩组,冷却时间将会失效。
- 如果在伸缩活动中,没有 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 专有网络可以设置多个可用区(选择不同可用区下的虚拟交换机即可)。
- 只有 VPC 网络架构的实例才支持实例停机回收模式。
来源:https://www.cnblogs.com/ccbloom/p/11790518.html