本教程介绍了如何利用弹性伸缩组合购买按量付费ECS实例和抢占式实例,应对周期性业务波动的同时降低使用成本。

前提条件

  • 使用本教程进行操作前,请确保您已经注册了阿里云账号。如还未注册,请先完成账号注册
  • 为应用的ECS实例创建了自定义镜像,具体操作,请参见使用实例创建自定义镜像

业务场景

某在线教育平台的上课高峰为每天下午5点至晚上10点,其他时间段业务流量较低。为保证顺利承载上课高峰带来的流量,运维人员需要长期保有上课高峰期的计算资源,但计算资源在其余时间段处于闲置状态,导致资源成本浪费。如果上课高峰时间段流量超出预估,仍需要临时手动创建ECS实例。

假设您的应用具有以下特征,也可以采用类似解决方案:
  • 采用集群方式部署,且集群拥有1台以上的服务器。
  • 业务具有高容错性,可以接受随时被打断的风险。例如,采用抢占式实例的测试业务。
  • 业务具有明显的周期性波峰波谷变化,例如,每天下午5点至晚上10点是业务高峰(波峰)时间段,其他时间段资源闲置。

解决方案

弹性伸缩支持组合使用按量实例和抢占式实例,以更低成本来满足业务周期性波动时间段流量的要求。

您可以采用以下方案:
  • 对于非波峰波谷时间段的业务,建议您购买包年包月ECS实例。
  • 对于波峰波谷时间段的业务,您可以采用定时任务功能添加和释放对应的ECS实例。具体说明如下:
    • 业务高峰(波峰)期间,伸缩组采用定时任务方式,将临时自动添加需要的ECS实例,该实例可以指定多种实例规格,即组合使用按量实例和抢占式实例,进一步降低成本。伸缩组会按照vCPU的单位价格从低到高进行排序,优先选择vCPU单位价格更低的实例规格。
    • 业务低谷(波谷)期间,伸缩组采用定时任务方式,将自动释放不需要的ECS实例。

业务收益

利用弹性伸缩降低成本,您可以获得以下收益:
  • 零备机成本

    弹性伸缩可自动创建和释放ECS实例,实现按需取用,无需备机。您只需针对非波峰波谷时间段的流量保有计算资源。

  • 零运维成本

    您只需提前配置扩容策略。负载增加时,弹性伸缩自动创建ECS实例,并将ECS实例添加到RDS实例的白名单和SLB实例的后端服务器组。整个过程自动触发和完成,无需人工干预。

  • 超高性价比

    弹性伸缩支持组合使用按量实例和抢占式实例,抢占式实例最低能以一折的价格购得ECS实例。如果抢占式实例库存不足,也会以按量实例的方式交付,保证交付结果。成本优化策略还支持抢占式实例补偿,在已有抢占式实例被释放前5分钟,会自动尝试创建当前较低价格的新抢占式实例,性价比超高。

以使用ecs.g5.xlarge实例规格为例计算三种方案的成本差距。
说明 表中价格仅为示例,实际计算时请以售卖页中的价格为准。另外,抢占式实例的价格随库存、时间等因素波动,更多说明请参见抢占式实例概述
对比项目 传统方案 成本优化方案(按量实例) 成本优化方案(抢占式实例)
实例数量 包年包月ECS实例:10台
  • 包年包月ECS实例:3台
  • 按量实例:7台
  • 包年包月ECS实例:3台
  • 抢占式实例:7台
使用时间 包年包月ECS实例:1个月
  • 包年包月ECS实例:1个月
  • 按量实例:5小时/天*30天
  • 包年包月ECS实例:1个月
  • 抢占式实例:5小时/天*30天
成本计算 484.5元/月*10台
  • 包年包月ECS实例:484.5元/月*3台
  • 按量实例:1.77元/小时*150小时*7台
  • 包年包月ECS实例:484.5元/月*3台
  • 抢占式实例:0.069元/小时*150小时*7台
每月总成本 4845元 3312元 1525.95元
节省成本 0% 31.6% 68.5%

操作步骤

请根据您的业务架构评估业务模块,并执行以下操作为有需要的业务模块降低成本:

步骤一:使用自定义镜像创建包年包月ECS实例

创建指定数量的包年包月ECS实例,用于添加到伸缩组,满足业务模块的非波峰波谷时间段要求。

  1. 登录ECS管理控制台
  2. 在左侧导航栏,选择实例与镜像 > 镜像
  3. 在顶部菜单栏左上角处,选择地域。
  4. 找到应用实例的自定义镜像,在操作区域,单击创建实例
  5. 配置实例信息并完成实例创建。
    • 付费模式设置为包年包月
    • 地域及可用区镜像信息已自动填充。

    请根据需要配置其他信息,具体操作,请参见使用向导创建实例

