View a markdown version of this page

自动执行停止和启动计划 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自动执行停止和启动计划

概述

AWS上的实例调度器能够通过自动控制 Amazon EC2Amazon Relational Database Service(Amazon RDS)实例的启动与停止,帮助您降低运营成本。如果您让所有实例一直以满负荷状态运行,则可能会为那些实际上并未被使用的资源支付费用。开启的实例调度器 AWS 使您能够在不需要实例的时间关闭实例,例如在非工作时间、周末或其他使用率较低的时段。这能够随着时间的推移带来显著的成本节省。

上的 Instance Scheduler AWS 还提供跨账户实例调度、自动标记以及使用命令行界面或维护窗口配置计划或周期的功能。AWS Systems Manager这些功能可以帮助您更有效地管理实例,并准确地在不同的项目或团队之间跟踪和分配成本。

案例研究

以一家公司为例,该公司在生产环境 AWS 中使用实例调度器在每天工作时间以外自动停止实例。如果该公司让其所有实例都保持满负荷运行状态,则对于那些仅在正常工作时间内才需要使用的实例,他们能够最高实现 70% 的成本节省。以下图表展示了每周的使用时长是如何从 168 小时减少到 50 小时的。

每周利用率减少图表

再举一个例子。电力公司牙买加公共服务有限公司(JPS)将其数据库迁移到 Amazon RDS。现在,JPS 使用 Amazon EC2 来托管 API 服务并运行其他应用程序。对于 JPS 来说,开启的实例调度器 AWS 成为管理非生产环境的关键工具。JPS 使用了实例调度器 AWS 来降低开发成本,并根据团队需求和工作计划管理 EC2 实例。这帮助 JPS 将成本降低了 40%。有关更多信息,请参阅 AWS 案例研究《牙买加公共服务高效迁移到云端, AWS 使用实例调度器将成本降低40%》

成本优化方案

以下示例场景有助于说明在上 AWS使用实例调度器的成本优势。在这种场景下,新加坡一家大型零售公司在 Amazon EC2 上部署了两个 Windows 环境。第一个环境被称为工作负载 A,被营销团队用于在门店营业期间实时分析店内交易情况。第二个环境被称为工作负载 B,为会计团队预留,仅在正常工作时间内工作。目前这两个环境的运行时间表(全天候运行)并不理想,考虑到当前的使用模式,需要进行优化以降低公司的运营成本。

以下图表显示了优化前的每月成本。

优化前的每月成本

例如,三月份有 31 天,其中 23 天是工作日。如果营销团队使用实例调度器 AWS 并仅在需要时才运行其实例(即每月 321 小时而不是每月 730 小时),则他们每月有可能节省 932.52 美元。这意味着运营成本降低了 56%。会计团队也能获得显著的收益,他们每月的实例使用时间从 730 小时减少到了 230 小时。这导致费用减少了 1140 美元,即 68.5%。该公司每月总共可以节省 2072.52 美元(相当于减少 62%),或每年节省 24870.24 美元。

以下图表显示了优化后的每月成本。

优化后的每月成本
注意

此示例的定价是在 2023 年 3 月通过使用 AWS 定价计算器 确定的。

成本优化建议

本部分基于前一部分成本优化场景中所介绍的示例场景,说明如何部署和配置 AWS 上的实例调度器。我们建议您采取以下后续步骤,通过在上 AWS使用实例计划程序来优化成本:

  1. 启动实例调度器堆栈

  2. 配置周期

  3. 配置计划

  4. 标记 实例。

以下架构图显示了实例调度器堆栈中创建的内容。 AWS 云

实例调度器堆栈架构

该图表显示了以下工作流步骤:

  1. AWS CloudFormation 模板按照您定义的时间间隔设置 Amazon CloudWatch 事件。此事件调用一个函数。 AWS Lambda 在配置过程中,您可以定义 AWS 区域 和帐户。您还可以定义一个自定义标签,实例调度器 AWS 使用该标签将计划与适用的 Amazon EC2 实例、Amazon RDS 实例和集群关联起来。

  2. 计划配置值存储在 Amazon DynamoDB 中,Lambda 函数在每次运行时都会从中获取这些值。然后,您可以将自定义标签应用于适用的实例。

  3. 在实例调度器的初始配置过程中,您可以定义一个标签键来识别适用的 Amazon EC2 和 Amazon RDS 实例。创建计划时,您指定的名称将用作标签值,用于标识要应用于已标记资源的计划。

