

# PERF02-BP05 动态扩展计算资源
<a name="perf_compute_hardware_scale_compute_resources_dynamically"></a>

 利用云的弹性根据需求动态增减计算资源，避免为工作负载预置的容量过多或者不足。 

 **常见反模式：** 
+  通过手动增加容量来对警报做出反应。 
+  使用本地所用的规模调整指南（通常是静态基础设施）。 
+  在扩展事件之后，您保留增加的容量，而不是缩减容量。 

 **建立此最佳实践的好处：** 配置和测试计算资源的弹性将有助于您节省资金、维护性能基准，以及在流量变化时提高可靠性。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>

 AWS 让您能够通过各种扩展机制灵活地动态扩展或缩减资源，以便满足不断变化的需求。动态扩展结合计算相关的指标，可使工作负载自动响应变化，并利用一系列最优的计算资源来实现目标。 

 您可以使用大量不同方法来实现资源的供需匹配。 
+  **目标跟踪方法**：监控您的扩展指标，并根据需要自动增加或减少容量。
+  **预测性扩缩**：根据每日和每周的趋势进行扩展。
+  **基于计划的方法**：根据可预测的负载变化设置自己的扩展计划。
+  **服务扩展**：选择可根据设计自动扩展的服务（如无服务器）。

 您必须确保工作负载部署可以处理扩展和缩减事件。 

### 实施步骤
<a name="implementation-steps"></a>
+  计算实例、容器和函数都能够与自动扩展服务相结合或作为此服务的一项功能来提供可实现弹性的机制。以下是自动扩展机制的一些示例：     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/2023-10-03/framework/perf_compute_hardware_scale_compute_resources_dynamically.html)
+  扩展通常与计算服务（如 Amazon EC2 实例或 AWS Lambda 函数）相关。此外，也请务必考虑非计算服务（如 [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/auto-scaling.html) ）的配置来满足需求。 
+  验证扩展指标是否与正在部署的工作负载的特征相匹配。如果您正在部署一个视频转码应用程序，CPU 利用率预计为 100%，并且不应将此作为您的主要指标。改用转码作业队列的深度。如果需要，您可以为您的扩缩策略使用一个 [自定义指标](https://aws.amazon.com/blogs/mt/create-amazon-ec2-auto-scaling-policy-memory-utilization-metric-linux/) 。要选择正确的指标，请考虑以下关于 Amazon EC2 的指导： 
  +  该指标应该是有效的利用率指标，并描述实例的繁忙程度。 
  +  该指标值必须随 Auto Scaling 组中的实例数量成比例地增加或减少。 
+  确保使用 [动态扩展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html) 而不是 [手动扩展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-manual-scaling.html) （对于 Auto Scaling 组）。我们还建议您在动态扩展中使用 [目标跟踪扩缩策略](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html) 。 
+  验证工作负载部署是否能够同时处理扩展事件和缩减事件。例如，您可以使用 [活动历史记录](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-verify-scaling-activity.html) 来验证 Auto Scaling 组的扩缩活动。 
+  评估您的工作负载以获得可预测的模式，并在您预期需求会发生预测和计划的变化时主动扩缩。借助预测性扩缩，您无需过度调配容量。有关更多详细信息，请参阅 [Amazon EC2 Auto Scaling 预测性扩缩](https://aws.amazon.com/blogs/compute/introducing-native-support-for-predictive-scaling-with-amazon-ec2-auto-scaling/)。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [使用 AWS 进行云计算](https://aws.amazon.com/products/compute/) 
+  [Amazon EC2 实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [Amazon ECS 容器：Amazon ECS 容器实例](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [Amazon EKS 容器：Amazon EKS Worker 节点](https://docs.aws.amazon.com/eks/latest/userguide/worker.html) 
+  [函数：Lambda 函数配置](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html#function-configuration) 
+  [Amazon EC2 实例的处理器状态控制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html) 
+  [深入探讨 Amazon ECS 集群 Auto Scaling](https://aws.amazon.com/blogs/containers/deep-dive-on-amazon-ecs-cluster-auto-scaling/) 
+  [正式推出 Karpenter：高性能开源 Kubernetes Cluster Autoscaler](https://aws.amazon.com/blogs/aws/introducing-karpenter-an-open-source-high-performance-kubernetes-cluster-autoscaler/) 

 **相关视频：** 
+  [Amazon EC2 foundations](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [Better, faster, cheaper compute: Cost-optimizing Amazon EC2](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [Optimize performance and cost for your AWS compute](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [Powering next-gen Amazon EC2: Deep dive into the Nitro system](https://www.youtube.com/watch?v=rUY-00yFlE4) 
+  [构建成本、能源和资源高效的计算环境](https://www.youtube.com/watch?v=8zsC5e1eLCg) 

 **相关示例：** 
+  [Amazon EC2 Auto Scaling 组示例](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) 
+  [使用 Karpenter 实施自动扩缩](https://www.eksworkshop.com/beginner/085_scaling_karpenter/) 