Amazon EC2 Auto Scaling 的温池 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon EC2 Auto Scaling 的温池

温池使您能够减少引导时间非常长的应用程序的延迟,例如,因为实例需要将大量数据写入磁盘。使用温池,您不再需要过度配置 Auto Scaling 组来管理延迟以提高应用程序性能。

本节介绍如何将热池添加到 Auto Scaling 组。温池是一个预初始化 EC2 实例的池,它位于 Auto Scaling 组旁边。无论何时您的应用程序需要横向扩展,Auto Scaling 组都可以在热池上绘制,以满足其新的所需容量。温池的目标是确保实例准备好快速开始服务应用程序流量,从而加快对横向扩展事件的响应。这称为热启动

重要

在不需要的情况下创建温水池可能会导致不必要的成本。如果您的首次启动时间不会给您的应用程序带来明显的延迟问题,则您可能不需要使用温池。

您可以选择将实例保留在温池中的两种状态之一:Stopped或者Running。将实例保留在Stopped状态是一个有效的方法,以最大限度地降低成 对于已停止的实例,您只需为您使用的卷和未分配给正在运行的实例的弹性 IP 地址付费。但是,您不需要为停止的实例本身付费。您仅在实例正在运行时为它们付费。

热池的大小按两个数字之间的差值计算:Auto Scaling 组的最大容量及其所需容量。例如,如果 Auto Scaling 组的所需容量为 6,最大容量为 10,则当您首次设置热池并且该池正在初始化时,热池的大小将为 4。例外情况是,如果您为最大预热容量,在这种情况下,温水池的大小计算为最大预热容量以及所需容量。例如,如果 Auto Scaling 组的所需容量为 6,如果最大容量为 10,且最大预热容量为 8,则当您首次设置温水池并且该池正在初始化时,温水池的大小将为 2。

当实例离开温暖池时,它们将计入组的所需容量。在两种情况下,对热池中的实例进行补充:当组扩展并且其所需容量减少时,或者当组向外扩展并达到温池的最小大小时。

生命周期挂钩控制新实例何时转换到热池或从温池转换。这些挂钩可帮助您确保您的实例在生命周期挂钩结束时添加到热池之前已为您的应用程序完全配置。在下一个向外扩展事件中,这些实例可以尽快添加到 Auto Scaling 组。生命周期挂钩还可以帮助您确保实例在离开温池时准备好为流量提供服务(例如,通过填充其缓存)。有关更多信息,请参阅 温池实例生命周期

您可以使用Amazon Web Services Management Console,Amazon CLI或其中一个软件开发工具包将热池添加到 Auto Scaling 组中。

开始前的准备工作

决定如何使用生命周期挂钩来准备实例以供使用。例如,您可以配置生命周期挂钩,以便在实例完成其用户数据脚本之前延迟添加到温池。使用生命周期钩子的另一种方法是在由生命周期事件触发的 Lambda 函数中运行代码。有关更多信息,请参阅以下博客帖子。利用 EC2 Auto Scaling 热池更快地扩展您的应用程序

考虑将目标跟踪或步长缩放策略中的预热时间调整为所需的最短时间。当实例离开温池时,Amazon EC2 Auto Scaling 不会将它们计入 Auto Scaling 组的 CloudWatch 汇总指标,直到生命周期挂钩完成和预热时间完成。如果热身时间延迟InService实例包含在聚合组指标中时,您可能会发现扩展策略的扩展速度超过了必要。有关更多信息,请参阅 Amazon EC2 Auto Scaling 的动态扩展

添加温水池(console)

以下步骤演示将热池添加到 Auto Scaling 组的步骤。

添加温水池

  1. 以下网址打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/

  2. 选中现有组旁边的复选框。

    将在底部打开一个拆分窗格。Auto Scaling 组页.

  3. 选择实例管理选项卡。

  4. Untes热泳池中,选择创建温水池

  5. 要配置温水池,请执行以下操作:

    1. 适用于温池实例状态中,选择要在实例进入温池时将其转换为哪个状态。默认为 Stopped

    2. 适用于最小温水池大小中,输入要在热池中维护的最小实例数。

    3. (可选)对于最大预热容量中,选择定义一组实例数如果要控制温水池中的可用容量。

      如果选择定义一组实例数,则必须输入最大实例计数。此值表示允许同时位于热池和 Auto Scaling 组中的最大实例数。如果输入的值小于组的所需容量,并且选择不指定最小温水池大小,温水池的容量将为 0。

      注意

      保留默认等于 Auto Scaling 组的最大容量选项可帮助您维护一个温池,该温池的大小与 Auto Scaling 组的最大容量与所需容量之间的差异相匹配。为了便于管理温水池,我们建议您使用默认值,这样您就不需要记住调整温水池设置来控制温水池的大小。

  6. 选择创建

