同步启动实例 - Amazon A EC2 uto Scaling

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

同步启动实例

Amazon A EC2 uto Scaling 提供了两种在您的 Auto Scaling 组中启动实例的方法:异步扩展行为和使用 LaunchInstances API 进行同步配置。

通过同步配置,您可以使用 LaunchInstances API 请求特定可用区中特定数量的实例。同步资源调配具有以下好处:

  • 即时反馈特定可用区域的容量可用性

  • 精确控制哪些可用区实例在哪个可用区启动

  • IDs 可立即在编排系统中使用的确定性实例

  • 基于实际容量限制的实时扩展决策

  • 通过消除异步 Auto Scaling 启动的等待时间来加快扩展速度

使用异步 Auto Scaling 时,当您更改所需容量或触发扩展策略时,Amazon A EC2 uto Scaling 会处理扩展请求并在后台启动实例。您必须监控扩展活动或描述您的 Auto Scaling 组,以确定何时成功启动实例。

注意
  • 该 LaunchInstances API 仅适用于使用启动模板的 Auto Scaling 群组。不支持使用启动配置的 Auto Scaling 群组。如果您的 Auto Scaling 组使用启动配置,则必须先迁移到启动模板,然后才能使用同步配置。

  • LaunchInstances API 仅支持完全按需购买或完全竞价购买选项的混合实例策略。不支持将按需实例和竞价型实例结合在一起的混合策略。

  • 对于覆盖多个可用区的 Auto Scaling 组,您必须指定目标可用区或子网。对于单可用区组,此参数是可选的。

同步配置和异步扩展

同步配置

当你使用 LaunchInstances API 时,Amazon A EC2 uto Scaling:

  • 立即尝试使用启动请求的实例 CreateFleet

  • 等待 CreateFleet 返回实例后 IDs 再响应

  • 成功后返回实例 IDs、实例类型和可用区信息

  • 返回特定的错误代码和失败详情

  • 提供即时反馈,实现实时扩展决策

异步扩展

当您使用异步 Auto Scaling 方法(例如更改所需容量或使用扩展策略)时,Amazon A EC2 uto Scaling:

  • 更新 API 中的所需容量,但不会立即返回实例

  • Plans 实例自动跨可用区启动

  • 通过后台工作流程启动实例

  • 自动在多个可用区之间分配容量以实现平衡

  • 使用内置的重试逻辑处理启动失败

您必须对扩展活动进行轮询或描述您的 Auto Scaling 群组,才能检查启动操作的状态。

限制和注意事项

使用同步配置时,请记住以下注意事项和限制:

  • 启动后的实例状态-API 返回的实例处于待处理状态。在后续的工作流程或生命周期挂钩中,它们可能仍会失败。成功的 API 响应意味着 EC2 已接受启动请求并返回了实例 IDs。实例不会自动被视为已为工作负载做好充分准备,必须完成标准 EC2 和 Auto Scaling 生命周期流程。

  • 温池限制-目前不支持带有温池的 Auto Scaling 组。如果您尝试在配置了温池 LaunchInstances 的 Auto Scaling 组上调用 API,API 会执行冷启动而不是使用温池实例,并返回 UnsupportedOperation 错误。有关冷启动的更多信息,请参阅温池的限制

  • API 超时和重试 — 如果底层 CreateFleet 操作花费的时间超过预期,API 可能会超时并返回一个等性令牌。您可以使用相同的方法重试 ClientToken 以跟踪原始启动操作,也可以使用带有客户端令牌的 describe-instances 来检查已启动的实例。

  • 可用区限制 — 如果您的 Auto Scaling 组跨越多个可用区并启用了可用区重新平衡,则同步启动实例可能会导致操作冲突:

    • 每次调用仅限一个可用区 — 即使您的 Auto Scaling 组跨越多个区域,每个 LaunchInstances API 调用也只能针对一个可用区。

    • 可用区重新平衡冲突-如果您的 Auto Scaling 组启用了可用区再平衡,则跨不同组的连续调用 AZs 可能会触发额外的异步启动,从而导致实例数超出预期的范围。考虑暂停 AZ 再平衡以实现精确的容量控制。有关更多信息,请参阅 暂停和恢复 Amazon A EC2 uto Scaling 流程

  • 部分成功场景 — 如果只有部分请求的容量可用,LaunchInstancesAPI 可能会返回部分成功,这是正常 EC2 行为。API 会返回成功启动的实例以及启动失败的错误详情。对于要求所有实例一起启动的用例(例如应用程序需要在同一可用区内的所有实例以实现低延迟),您需要终止部分启动的实例,然后在不同的可用区重试。在为容量敏感型工作负载设计重试逻辑时,请考虑这种行为。

  • 实例权重-如果您的 Auto Scaling 组使用实例权重,则该 RequestedCapacity 参数表示加权容量单位,而不是实例数。实际启动的实例数量取决于所选的实例类型及其配置的权重。 EC2 无论请求的加权容量如何,Auto Scaling 都限制每次 API 调用最多启动 100 个实例。

  • 混合实例类型 — LaunchInstances API 使用您的 Auto Scaling 组的现有混合实例策略来确定要启动的实例类型。API 会根据您所在群组的分配策略和实例类型优先级启动实例。