启动实例调度器堆栈

本节介绍如何在上 AWS启动实例调度程序的 CloudFormation 堆栈。

注意

在上运行实例调度器时 AWS 服务 使用的费用由您承担。 AWS截至 2023 年 1 月,使用该解决方案的默认设置在 us-east-1 区域运行的费用约为每月 9.90 美元(这是 Lambda 的费用),如果您的 Lambda 每月使用有免费服务抵扣金可用,则费用会更低。有关更多信息,请参阅 AWS 解决方案库中《实例计划程序 AWS 实施指南》中的 “成本” 部分。

要启动实例调度器堆栈,请完成以下步骤。

  1. 登录AWS 管理控制台并选择 Launch 解决方案(可下载的模板)以启动instance-scheduler-on-aws.template CloudFormation模板。

    注意

    您也可以下载模板作为自己实施的起点。

  2. 默认情况下,该模板在美国东部(弗吉尼亚州北部)区域启动。要在其他区域中启动实例调度器,请使用控制台导航栏中的区域选择器。

    注意

    此示例使用亚太地区(新加坡)区域。

  3. 创建堆栈页面的先决条件 - 准备模板部分,确认已选中模板已准备就绪选项。在模板来源部分,确认已选中 Amazon S3 URL 选项。

  4. 验证 Amazon S3 URL 文本框中显示了正确的模板 URL,然后选择下一步

  5. 指定堆栈详细信息页面上,为您的解决方案堆栈分配一个名称。有关命名字符限制的信息,请参阅 AWS Identity and Access Management (IAM) 文档中的 IAM 和 STS 限制。本指南中示例的堆栈名称被称为 MyInstanceScheduler

    注意

    堆栈名称不能超过 28 个字符。

  6. 参数下,检查模板的参数,并根据需要进行修改。

  7. 选择 Next(下一步)。在配置堆栈选项页面上,请选择下一步

  8. 审核页面上,审核并确认设置。选中确认模板将创建 IAM 资源的复选框。

  9. 选择创建以部署堆栈。

配置周期

部署 CloudFormation 模板后,该解决方案会创建一个 DynamoDB 表,其中包含示例周期规则和计划,您可以将其用作创建自己的自定义周期规则和计划的参考。有关周期配置的示例,请参阅 AWS 文档中的实例调度器中的示例计划

要完成此场景的步骤,必须生成与每个工作负载相对应并满足其特定需求的周期。例如:

Period 1 (Workload A): Name: retail-hours Days: Monday to Sunday Hours: 1100 - 2300 Period 2 (Workload B): Name: office-hours Days: Monday to Friday Hours: 0800 - 1800

要配置周期,请完成以下步骤:

  1. 登录 D ynamoDB 控制台,确保您所在的区域与启动实例计划程序模板 CloudFormation 的区域相同。 AWS

  2. 在导航窗格中,选择,然后选择名为的表ConfigTable

  3. 选择浏览表项目

  4. 要创建办公时间时段,请为办公时间项选择时段

  5. 编辑项目页面上,将 begintime 的值更改为 0800,将 endtime 的值更改为 1800。将工作日的默认值保持不变。

    注意

    begintimeendtime 值决定何时启动和停止实例,而工作日值则决定该计划适用于一周中的哪几天(本示例中为星期一至星期五)。

  6. 选择保存更改

  7. 要复制办公时间时段并使用它来创建新的零售时间段,请为办公时间项选择时段。然后,从操作菜单中选择复制项目

  8. 修改属性以满足您的需求。以下属性用于满足示例场景的要求:

    type: period name: retail-hours begintime: 11:00 description: Retail hours endtime: 23:00 weekdays: mon-sun
  9. 选择创建项目

  10. 在 Dynam ConfigTableoDB 中,确定项目列表中列出的您刚刚创建的两个时段。

配置计划

在 “开启实例调度器” 的上下文中 AWS,计划是指应用一个或多个时段以及相关时区。随后,这些时间表会被作为标签分配到您的实例中。本部分将向您展示如何创建两个计划(如下所示),以适应两个示例工作负载所呈现出的不同时间模式,然后将这些计划与您在上一部分中创建的时段进行关联。

