文档

利用弹性伸缩降低成本

本教程介绍了如何利用弹性伸缩组合购买按量付费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天

成本计算

510元/月*10台

  • 包年包月ECS实例:510元/月*3台

  • 按量实例:1.77元/小时*150小时*7台

  • 包年包月ECS实例:510元/月*3台

  • 抢占式实例:0.069元/小时*150小时*7台

每月总成本

5100元

3388.5元

1579.99元

节省成本

0%

33.6%

69%

操作步骤

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

说明

本操作前,请您提前为应用的ECS实例创建自定义镜像,具体操作,请参见使用实例创建自定义镜像

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

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

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 镜像

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 找到应用实例的自定义镜像,在操作区域,单击创建实例

  5. 配置实例信息并完成实例创建。

    • 付费类型设置为包年包月

    • 地域镜像信息已自动填充。

    请根据需要配置其他信息,具体操作,请参见自定义购买实例

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

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

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击伸缩组管理
  3. 在顶部菜单栏处,选择地域。
  4. 单击创建伸缩组,完成配置项参数并创建一个伸缩组。

    • 伸缩组名称设置为您的自定义名称(例如testname)。

    • 组内实例配置信息来源选择为从零开始创建

    • 组内最小实例数设置为0

    • 组内最大实例数设置为10

    • 默认冷却时间(秒)默认为300

    • 网络类型选择为专有网络

    • 扩缩容策略选择为成本优化策略

      • 组内最小按量实例数(台)设置为0

      • 按量实例所占比例(%)设置为30

      • 最低价的多个实例规格(个)设置为3

      • 开启抢占式实例补偿设置为开启状态。

      • 使用按量实例补充抢占式容量默认为开启状态。

    • 实例回收模式选择为释放模式

    • 选择已创建的专有网络和相应的交换机。

    • 关联当前业务模块所使用的传统型负载均衡CLB(原SLB)、负载均衡ALB、NLB服务器组以及RDS实例。

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

  5. 找到已创建好的伸缩组,在对应操作列下,单击查看详情

  6. 在页面上方,单击实例配置来源页签。
  7. 单击创建伸缩配置,完成配置项参数并创建一个伸缩配置。

    • 付费模式设置为抢占式实例

    • 实例配置选择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实例。