步骤二:创建并启用伸缩组

为需要降低成本的业务模块创建伸缩组,并为伸缩配置选择应用实例的自定义镜像,确保自动创建出的ECS实例符合应用的要求。

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击伸缩组管理
  3. 在顶部菜单栏处,选择地域。
  4. 创建一个伸缩组。
    • 伸缩组名称设置为您的自定义名称(例如testname)。
    • 组内实例配置信息来源设置为从零开始创建
    • 组内最小实例数设置为0
    • 组内最大实例数设置为10
    • 默认冷却时间(秒)默认为300
    • 网络类型设置为专有网络
    • 扩缩容策略设置为成本优化策略
      • 组内最小按量实例数(台)设置为0
      • 按量实例所占比例(%)设置为30
      • 最低价的多个实例规格(个)设置为3
      • 开启抢占式实例补偿设置为开启状态。
      • 使用按量实例补充抢占式容量默认为开启状态。
    • 实例回收模式设置为释放模式
    • 选择已创建的专有网络和相应的交换机。
    • 绑定当前业务模块所使用的SLB实例和RDS实例。

    请根据需要配置其他信息,具体操作,请参见创建伸缩组

  5. 找到已创建好的伸缩组,在对应操作列下,单击查看详情
  6. 在页面上方,单击实例配置来源页签。
  7. 创建一个伸缩配置。
    • 付费模式设置为抢占式实例
    • 选择3个或3个以上的实例规格。
    • 镜像设置为您的自定义镜像。

    请根据需要配置其他信息,具体操作,请参见创建伸缩配置(ECS实例)

  8. 启用伸缩配置和伸缩组。

步骤三:添加包年包月ECS实例并设置自动伸缩策略

将包年包月ECS实例添加至伸缩组,并创建定时任务,实现根据业务峰谷自动平滑伸缩,结合抢占式实例最大程度地降低成本。

  1. 前往实例列表界面,将创建好的包年包月ECS实例添加至伸缩组。
  2. 将包年包月ECS实例转为保护状态,保证业务在非波峰波谷时间段正常运行。
  3. 前往伸缩组管理界面,根据业务需求,修改伸缩组的最小实例数和最大实例数。
    关于如何修改伸缩组内最大最小实例数的具体操作,请参见修改伸缩组
  4. 前往伸缩规则界面,创建2条简单规则。
    需要配置的主要参数项如下所示:
    • 伸缩规则类型设置为简单规则
    • 执行的操作设置的规则如下:
      • 简单规则1:当伸缩组需要弹性扩容时,增加5台。
      • 简单规则2:当伸缩组需要弹性缩容时,减少5台。

    请根据需要配置其他信息,具体操作,请参见创建伸缩规则

  5. 前往定时任务界面,创建2条定时任务。
    • 执行时间设置的规则如下:
      • 定时任务1:当业务高峰期(例如下午5点)即将到来时需要进行扩容时,设置为2021年11月20日16:59
      • 定时任务2:当业务低谷期(例如晚上10点)即将到来时需要进行缩容时,设置为2021年11月20日21:59
    • 伸缩组设置为已添加包年包月ECS实例的伸缩组。
    • 伸缩方式设置为选择已有伸缩规则
    • 伸缩规则(简单规则)设置的规则如下所示:
      • 定时任务1:当业务高峰期(例如下午5点)即将到来时需要进行弹性扩容时,选择简单规则1。
      • 定时任务2:当业务低谷期(例如晚上10点)即将到来时需要进行弹性缩容时,选择简单规则2。

    请根据需要配置其他信息,具体操作,请参见创建定时任务

执行结果

您可以在伸缩活动页面,查看伸缩活动详情,看伸缩组内的实例是否正常扩容和缩容,具体操作,请参见查看伸缩活动详情

说明 如果伸缩活动存在异常,您可以根据提示进行排查,更多信息,请参见排查伸缩活动异常
  • 包年包月ECS实例已被转为保护状态,用于在非波峰波谷时间段承载业务。处于保护中状态的ECS实例不会被移除伸缩组,而且负载均衡权重不受影响。
  • 在业务高峰(波峰)时间段,伸缩组采用定时任务方式,将自动创建相应数量的ECS实例,过程更加平滑。由于采用了成本优化策略且开启了抢占式实例补偿,购买ECS实例时的价格更低,性价比较高。
  • 在业务低谷(波谷)时间段,伸缩组采用定时任务方式,将自动释放不需要的ECS实例。