阿里云弹性伸缩功能调研

青春壹個敷衍的年華 提交于 2019-12-03 20:48:35

一、弹性伸缩简介

  根据需求“恰到好处”地分配资源,无需提前预测需求变化,实时应对需求突增。在业务需求增长时自动增加 ECS 实例以保证稳定的提供服务;在业务需求下降时自动减少 ECS 实例以节约成本。

  

二、弹性伸缩功能

  1. 弹性扩张:当业务升级时,弹性伸缩为您自动完成底层资源升级,避免访问延时和资源超负荷运行。
  2. 弹性收缩:与弹性扩张相反。
  3. 弹性自愈:弹性伸缩提供健康检查功能,自动监控伸缩组内的 ECS 实例,自动释放不健康实例并创建新实例。

PS:

  1. 自动从 slb 实例中添加或移除 ECS 实例。
  2. 自动添加或移除 RDS 白名单。
  3. 弹性伸缩暂不支持直接接入 redis,想实现自动添加 redis 白名单,需要通过 MNS 主题触发器,触发执行上传的代码,将 ECS 实例添加到 redis 白名单中,详情见阿里云。移除白名单需要手动执行。
  4. 自动部署应用目前只支持 vpc 专有网络,经典网络可以考虑使用自定义镜像的方式部署。
  5. 如果不要求自动部署应用,可以为伸缩组创建生命周期挂钩,此时新扩张的服务器不会立马进入服务中状态,而是进入加入挂起中的状态。挂钩超时时间结束前,你可以进行ECS初始化或登录服务器安装软件等。

  

三、功能实现方式

  1. 定时模式:定时增加ECS实例。
  2. 动态模式:根据云监控指标自动增加或减少ECS实例。
  3. 固定数量模式:设置健康运行的ECS最小实例数,以保证可用性。
  4. 自定义模式:通过API手动添加或者移除实例。
  5. 多模式:上面的模式可以组合配置使用。

  

四、功能相关说明

  

使用限制

  1. 伸缩组内部署在 ECS 实例的应用必须无状态并且可横向扩展。
  2. 无法纵向扩展,无法自动升降 ECS 实例的配置。
  3. 同一个账户一个地域最多创建 20 个伸缩组。

    • 一个伸缩组内最多创建 10 个伸缩配置。
    • 一个伸缩组内最多创建 50 个伸缩规则。
    • 一个伸缩组内最多创建 6 个事件通知。
    • 一个伸缩组内最多创建 6 个生命周期挂钩。
    • 一个伸缩组最多同时关联 5 个负载均衡实例。
  4. 一个账号最多创建 20 个定时任务。
  5. 一个伸缩配置下,最多可以选择 10 个实例规格。
  6. 单个ECS实例不支持同时加入到多个伸缩组中。
  7. 关联至伸缩组的负载均衡实例必须已经开启健康检查。

  

简要配置流程

  1. 开通弹性伸缩功能。
  2. 创建伸缩组。
  3. 创建伸缩配置。
  4. 创建伸缩规则
  5. 创建伸缩触发任务。
  6. 编写部署应用的脚本,在扩展的实例启动后自动运行。

  

概念说明

  1. 触发伸缩规则开始执行扩展或者收缩实例时,便是开始了一个伸缩活动。
  2. 同一伸缩组内、同一时刻只能有一个伸缩活动在执行,且伸缩活动不可中止。
  3. 冷却时间是指,在同一伸缩组内,一个伸缩活动执行完成后的一段锁定时间。在这段锁定时间内,该伸缩组不执行其他的伸缩活动。先停用,再启用伸缩组,冷却时间将会失效。
  4. 如果在伸缩活动中,没有 ECS 实例成功加入或者移出伸缩组,则不会开始计算冷却时间。冷却时间从最后一个ECS成功加入伸缩组后开始计时。
  5. 冷却时间内,伸缩组只会拒绝云监控报警任务类型的伸缩活动请求,其他类型的触发任务(如手工执行伸缩规则、定时任务等)可以绕过冷却时间立即执行伸缩活动。
  6. 如果在伸缩规则中没有配置冷却时间,就会把伸缩组中配置的冷却时间作为默认冷却时间。
  7. 无论执行伸缩规则后扩张或者收缩多少台,都不会超过伸缩组中配置的实例最大数或最小数。

  

费用计算

  1. 自动创建的ECS实例,付费方式支持按量付费和抢占式实例。收费跟正常 ECS 一致。
  2. 实例停机不收费功能仅适用于按量付费的 VPC 类型 ECS 实例。
  3. 由于弹性伸缩是借助阿里云的 RAM(Resource Access Management)服务,通过 ECS OpenAPI 为您弹性创建 ECS 实例,所以回滚的 ECS 实例仍然会被扣费。

    • 例如,伸缩组创建了 20 台 ECS 实例,但只有 19 台 ECS 实例成功加入负载均衡时,则只对不成功的 1 台 ECS 实例进行自动回滚释放操作,而不是对整个伸缩组回滚。

  

弹性收缩

  1. 移出策略

    • OldestScalingConfiguration(默认策略):优先移出自动扩展的实例,若自动扩展的实例数移出完毕后仍需移出,则会随机移出手工加入的ECS实例。
    • OldestInstance: 取最早创建的 ECS 实例。如果作为一级筛选条件,则不论是手动加入还是自动扩展的实例,直接移出最早加入伸缩组的实例。
    • NewestInstance: 取最晚创建的 ECS 实例。如果作为一级筛选条件,则不论是手动加入还是自动扩展的实例,直接移出最晚加入伸缩组的实例。
    • 您也可以将不希望被移出伸缩组的ECS实例转为保护状态
  2. 回收模式

    • 释放模式

      • 触发弹性收缩时完全释放,下次需要扩展时再新建立实例。
    • 停机回收模式

      • 触发弹性收缩时停止实例,并把实例放进停机实例池内,下次扩张优先使用池内的实例。
      • 停机状态下实例的CPU和内存不收费,云盘(包括系统盘、数据盘)、弹性公网IP和带宽仍旧收费,公网IP将被回收,待启动时重新分配(弹性公网IP仍旧保留)。
      • 使用限制

        • 只有VPC实例的伸缩组才能开启此模式。
        • 所有本地盘实例不支持此模式。
        • 实例扩张时,停机实例池中的实例并不是一定会重新启动成功并加入伸缩组中,如不成功,则会释放后重新创建新实例。

  

五、不同网络架构区别

  1. 实例停机不收费功能仅适用于按量付费的 VPC 类型 ECS 实例。
  2. 为自动创建的ECS实例自动化部署应用功能只支持VPC网络。
  3. 经典网络在弹性扩张时可能会由于可用区ECS库存不足导致扩张失败;而VPC专有网络可以设置多个可用区(选择不同可用区下的虚拟交换机即可)。

  
  
  
  
  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!