Schedule 1: Name: singapore-office-hours Period: office-hours Timezone: Asia/Singapore Schedule 2: Name: singapore-retail-hours Period: retail-hours Timezone: Asia/Singapore

要创建和配置计划,请完成以下步骤:

  1. 登录 D ynamoDB 控制台,确保您所在的区域与启动实例计划程序模板 CloudFormation 的区域相同。 AWS

  2. 在导航窗格中,选择,然后选择名为的表ConfigTable

  3. 选择浏览表项目

  4. 要复制英国办公时间表并使用它为您的办公时间(本例为新加坡办公时间)创建新的时间表,请为该uk-office-hours 项目选择时间表。然后,从操作菜单中选择复制项目

  5. 修改属性以满足您的需求。以下属性用于满足示例场景的要求:

    type: schedule name: singapore-office-hours description: Office hours in Singapore periods: office-hours timezone: Asia/Singapore
  6. 选择创建项目

  7. 重复步骤 4–6,以使用以下属性值为新加坡零售时间创建计划:

    type: schedule name: singapore-retail-hours description: Retail hours in Singapore periods: retail-hours timezone: Asia/Singapore
  8. 在 Dynam ConfigTableoDB 中,确定您创建的两个计划和两个周期。

标记 实例。

建立计划后,必须使用标签将计划分配给您要使用的特定实例。您可以在 AWS Resource Groups 中使用标签编辑器生成标签并将其分配给您的 Amazon EC2 实例。

  1. 登录AWS 管理控制台并确保您位于之前启动 CloudFormation 模板的同一区域。

  2. 打开资源组控制台。在导航窗格中,展开标记,然后选择标签编辑器

  3. 查找要标记的资源部分中,对于区域,选择您的区域。对于资源类型,请选择 Amazon EC2 或 Amazon RDS。此场景主要针对工作负载 A 中的 Amazon EC2 实例。营销团队正在新加坡区域使用工作负载 A。用于此工作负载的资源已经标记有部门键和营销值。您可以使用此标签来搜索实例。

  4. 选择搜索资源

  5. 从搜索结果列表中选择要包含在计划中的实例,然后选择管理所选资源的标签

  6. 编辑所有选定资源的标签部分中,选择添加标签,以将实例调度器计划标签添加到您的 EC2 实例。您可以使用与 schedulea (之前在 DynamoDB 中创建)匹配的标签键和值。

  7. 对于标签键,请添加计划。在 “标签值” 中,输入singapore-retail-hours

  8. 选择检查并应用标签更改

  9. 要将标签应用于您选择的所有 EC2 实例,请选择将更改应用于所有选定实例

  10. 对于要应用的任何其他计划,请重复步骤 3–9。

验证结果

我们建议您使用AWS Cost Explorer来衡量在上 AWS使用实例调度程序的成本收益。您可以使用 Cost Explorer 成本管理服务来执行以下操作:

  • 查看和分析与您的 EC2 实例相关的成本,包括由实例调度器管理的实例。

  • 按标签筛选您的 Cost Explorer 成本管理服务视图,以便您能够专注于特定的工作负载,并详细了解通过使用实例调度器所实现的成本节省情况。

  • 深入了解使用实例调度器的财务影响。

  • 找出进一步优化成本的机会,并做出以数据为依据的决策以优化 AWS 支出。

以下图表展示了在使用实例调度器进行优化前的七天时间段(周一至周日)内,工作负载 A 和工作负载 B 的运行成本情况。

工作负载 A 和 B 的总费用之和

工作负载 A 和 B 的总费用之和

工作负载 A 费用

工作负载 A 的费用

工作负载 B 费用

工作负载 B 的费用

在此场景中,Cost Explorer 成本管理服务显示了通过实施 AWS上的实例调度器而降低的成本。以下图表描述了优化后七天(星期一至星期日)内工作负载 A 和工作负载 B 的运行成本情况。

工作负载 A 和 B 的总费用之和

工作负载 A 和 B 的总费用之和

工作负载 A 费用

工作负载 A 的费用

工作负载 B 费用

工作负载 B 的费用

其他资源