调整 Windows 工作负载 - AWS 规范指引

调整 Windows 工作负载

概览

调整是节省成本最有效的手段之一。AWS 提供了多种方法来收集合理调整大小的相关信息,比如通过使用 AWS 优化和许可评测(AWS OLA)来审核潜在的工作负载,或者通过使用 AWS Cost Explorer 来审核现有的工作负载。

本部分向您展示如何使用 AWS Compute Optimizer 来识别 Amazon EC2 调整的机会。Compute Optimizer 有助于防止以下类型的 AWS 资源出现过度预调配和预调配不足的情况:

成本优化方案

衡量调整措施的有效性可能颇具挑战性,因为调整工作既可以针对特定的应用程序、团队,也可以针对整个组织。例如,假设一个组织将数千个实例迁移到 AWS,其中 90% 的实例集包含 Windows 工作负载。该组织可以采用 Compute Optimizer 来分析其实例集,发现其账户和 AWS 区域中存在严重的过度预调配。然后,他们可以使用 AWS Systems Manager Automation 通过多个维护窗口调整其实例集。因此,该组织成功为 70% 的实例集配置了大小合适的实例类型,并实现了 35% 的成本节省。

以下控制面板展示了该组织在数月内所实现的节省成效,这是因为在该组织的策略性实施下,其充分利用了 Compute Optimizer 所提供的调整建议。他们的目标是尽可能高效地运行现有的工作负载,以便重新启动从一家即将到期合同的主机托管数据中心进行的已停滞的迁移工作。

调整带来的节省

成本优化建议

我们建议您采取以下后续步骤以通过使用 Compute Optimizer 优化成本:

  • 启用 Compute Optimizer

  • 为 Windows 节点启用内存指标收集

  • 使用 Compute Optimizer 建议

  • 标记实例以进行调整

  • 启用成本分配标签以使用 AWS 账单工具

  • 使用 AWS Systems Manager Automation 实施调整建议

  • 考虑其他调整方法

  • 在 Cost Explorer 成本管理服务中查看成本前后

启用 Compute Optimizer

您可以在 AWS Organizations 中,在组织级别或单个账户级别启用 Compute Optimizer。组织范围的配置为所有成员账户的整个实例集中的新实例和现有实例提供持续报告。这使得调整可以成为重复的活动,而不是时间点活动。

组织级别

对于大多数组织来说,使用 Compute Optimizer 的最有效方式是在组织层面。这为您的组织提供了多账户和多区域可见性,并将数据集中到一个来源供审查。要在组织层面启用此功能,请执行以下操作:

  1. 使用具有所需权限的角色登录您的 Organizations 管理账户,然后选择加入该组织内的所有账户。您的组织必须已启用所有功能

  2. 启用管理账户后,您可以登录该账户,查看所有其他成员账户,并浏览他们的推荐。

注意

最佳做法是为 Compute Optimizer 配置委托管理员账户。这使您能够行使最低权限原则。这样,您就能最大程度地限制对组织管理账户的访问权限,同时仍能提供对组织内各项服务的访问。

单个账户级别

如果您的目标账户成本高昂,但又没有 AWS Organizations 的访问权限,您仍然可以为该账户和区域启用 Compute Optimizer。要了解选择加入流程,请参阅 Compute Optimizer 文档中的 AWS Compute Optimizer 入门

为 Windows 节点启用内存指标收集

内存指标为 Compute Optimizer 提供了制定您组织内明智的调整建议所必需的关键指标。这是因为在给出建议之前,会对 CPU、内存、网络和存储等方面进行分析。

要将内存指标从 Windows EC2 实例传递给 Compute Optimizer,您必须启用 CloudWatch 代理,并配置每 60 秒收集一次内存指标。在 CloudWatch 中使用内存指标不会产生额外费用。

启用 CloudWatch 代理并配置内存指标

下载 ComputeOptimize.yml 文件。您可以使用此文件为您账户中的所有实例启用内存收集功能。模板文件会生成以下组件:

重要

运行此模板会覆盖实例上的任何现有 CloudWatch 配置。

