

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

# 同步启动实例
<a name="launch-instances-synchronously"></a>

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

通过同步配置，您可以使用 LaunchInstances API 请求特定可用区中特定数量的实例。同步配置具有以下好处：
+ 即时反馈特定可用区域的容量可用性
+ 精确控制哪些可用区实例在哪个可用区启动
+  IDs 可立即在编排系统中使用的确定性实例
+ 基于实际容量限制的实时扩展决策
+ 通过消除异步 Auto Scaling 启动的等待时间来加快扩展速度

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

**注意**  
该 LaunchInstances API 仅适用于使用启动模板的 Auto Scaling 群组。不支持使用启动配置的 Auto Scaling 组。如果您的 Auto Scaling 组使用启动配置，则必须先迁移到启动模板，然后才能使用同步配置。
 LaunchInstances API 仅支持完全按需购买或完全竞价购买选项的混合实例策略。不支持组合按需实例和竞价型实例的混合策略。
对于覆盖多个可用区的 Auto Scaling 组，您必须指定目标可用区或子网。对于单可用区组，此参数是可选的。

## 同步配置和异步扩展
<a name="synchronous-vs-asynchronous-scaling"></a>

### 同步配置
<a name="synchronous-provisioning-behavior"></a>

当你使用 LaunchInstances API 时，亚马逊 EC2 Auto Scaling：
+ 立即尝试使用启动请求的实例 CreateFleet
+ 等待 CreateFleet 返回实例后 IDs 再响应
+ 成功后返回实例 IDs、实例类型和可用区信息
+ 返回特定的错误代码和失败详情
+ 提供即时反馈，实现实时扩展决策

### 异步扩展
<a name="asynchronous-scaling-behavior"></a>

当您使用异步 Auto Scaling 方法（例如更改所需容量或使用扩展策略）时，Amazon EC2 Auto Scaling：
+ 更新 API 中的所需容量，但不会立即返回实例
+ 计划实例自动跨可用区启动
+ 通过后台工作流程启动实例
+ 自动在多个可用区之间分配容量以实现平衡
+ 使用内置的重试逻辑处理启动失败

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

## 限制和注意事项
<a name="limitations-considerations-synchronous"></a>

使用同步配置时，请记住以下注意事项和限制：
+ **启动后的实例状态**-API 返回的实例处于待处理状态。在后续的工作流程或生命周期挂钩中，它们可能仍会失败。成功的 API 响应意味着 EC2 已接受启动请求并返回了实例 ID。实例不会自动被视为已完全为工作负载做好准备，必须完成标准的 EC2 和 Auto Scaling 生命周期流程。
+ **温池限制**-目前不支持带有温池的 Auto Scaling 组。如果您尝试在配置了温池 LaunchInstances 的 Auto Scaling 组上调用 API，API 会执行冷启动而不是使用温池实例，并返回 UnsupportedOperation 错误。有关冷启动的更多信息，请参阅[温池的限制](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html#warm-pools-limitations)。
+ **API 超时和重试** — 如果底层 CreateFleet 操作花费的时间超过预期，API 可能会超时并返回一个等性令牌。您可以使用相同的方法重试 ClientToken 以跟踪原始启动操作，也可以使用带有客户端令牌的 describe-instances 来检查已启动的实例。
+ **可用区限制** — 如果您的 Auto Scaling 组跨越多个可用区并启用了可用区重新平衡，则同步启动实例可能会导致操作冲突：
  + 每次调用仅限一个可用区 — 即使您的 Auto Scaling 组跨越多个区域，每个 LaunchInstances API 调用也只能针对一个可用区。
  + 可用区重新平衡冲突-如果您的 Auto Scaling 组启用了可用区再平衡，则跨不同组的连续调用 AZs 可能会触发额外的异步启动，从而导致实例数超出预期的范围。考虑暂停 AZ 再平衡以实现精确的容量控制。有关更多信息，请参阅 [暂停和恢复 Amazon EC2 Auto Scaling 进程](as-suspend-resume-processes.md)。
+ **部分成功场景** — 如果只有部分请求的容量可用，`LaunchInstances`API 可能会返回部分成功，这是 EC2 的正常行为。API 会返回成功启动的实例以及启动失败的错误详情。对于要求所有实例一起启动的用例（例如应用程序需要在同一可用区内的所有实例以实现低延迟），您需要终止部分启动的实例，然后在不同的可用区重试。在为容量敏感型工作负载设计重试逻辑时，请考虑这种行为。
+ **实例权重**-如果您的 Auto Scaling 组使用实例权重，则该 RequestedCapacity 参数表示加权容量单位，而不是实例数。实际启动的实例数量取决于所选的实例类型及其配置的权重。无论请求的加权容量如何，EC2 Auto Scaling 都限制每次 API 调用最多启动 100 个实例。
+ **混合实例类型** — LaunchInstances API 使用您的 Auto Scaling 组的现有混合实例策略来确定要启动的实例类型。API 会根据您所在群组的分配策略和实例类型优先级启动实例。