Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

扩展 Auto Scaling 组的大小

扩展是增加或减少应用程序的计算容量的能力。扩展从事件或扩展操作开始,事件或扩展操作指示 Auto Scaling 启动或终止 EC2 实例。

Auto Scaling 为满足您的应用程序需求提供了多种调整扩展的方式。因此,您需要很好地了解您的应用程序,这十分重要。请注意以下事项:

  • 您希望 Auto Scaling 在您的应用程序架构中发挥什么作用?通常的想法是将 Auto Scaling 作为增加和减少容量的方式,但它在维持稳定的服务器数量方面也十分有用。

  • 哪些成本约束对您比较重要?因为 Auto Scaling 使用 EC2 实例,所以您只需为使用的资源付费。了解成本约束可以帮助您确定何时扩展应用程序以及扩展量。

  • 哪些指标对应用程序比较重要?CloudWatch 支持一些可用于 Auto Scaling 组的不同指标。我们建议您查看这些指标,以了解其中哪些与您的应用程序最有意义。

扩展计划

Auto Scaling 提供了多种扩展 Auto Scaling 组的方式。

始终保持当前实例等级

您可以配置 Auto Scaling 组,使其始终保持最小数量或指定的所需数量的运行实例。为了保持当前实例等级,Auto Scaling 将对 Auto Scaling 组内运行的实例执行定期运行状况检查。如果 Auto Scaling 发现运行状况不佳的实例,它将终止该实例,并启动新实例。有关配置 Auto Scaling 组以保持当前实例等级的信息,请参阅保持 Auto Scaling 组中的实例数量

手动扩展

手动扩展是扩展资源的最基本方法。只指定 Auto Scaling 组的最大容量、最小容量或所需容量的变化。Auto Scaling 可以管理创建或终止实例的流程来维护更新的容量。有关更多信息,请参阅 手动扩展

按计划扩展

有时候,您确切地知道何时要增加或减少组中的实例数量,因为该需求遵循可预测的计划。按计划扩展意味着扩展操作作为时间和日期的函数自动执行。有关更多信息,请参阅 计划的扩展

根据需求进行扩展

按策略扩展是一种更高级的资源扩展方式,允许您定义控制 Auto Scaling 流程的参数。例如,您可以创建策略,要求在平均 CPU 使用率连续 15 分钟保持在 90% 以上时扩展 EC2 实例。如果您知道如何根据条件变化来进行扩展,但却不知道条件何时改变,那么可使用这种方法。您可以通过设置 Auto Scaling 来进行响应。

您应该为每个要监控的事件设置两个策略,一个用于收缩 (终止实例),另一个用于扩展 (启动实例)。例如,如果需要在网络带宽达到特定等级时进行扩展,需要创建策略以指定 Auto Scaling 应启动特定数量的实例来帮助您应对流量。但是可能还需要一个相应的策略,在网络带宽水平降低时缩小特定数量的实例。有关更多信息,请参阅 动态扩展

多个扩展策略

一个 Auto Scaling 组在任何给定时间可附有多个扩展策略。实际上,我们建议每个 Auto Scaling 组至少使用两个策略:一个用于扩大架构,一个用于缩小架构。您还可以合并扩展策略以发挥 Auto Scaling 组的最大性能。

为了说明多个策略如何协同工作,请考虑使用一个 Auto Scaling 组和一个 Amazon SQS 队列的应用程序,该队列用于向组中的 EC2 实例发送请求。为了帮助确保应用程序性能达到最佳级别,有两个策略用于控制何时扩展 Auto Scaling 组。一个策略使用 Amazon CloudWatch 指标 CPUUtilization 检测实例何时达到 90% 的容量。另一个策略使用 NumberOfMessagesVisible 检测 SQS 队列何时填满消息。

注意

在生产环境中,这两个策略都有补充策略用于控制 Auto Scaling 何时应缩小 EC2 实例数。

将多个策略附加到 Auto Scaling 组时,两个策略有可能同时指示 Auto Scaling 进行扩大(或缩小)。在前例中,有可能 EC2 实例触发 CPUUtilization 指标的 CloudWatch 警报,而 SQS 队列触发 NumberOfMessagesVisible 指标的警报。

如果发生这些情况,Auto Scaling 选择对 Auto Scaling 组影响最大的策略。例如,假设针对 CPU 使用率的策略指示 Auto Scaling 启动一个实例,而针对 SQS 队列的策略提示 Auto Scaling 启动两个实例。如果同时满足两个策略的扩展条件,则 Auto Scaling 优先选择 SQS 队列策略,因为它对 Auto Scaling 组影响最大。这样,Auto Scaling 将两个实例启动到该组中。即使策略对扩展使用不同的条件,此优先顺序也适用。例如,如果一个策略指示 Auto Scaling 启动三个实例,而另一个策略指示 Auto Scaling 将容量增加 25%,则 Auto Scaling 优先选择当时对组影响最大的策略。