接下来执行以下操作:

  1. 登录 AWS 管理控制台,并打开 CloudFormation 控制台

  2. 在导航窗格中,选择 Stacks(堆栈)

  3. 选择创建堆栈,然后选择使用现有的资源(导入资源)

  4. 选择下一步

  5. 对于模板来源,选择上传模板文件

  6. 选择文件,然后上传 ComputeOptimize.yml 文件。

  7. 选择下一步

  8. 指定堆栈详细信息页面上,对于堆栈名称字段,输入堆栈的名称,然后选择下一步

  9. 识别资源页面上,输入要导入的资源的标识符值。

  10. 选择导入资源

  11. 部署堆栈后,选择输出选项卡以查找关联的键、值和描述。

监控关联的进度

  1. CloudFormation 堆栈的部署完成后,打开 Systems Manager 控制台

  2. 在导航窗格中的节点管理部分,选择状态管理器

  3. 关联页面上,选择关联 ID。

  4. 选择 Execution history (执行历史记录) 选项卡。

  5. 执行 ID 列中,选择您的关联的执行 ID。状态应为成功

查看 CloudWatch 中的指标

我们建议您至少等待五分钟,让指标填充到 CloudWatch 中。

  1. 打开 CloudWatch 控制台

  2. 在导航窗格中,展开指标部分,然后选择所有指标

  3. 确认指标显示在 CWAgent 命名空间下。

注意

要将设置应用于任何新实例,请重新运行关联。

使用 Compute Optimizer 建议

举一个例子,该示例侧重于在单个账户和单个区域内进行调整更改。在本示例中,Compute Optimizer 在组织级别为所有账户启用。请记住,调整属于破坏性过程,在大多数情况下,应用程序所有者会在几周的计划维护时段内精确地执行此过程。

如果您从组织的管理账户中导航到 Compute Optimizer(如以下步骤所示),则可以选择要调查的账户。在此示例中,us-east-1 区域的单个账户中有六个实例在运行。所有六个实例都被过度预调配。目标是根据 Compute Optimizer 提供的建议调整实例。

识别过度预调配的实例并导出建议详细信息

  1. 登录 AWS 管理控制台 并打开 Compute Optimizer 控制台

  2. 在导航窗格中,选择控制面板

  3. 控制面板页面的搜索框中,输入区域=美国东部(弗吉尼亚州北部)。然后,输入调查发现=过度预调配。这些筛选条件能让您查看 us-east-1 区域中所有过度预调配的实例。

  4. 要查看针对过度预调配的 EC2 实例的详细建议,请向下滚动到 EC2 实例卡片,然后选择查看建议

  5. 选择导出,并保存文件以备将来使用。

  6. 对于 S3 存储桶,输入您希望作为导出文件目标的 Amazon S3 存储桶的名称。

    注意

    要保存建议以备将来查看,您必须有一个可用的 S3 存储桶供每个区域的 Compute Optimizer 写入数据。有关更多信息,请参阅 Compute Optimizer 文档中的 Amazon S3 bucket policy for AWS Compute Optimizer

  7. 导出筛选条件部分中,选中包括组织中所有成员账户的建议复选框。

  8. 对于资源类型,选择 EC2 实例

  9. 要包括的列部分中,选中全选复选框。

  10. 选择导出

根据建议选择实例