添加一个温暖的游泳池 (Amazon CLI)

以下示例演示如何使用Amazon CLI 放热池命令。每个示例演示如何在各个示例方案中指定命令。

示例 1:将实例保留在Stoppedstate

以下温池配置适用于将实例保存在Stopped状态。当实例停止时,您无需支付任何 EC2 实例使用费,尽管您需要为连接到已停止实例的任何其他资源(如 EBS 卷和弹性 IP 地址)付费。

aws autoscaling put-warm-pool --auto-scaling-group-name my-asg / --pool-state Stopped

示例 2:将实例保留在Runningstate

以下示例配置适用于将实例保存在Running状态而非Stopped状态。您在实例运行期间为它们付费。产生的费用基于实例类型。

aws autoscaling put-warm-pool --auto-scaling-group-name my-asg / --pool-state Running

示例 3:指定温暖池中的最小实例数

以下温池配置指定热池中至少 4 个实例,以便此数量的实例始终可以处理流量峰值。

aws autoscaling put-warm-pool --auto-scaling-group-name my-asg / --pool-state Stopped --min-size 4

示例 4:定义独立于最大组大小的热池大小

通常,由于您对设置最大容量所需容量有很好的了解,因此无需定义额外的最大容量。Amazon EC2 Auto Scaling 只需创建一个热池,该池可根据设置最大容量的位置动态调整大小。

但是,如果您希望控制组的最大容量,但不影响热池的大小,则可以使用--max-group-prepared-capacity选项。在使用非常大的 Auto Scaling 组时,您可能需要使用此选项来管理拥有温水池的成本效益。例如,拥有 1000 Auto Scaling 实例、最大容量为 1500(用于为紧急流量峰值提供额外容量)和 100 个实例的热池可能比 500 个实例更好地实现目标。

以下温池配置适用于温池,该热池的大小与最大组大小分开定义。假设 “Auto Scaling” 组的所需容量为 800。当您运行此命令并且池正在初始化时,温池的大小将为 100。

aws autoscaling put-warm-pool --auto-scaling-group-name my-asg / --pool-state Stopped --max-group-prepared-capacity 900

要在热池中维护最少数量的实例,请包括--min-size选项,如下所示。

aws autoscaling put-warm-pool --auto-scaling-group-name my-asg / --pool-state Stopped --max-group-prepared-capacity 900 --min-size 25

示例 5:定义绝对温水池大小

如果您设置了--max-group-prepared-capacity--min-size选项设置为相同的值,则温水池将具有绝对大小。以下温池配置适用于保持 10 个实例恒定温池大小的温池。

aws autoscaling put-warm-pool --auto-scaling-group-name my-asg / --pool-state Stopped --min-size 10 --max-group-prepared-capacity 10

删除热池

如果不再需要温暖池,请使用以下步骤将其删除。

删除温水池(console)

  1. 以下网址打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/

  2. 选中现有组旁边的复选框。

    将在 Auto Scaling groups (Auto Scaling 组) 页面底部打开一个拆分窗格,其中显示有关所选组的信息。

  3. 依次选择 ActionsDelete

  4. 当系统提示进行确认时,选择 Delete (删除)

要删除您的温水池 (Amazon CLI)

请使用以下删除热池命令删除温暖池。

aws autoscaling delete-warm-pool --auto-scaling-group-name my-asg

如果温池中存在实例,或者正在进行扩展活动,请使用删除热池命令,其中包含--force-delete选项。此选项还将终止 Amazon EC2 实例和任何未完成的生命周期操作。

aws autoscaling delete-warm-pool --auto-scaling-group-name my-asg --force-delete

Limitations

  • 您不能将温池添加到具有混合实例策略或启动竞价型实例的 Auto Scaling 组。

  • 您可以将一个实例放在Stopped状态,仅在将 Amazon EBS 卷作为其根设备的情况下。无法停止对根设备使用实例存储的实例。

  • 如果您的热池在发生横向扩展事件时耗尽,则实例将直接启动到 Auto Scaling 组(冷启动)。如果可用区域容量不足,您也可能会遇到冷启动。

  • 如果您尝试将温池与 Amazon Elastic Container Service (Amazon ECS) 或 Elastic Kubernetes Service (Amazon EKS) 托管节点组一起使用,则这些服务有可能在实例到达温池之前安排作业。