阿里云弹性伸缩功能调研

≡放荡痞女 提交于 2020-02-19 07:29:09

前言

  该文档全部摘自阿里云官方文档,个人只是整理了觉得有用的信息。

  

一、弹性伸缩简介

  根据需求“恰到好处”地分配资源,无需提前预测需求变化,实时应对需求突增。在业务需求增长时自动增加 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. 创建伸缩组。

    • 设定边界值(最大最小实例数)
    • 设定伸缩活动冷却时间
    • 设定 ECS 移除策略
    • 设定网络类型
    • 设定 SLB 和 RDS
  3. 创建伸缩配置

    • 设定 ECS 规格的模板(类似于购买 ECS 时的步骤)
    • VPC 网络类型的伸缩组支持自定义数据(比如定义部署应用的脚本,在 ECS 被创建后开机时执行一次)
  4. 创建伸缩规则

    • 简单规则:指定要调整至多少台服务器和冷却时间
    • 目标追踪规则:设定一个目标值。比如设定 CPU 为 50%,弹性伸缩就会自动增加或者缩减 ECS 来维持这个值。
    • 预测规则:根据至少 24 小时的历史数据来预测未来 48 小时的监控指标值,并为这 48 个小时创建 48 个预测任务,预测任务执行后会修改伸缩组边界值。
    • 步进规则:指定一个报警任务,该报警任务的触发条件会作为分步步骤的参照条件。例如,CPU 使用率平均值连续 3 次 >= 80% 时增加机器。
  5. 创建定时任务

  

使用说明

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

  

费用计算

  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 专有网络可以设置多个可用区(选择不同可用区下的虚拟交换机即可)。
  4. 只有 VPC 网络架构的实例才支持实例停机回收模式。

  
  

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