实例建议基于 Compute Optimizer 收集和分析的性能指标。必须清楚了解实例上正在运行的工作负载情况,这样才能确保您选择到最适合的实例。此示例假设您可以从最新一代的 Amazon EC2 R6iR5T3 实例中进行选择。T3 实例是爆发性实例,并且网络带宽能力较低。R5 和 R6 实例的每小时成本相同,而且几乎相同。但是,R6 实例具有更高的网络带宽容量,配备了最新一代的英特尔处理器,并且其计算占用空间与 R5 相同。在此示例中,R6 是用于调整的最佳选择。

  1. Compute Optimizer 控制台中,从导航栏中选择适用于 EC2 实例的建议。此页面向您展示了当前实例类型与推荐替代方案的对比情况。

  2. 要获取您想要调整的实例的 ID,请从 AWS Organizations 中的管理账户打开 Amazon S3 控制台

  3. 在导航窗格中,选择存储桶,然后选择您用于存储导出结果的存储桶。

  4. 对象选项卡上,从对象列表中选择您的导出文件,然后选择下载

  5. 要从文件中提取实例信息,可以使用 Microsoft Excel 中数据选项卡上的文本到列按钮。

    注意

    实例 ID 表示为 Amazon 资源名称(ARN)。请务必将分隔符设置为“/”并提取实例 ID。或者,您可以编写脚本或使用集成式开发环境(IDE)来修剪 ARN。

  6. 在 Excel 中,筛选调查发现列以仅显示 OVER_PROVISIONED 实例。这些是您需要针对其进行调整的实例。

  7. 将实例 ID 保存在文本编辑器中,以便于后续访问。

标记实例以进行调整

标记工作负载是组织 AWS 资源的强大工具。您可以使用标签来更精细地了解成本并帮助退款。有关将标签添加到 AWS 资源的策略和方法的更多信息,请参阅 AWS 白皮书标记 AWS 资源的最佳实践。对于此示例,您可以使用 AWS 标签编辑器对您希望在维护窗口期间进行调整的过度预调配实例进行标记调整。您也可以使用此标签来查看更改前后的费用。

  1. 登录 AWS 管理控制台并打开包含要进行调整的实例的账户的 AWS Resource Groups 控制台

  2. 在导航栏的标记部分,选择标签编辑器

  3. 对于区域,请选择您的目标区域。

  4. 对于资源类型,选择 AWS::EC2::Instance

  5. 选择搜索资源

  6. 资源搜索结果页面上,选择要调整的所有实例,然后选择管理所选资源的标签

  7. 选择 Add tag(添加标签)

  8. 对于标签键,输入调整。对于标签值,输入已启用。然后,选择检查并应用标签更改

    注意

    您可以包括诸如团队或业务部门等的额外元数据,以帮助后续在 Cost Explorer 成本管理服务中进行筛选。

在创建用户定义的标签并将其应用到您的资源之后,标签最多可能需要 24 小时才能显示在“成本分配标签”页面上进行激活。选择要激活的标签后,可能再需要 24 小时才能激活标签。

对于高级用户,您可以在目标账户和区域内使用 AWS CloudShell 来标记多个实例。例如:

bash #!/bin/bash # Set variables TAG_KEY="rightsizing" TAG_VALUE="type-m5" # Get a list of instance IDs INSTANCE_IDS=$(aws ec2 describe-instances —query "Reservations[].Instances[].InstanceId" —output text) # Loop through each instance ID and add the tag for INSTANCE_ID in $INSTANCE_IDS; do aws ec2 create-tags —resources $INSTANCE_ID —tags Key=$TAG_KEY,Value=$TAG_VALUE done

启用成本分配标签以使用 AWS 账单工具

建议激活用户定义的成本分配标签。这样,就可以在 AWS 账单工具(例如 Cost Explorer 成本管理服务和 AWS 成本和使用情况报告)中识别和筛选调整标签。如果您不启用此选项,则标签筛选选项和数据将不可用。有关使用成本分配标签的更多信息,请参阅 AWS 账单与成本管理 文档中的 Activating user-defined cost allocation tags

  1. 登录 AWS 管理控制台并打开 AWS Billing 控制台

  2. 在导航窗格中的账单部分,选择成本分配标签

  3. 用户定义的成本分配标签选项卡上,输入调整

  4. 选择调整标签键,然后选择激活

24 小时后,标签应显示在 Cost Explorer 成本管理服务中。

使用 Systems Manager Automation 实施调整建议

调整是一种需要停止和启动实例的场景。在这种情况下,您可能需要在维护窗口内处理这一中断问题,并且需要不同的团队分别负责各自的调整工作。在更改实例类型之前,请查看 Amazon EC2 文档中兼容实例类型的考虑因素

