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

前提条件

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

业务场景

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

假设您的应用具有以下特征,也可以采用类似解决方案:
  • 采用集群方式部署,且集群拥有1台以上的服务器。
  • 具有明显的周期性波峰波谷变化,例如每天晚上5点至10点是高峰时段,其他时间资源闲置。

解决方案

弹性伸缩支持组合使用按量实例和抢占式实例,以更低成本满足高峰时段流量的要求。

您可以采用以下方案:
  • 针对非高峰时段,购买包年包月ECS实例。
  • 针对高峰时段,指定多种实例规格,并组合使用按量实例和抢占式实例,以更低成本购买ECS实例。伸缩组会按照单位vCPU的价格从低到高排序,优先选择单位vCPU价格更低的实例规格。

业务收益

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

    弹性伸缩可自动创建和释放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. 创建一个伸缩组。
    • 来源类型设置为从零开始创建
    • 组内最小实例数设置为0
    • 网络类型设置为专有网络
    • 多可用扩缩容策略设置为成本优化策略
      • 组内最小按量实例数设置为0
      • 按量实例所占比例设置为30%
      • 最低价的多个实例规格设置为3
      • 开启抢占式实例补偿模式。
    • 实例回收模式设置为释放模式
    • 绑定当前业务模块所使用的SLB实例和RDS实例。

    请根据需要配置其它信息,详细信息请参见创建伸缩组

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

    请根据需要配置其它信息,详细信息请参见创建伸缩配置

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

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

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

  1. 前往实例列表界面,将创建好的包年包月ECS实例添加至伸缩组。
  2. 将包年包月ECS实例转为保护状态,保证业务在非高峰时段正常运行。
  3. 前往基本信息界面,根据业务需求,修改伸缩组的最小实例数和最大实例数。
  4. 前往伸缩规则界面,创建一条步进规则。
    • 伸缩规则类型设置为步进规则
    • 监控类型设置为系统监控
    • 执行的时间设置为CPU使用率平均值连续3次大于等于50%。
    • 执行的操作设置为:
      • 当CPU使用率平均值大于等于60%且小于70%,增加5台。
      • 当CPU使用率平均值大于等于70%,增加10台。

    请根据需要配置其它信息,详细信息请参见创建伸缩规则

执行结果

包年包月ECS实例已被转为保护状态,用于在非高峰时段承载业务。处于保护中状态的ECS实例不会被移除伸缩组,而且负载均衡权重不受影响。

在高峰时段,伸缩组根据CPU使用率平均值所处范围,自动创建相应数量的ECS实例,过程更加平滑。由于采用了成本优化策略且开启了抢占式实例补偿,购买ECS实例时的价格更低,性价比超高。