

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

# 调整 Windows 工作负载
<a name="rightsize"></a>

## 概述
<a name="rightsize-overview"></a>

合适的尺寸是最有效的节省成本的工具之一。 AWS 提供了各种收集正确规模信息的方法，从使用[AWS 优化和许可评估 (O AWS LA)](https://aws.amazon.com/optimization-and-licensing-assessment/) 审查潜在的工作负载，到使用查看现有工作负载[AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/)。

本部分向您展示如何使用 [AWS Compute Optimizer](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-rightsizing.html) 来识别 Amazon EC2 调整的机会。Compute Optimizer 有助于防止以下类型的资源出现过度配置和配置不足的情况： AWS 
+ [Amazon Elastic Compute Cloud（Amazon EC2）](https://aws.amazon.com/ec2/)实例类型
+ [Amazon Elastic Block Store（Amazon EBS）卷](https://aws.amazon.com/ebs/)
+ [亚马逊弹性容器服务 (Amazon ECS)](https://aws.amazon.com/ecs/) Container Service 服务在 AWS Fargate
+ [AWS Lambda](https://aws.amazon.com/lambda/)基于 [Amazon](https://aws.amazon.com/cloudwatch/) 提供的使用率数据的函数 CloudWatch

## 成本优化方案
<a name="rightsize-costopt-scenario"></a>

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

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

![\[调整带来的节省\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/dashboard_rightsizing_savings.png)


## 成本优化建议
<a name="rightsize-costopt-rec"></a>

我们建议您采取以下后续步骤以通过使用 Compute Optimizer 优化成本：
+ 启用 Compute Optimizer
+ 为 Windows 节点启用内存指标收集
+ 使用 Compute Optimizer 建议
+ 标记实例以进行调整
+ 启用成本分配标签以使用 AWS 计费工具
+ 使用 AWS Systems Manager 自动化实施合适的尺寸建议
+ 考虑其他调整方法
+ 在 Cost Explorer 成本管理服务中查看成本前后

### 启用 Compute Optimizer
<a name="costopt-rec-optimizer"></a>

您可以在 AWS Organizations中，在组织级别或单个账户级别启用 [Compute Optimizer](https://docs.aws.amazon.com/compute-optimizer/latest/ug/getting-started.html#account-opt-in)。组织范围的配置为所有成员账户的整个实例集中的新实例和现有实例提供持续报告。这样一来，正确调整大小就可以成为重复的活动，而不是一项 point-in-time活动。

#### 组织级别
<a name="costopt-rec-optimizer-org"></a>

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

1. 使用具有[所需权限](https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html)的角色登录您的 [Organizations 管理账户](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)，然后选择加入该组织内的所有账户。您的组织必须[已启用所有功能](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html)。

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

**注意**  
最佳做法是为 Compute Optimizer 配置[委托管理员账户](https://docs.aws.amazon.com/compute-optimizer/latest/ug/delegate-administrator-account.html)。这使您能够行使最低权限原则。这样，您就能最大程度地限制对组织管理账户的访问权限，同时仍能提供对组织内各项服务的访问。

#### 单个账户级别
<a name="costopt-rec-optimizer-single"></a>

如果您的目标账户成本高昂，但又没有 AWS Organizations的访问权限，您仍然可以为该账户和区域启用 Compute Optimizer。要了解选择加入流程，请参阅 Compute Optimizer 文档中的 [AWS Compute Optimizer入门](https://docs.aws.amazon.com/compute-optimizer/latest/ug/getting-started.html)。

### 为 Windows 节点启用内存指标收集
<a name="costopt-rec-memory-metrics"></a>

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

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

#### 启用 CloudWatch 代理并配置内存指标
<a name="memory-metrics-cfn"></a>

下载 [ComputeOptimize.yml 文件。](https://static.us-east-1.prod.workshops.aws/public/93110159-2ede-4c0c-9767-877c96d68a7e/static/code/wec2/ComputeOptimize.yml)您可以使用此文件为您账户中的所有实例启用内存收集功能。模板文件会生成以下组件：
+ [AWS Systems Manager 参数存储](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)-用于存储收集内存指标所需的 CloudWatch 代理配置。
+ AWS Identity and Access Management (IAM) 角色 AWS Systems Manager附带[AWS 托管策略 — 此角色适用于](https://docs.aws.amazon.com/systems-manager/latest/userguide/security_iam_service-with-iam.html#managed-policies) Systems Manager Automation 文档。
+ [AWS Systems Manager doc](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) uments — 这将安装和配置 CloudWatch代理（替换任何现有 CloudWatch 配置）。
+ [AWS Systems Manager 状态管理器](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state.html)关联 — 这使得 Systems Manager 文档能够在您账户中的所有实例上运行。

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

接下来执行以下操作：

1. 登录 AWS 管理控制台 并打开[CloudFormation 控制台](https://console.aws.amazon.com/cloudformation/)。

1. 在导航窗格中，选择 **Stacks（堆栈）**。

1. 选择**创建堆栈**，然后选择**使用现有的资源（导入资源）**。

1. 选择**下一步**。

1. 对于**模板来源**，选择**上传模板文件**。

1. 选择**文件**，然后上传 `ComputeOptimize.yml` 文件。

1. 选择**下一步**。

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

1. 在**识别资源**页面上，输入要导入的资源的标识符值。

1. 选择**导入资源**。

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

#### 监控关联的进度
<a name="memory-metrics-progress"></a>

1.  CloudFormation 堆栈部署完成后，打开 Syst [ems Manager 控制台](https://console.aws.amazon.com/systems-manager/)。

1. 在导航窗格中的**节点管理**部分，选择**状态管理器**。

1. 在**关联**页面上，选择关联 ID。

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

1. 在**执行 ID** 列中，选择您的关联的执行 ID。状态应为**成功**。

#### 在中查看指标 CloudWatch
<a name="memory-metrics-cloudwatch"></a>

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

1. 打开 [CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，展开**指标**部分，然后选择**所有指标**。

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

**注意**  
要将设置应用于任何新实例，请重新运行关联。

### 使用 Compute Optimizer 建议
<a name="costopt-rec-consume-opt"></a>

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

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

#### 识别过度预调配的实例并导出建议详细信息
<a name="consume-optimizer-overprovisioned"></a>

1. 登录 AWS 管理控制台 并打开 [Compute Optimizer 控制台](https://console.aws.amazon.com/compute-optimizer/)。

1. 在导航窗格中，选择**控制面板**。

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

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

1. 选择**导出**，并保存文件以备将来使用。

1. 对于 **S3 存储桶**，输入您希望作为导出文件目标的 Amazon S3 存储桶的名称。
**注意**  
要保存建议以备将来查看，您必须有一个可用的 S3 存储桶供每个区域的 Compute Optimizer 写入数据。有关更多信息，请参阅 Compute Optimizer 文档中的 [Amazon S3 bucket policy for AWS Compute Optimizer](https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)。

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

1. 对于**资源类型**，选择 **EC2 实例**。

1. 在**要包括的列**部分中，选中**全选**复选框。

1. 选择**导出**。

#### 根据建议选择实例
<a name="consume-optimizer-instance-based"></a>

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

1. 在 [Compute Optimizer 控制台](https://console.aws.amazon.com/compute-optimizer/)中，从导航栏中选择**适用于 EC2 实例的建议**。此页面向您展示了当前实例类型与推荐替代方案的对比情况。

1. 要获取您想要调整的实例的 ID，请从 AWS Organizations中的管理账户打开 [Amazon S3 控制台](https://console.aws.amazon.com/s3/)。

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

1. 在**对象**选项卡上，从对象列表中选择您的导出文件，然后选择**下载**。

1. 要从文件中提取实例信息，可以使用 Microsoft Excel 中**数据**选项卡上的**文本到列**按钮。
**注意**  
实例以 IDs Amazon 资源名称 (ARNs) 表示。请务必将分隔符设置为“/”并提取实例 ID。或者，您可以编写脚本或使用集成式开发环境（IDE）来修剪 ARN。

1. 在 Excel 中，筛选**调查发现**列以仅显示 **OVER\$1PROVISIONED** 实例。这些是您需要针对其进行调整的实例。

1. 将实例保存在文本编辑器 IDs 中，便于日后访问。

### 标记实例以进行调整
<a name="costopt-rec-tag-instances"></a>

标记工作负载是组织 AWS资源的强大工具。您可以使用标签来更精细地了解成本并帮助退款。有关向资源添加标签的策略和方法的更多信息，请参阅 AWS 白皮书为 AWS 资源添加[标签 AWS 的最佳实践](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)。对于此示例，您可以使用 [AWS 标签编辑器](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)对您希望在维护窗口期间进行调整的过度预调配实例进行标记调整。您也可以使用此标签来查看更改前后的费用。

1. 登录 AWS 管理控制台 并打开包含要调整大小的实例的账户的[AWS Resource Groups 控制台](https://console.aws.amazon.com/resource-groups)。

1. 在导航栏的**标记**部分，选择**标签编辑器**。

1. 对于**区域**，请选择您的目标区域。

1. 对于**资源类型**，请选择** AWS::EC2::Instance**。

1. 选择**搜索资源**。

1. 在**资源搜索结果**页面上，选择要调整的所有实例，然后选择**管理所选资源的标签**。

1. 选择 **Add tag（添加标签）**。

1. 对于**标签键**，输入**调整**。对于**标签值**，输入**已启用**。然后，选择**检查并应用标签更改**。
**注意**  
您可以包括诸如团队或业务部门等的额外元数据，以帮助后续在 Cost Explorer 成本管理服务中进行筛选。

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

对于高级用户，您可以在目标账户和区域内使用 [AWS CloudShell](https://console.aws.amazon.com/cloudshell/home) 来标记多个实例。例如：

```
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 计费工具
<a name="costopt-rec-cost-allocation-tag"></a>

建议激活用户定义的成本分配标签。这样就可以在 AWS 计费工具（例如，Cost Explorer 和）中识别和筛选 **Right** sizing 标签。 AWS 成本和使用情况报告如果您不启用此选项，则标签筛选选项和数据将不可用。有关使用成本分配标签的更多信息，请参阅 AWS 账单与成本管理 文档中的 [Activating user-defined cost allocation tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activating-tags.html)。

1. 登录 AWS 管理控制台 并打开[AWS Billing 控制台](https://console.aws.amazon.com/billing)。

1. 在导航窗格中的**账单**部分，选择**成本分配标签**。

1. 在**用户定义的成本分配标签**选项卡上，输入**调整**。

1. 选择**调整**标签键，然后选择**激活**。

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

### 使用 Systems Manager Automation 实施调整建议
<a name="costopt-rec-rightsizing-rec"></a>

调整是一种需要停止和启动实例的场景。在这种情况下，您可能需要在维护窗口内处理这一中断问题，并且需要不同的团队分别负责各自的调整工作。在更改实例类型之前，请查看 Amazon EC2 文档中[兼容实例类型的考虑因素](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html#resize-ebs-backed-instance-considerations)。

本节中的示例步骤使用名为 [AWS-](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-resizeinstance.html) 的 Systems Manager Automation 文档，为每个账户和地区实施合适的规模建议ResizeInstance。这种方法在大多数组织中都很常见，因为大多数组织出于不同目的需要不同类型的实例。您也可以使用相同的 `AWS-ResizeInstance` 自动化文档来针对单账户和多账户部署。

1. 登录 AWS 管理控制台 并打开 S [ystems Manager 控制台](https://console.aws.amazon.com/systems-manager/)。

1. 在导航窗格的**共享资源**部分，选择**文档**。

1. 在搜索栏中输入 **AWS-ResizeInstance**，然后ResizeInstance 从搜索结果中选择 **AWS-**。

1. 选择**执行自动化**。

1. 在**执行自动化运行手册**页面上，选择**简单执行**。

1. 在**输入参数**部分中，输入**InstanceId**和**InstanceType**。保留其余的默认值。

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

### 考虑其他调整方法
<a name="costopt-rec-alternative-resizing"></a>

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

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

### 在 Cost Explorer 成本管理服务中查看成本前后
<a name="costopt-rec-before-after"></a>

调整资源后，您可以使用 Cost Explorer 成本管理服务通过**调整**标签显示调整前后的成本。请记住，您可以使用[资源标签](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)来跟踪成本。通过使用多层标签，您可以精细地了解成本。在本指南中介绍的示例中，**调整**标签用于将通用标签应用于所有目标实例。然后，使用团队标签来进一步整理资源。下一步是引入应用程序标签，以进一步显示运行特定应用程序的成本影响。

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

![\[组织的标签结构\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/org_tag_structure.png)


以调整运营团队拥有的生产 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](https://aws.amazon.com/optimization-and-licensing-assessment/)， AWS 它会在迁移到本地实例之前先检查您的本地实例 AWS。O AWS LA 还为您提供合适的规模建议和许可指南。
+ 在购买[节省计划](https://aws.amazon.com/savingsplans/)之前，完成所有调整。这可以帮助您避免超额购买节省计划承诺。

## 建议
<a name="rightsize-recommendations"></a>

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

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

1. 查看[节省计划](https://aws.amazon.com/savingsplans/)。

## 其他资源
<a name="additional-resources"></a>
+ [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/)（AWS 文档）
+ [标记 AWS 资源的最佳实践](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)（AWS 白皮书）
+ [如何从 AWS Compute Optimizer 您的 AWS Organizations(YouTube) AWS Trusted Advisor 中收集数据](https://www.youtube.com/watch?v=ekR6RSgqJ4Q)
+ [优化性能并降低许可成本：将 AWS Compute Optimizer 用于 Amazon EC2 SQL Server 实例](https://aws.amazon.com/blogs/modernizing-with-aws/optimizing-performance-and-reducing-licensing-costs-leveraging-aws-compute-optimizer-for-ec2-sql-server-instances/)（ AWS 上的 Microsoft 工作负载博客）