本部分中的示例步骤使用名为 AWS-ResizeInstance 的 Systems Manager Automation 文档,为每个账户和区域实施调整建议。这种方法在大多数组织中都很常见,因为大多数组织出于不同目的需要不同类型的实例。您也可以使用相同的 AWS-ResizeInstance 自动化文档来针对单账户和多账户部署。

  1. 登录 AWS 管理控制台 并打开 Systems Manager 控制台

  2. 在导航窗格的共享资源部分,选择文档

  3. 在搜索栏中,输入 AWS-ResizeInstance,然后从搜索结果中选择 AWS-ResizeInstance

  4. 选择执行自动化

  5. 执行自动化运行手册页面上,选择简单执行

  6. 输入参数部分,输入 InstanceIdInstanceType。保留其余的默认值。

  7. 选择执行然后等待自动化程序完成更改实例类型的各项步骤。

考虑其他调整方法

如果您使用启动模板来部署实例,则可以使用调整过的实例类型更新启动模板,然后执行实例刷新,以用调整过的版本替换现有实例。

如果您计划在多个账户和区域中使用调整流程,则必须创建自定义 Systems Manager Automation 文档。此文档允许您将多个实例作为参数输入,并且目标实例会迁移到相同的目标实例类型(例如,所有实例都会转换为 t3a.medium 类型,不论源实例类型为何)。

在 Cost Explorer 成本管理服务中查看成本前后

调整资源后,您可以使用 Cost Explorer 成本管理服务通过调整标签显示调整前后的成本。请记住,您可以使用资源标签来跟踪成本。通过使用多层标签,您可以精细地了解成本。在本指南中介绍的示例中,调整标签用于将通用标签应用于所有目标实例。然后,使用团队标签来进一步整理资源。下一步是引入应用程序标签,以进一步显示运行特定应用程序的成本影响。

以下图表显示了一个组织的标签结构。

组织的标签结构

以调整运营团队拥有的生产 Web 服务器的企业为例。在 Cost Explorer 成本管理服务中,调整标签被设置为启用团队标签被设置为运营。在此示例中,调整工作可将运营成本从一小时 0.89 美分降低到 0.28 美分。假设每月 744 小时,调整前的年度成本为 7945.92 美元。调整后,年度成本降为 2499.84 美元。这意味着每年的工作负载成本降低了 68.5%。想象一下这对大型组织的影响。请记住,这是在模拟环境中进行的操作,而且这些实例大多处于闲置状态。在生产环境中,您可以看到 10-35% 的节省。

现在,考虑一下调整工程团队拥有的生产堡垒主机会产生什么影响。在 Cost Explorer 成本管理服务中,调整标签被设置为启用团队标签被设置为工程。在此示例中,调整工作可将成本从一小时 0.75 美分降低到 0.44 美分。假设每月 744 小时,调整前的年度成本为 6696.00 美元。调整后,年度成本降为 3928.32 美元。

如果您使用多个标签,则可以将数据筛选到具体的成本明细层面。在此示例中,团队标签减少了干扰,让您能够从团队层面查看其影响情况。由于调整标签已启用,因此您还可以筛选具有该标签且值为启用或不存在任何值的任何实例。这可以让您全面了解您的调整工作,尤其是在 Cost Explorer 成本管理服务层面的管理账户(付款人)中查看时。通过此视图,您可以查看所有账户和实例。

举一个单账户级别的示例,其中调整标签设置为启用。  运营成本从一小时 1.64 美元降至一小时 0.72 美分。假设每月 744 小时,调整前的年度成本为 14641.92 美元。调整后,年度成本降为 6428.16 美元。这意味着该账户的计算成本降低了 56%。

在开始调整旅程之前,考虑以下事项:

  • AWS 提供了许多降低成本的选项。其中包括 AWS OLA,即在将本地实例迁移到 AWS 之前,AWS 会对其进行审查。AWS OLA 还为您提供调整建议和许可指引。

  • 在购买节省计划之前,完成所有调整。这可以帮助您避免超额购买节省计划承诺。

建议

我们建议您完成以下后续步骤:

  1. 查看您的现有格局,并考虑将 Amazon EBS gp2 卷转换为 gp3 卷。

  2. 查看节省计划

其他资源