Amazon EC2 Auto Scaling 问题排查:EC2 实例启动失败 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EC2 Auto Scaling 问题排查:EC2 实例启动失败

此页提供有关未能启动的 EC2 实例的信息、可能的原因,以及可用来解决问题的步骤。

要检索错误消息,请参阅检索来自扩缩活动的错误消息

EC2 实例启动失败时,您可能会收到一条或多条以下错误消息:

当前不支持请求的配置。

  • 原因:启动模板或启动配置中的某些选项可能与实例类型不兼容,或者实例配置可能在您请求的 Amazon 区域或可用区中不受支持。

  • 解决方案:

    尝试其他实例配置。要搜索符合您要求的实例类型,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的查找 Amazon EC2 实例类型

    有关解决该问题的更多指导,请检查以下内容:

    • 确保您选择了实例类型支持的 AMI。例如,如果实例类型使用基于 ARM 的 Amazon 引力处理器而不是 Intel Xeon 处理器,您需要一个 ARM 兼容的 AMI。

    • 测试实例类型在所请求的区域和可用区中可用。最新一代实例类型可能尚未在给定区域或可用区域中可用。旧一代实例类型可能在给定区域或可用区中不可用。要搜索按位置(区域或可用区)提供的实例类型,可使用 describe-instance-type-offerings 命令。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的查找 Amazon EC2 实例类型

    • 如果您使用专用实例或专用主机,请确保选择了作为专用实例或专用主机受支持的实例类型。

安全组 <该安全组的名称> 不存在。启动 EC2 实例失败。

  • 原因:可能已删除启动模板或启动配置中指定的安全组。

  • 解决方案:

    1. 使用 describe-security-groups 命令获取与您的账户相关联的安全组列表。

    2. 从该列表中选择要使用的安全组。要改为创建安全组,请使用 create-security-group 命令。

    3. 创建新的启动模板或启动配置。

    4. 使用 update-auto-scaling-group 命令通过新的启动模板或启动配置更新您的 Auto Scaling 组。

密钥对 <与您的 EC2 实例相关联的密钥对> 不存在。启动 EC2 实例失败。

  • 原因:可能已删除启动实例时使用的密钥对。

  • 解决方案:

    1. 使用 describe-key-pairs 命令获取可用密钥对的列表。

    2. 从该列表中选择要使用的密钥对。要改为创建密钥对,请使用 create-key-pair 命令。

    3. 创建新的启动模板或启动配置。

    4. 使用 update-auto-scaling-group 命令通过新的启动模板或启动配置更新您的 Auto Scaling 组。

不再支持请求的可用区。请重新尝试请求...

  • 错误消息:不再支持请求的可用区。请通过不指定可用区或选择 <提供的可用区的列表> 来重新尝试请求。启动 EC2 实例失败。

  • 原因:当前可能无法使用与 Auto Scaling 组相关联的可用区。

  • 解决方案:采用错误消息中的建议更新 Auto Scaling 组。

请求的实例类型(<实例类型>)在请求的可用区(<实例可用区>)中不受支持...

  • 错误消息:您请求的实例类型(<实例类型>)在请求的可用区(<实例可用区>)中不受支持。请通过不指定可用区或选择 <支持该实例类型的可用区列表> 来重新尝试请求。启动 EC2 实例失败。

  • 原因:当前可能无法在 Auto Scaling 组中指定的可用区内使用您选择的实例类型。

  • 解决方案:采用错误消息中的建议更新 Auto Scaling 组。

您的竞价请求价格 0.015 低于要求的最低竞价请求履行价格 0.0735...

  • 原因:请求中的 Spot 最高价低于选定的实例类型的 Spot 价格。

  • 解决方案:提交具有较高 Spot 最高价(可能是按需价格)的新请求。之前,您支付的 Spot 价格是基于出价的。今天,您支付当前 Spot 价格。通过设置更高的最高价,Amazon EC2 Spot 服务可以更好地启动和保持您所需的容量。

设备名称 <device name> 无效/设备名称上传无效。启动 EC2 实例失败。

  • 原因 1:启动模板或启动配置中的块储存设备映射所包含的块储存设备名称可能无法使用或目前不受支持。

  • 解决方案:

    1. 验证哪些设备名称可用于您的特定实例配置。有关设备命名的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Linux 实例上的设备命名

    2. 手动创建不是 Auto Scaling 组一部分的 Amazon EC2 实例并调查问题。如果块储存设备命名配置与 Amazon Machine Image (AMI) 中的名称冲突,则实例将在启动期间失败。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的块储存设备映射

    3. 确认您的实例已成功启动后,使用 describe-volumes 命令查看如何向实例公开卷。

    4. 使用卷描述中列出的设备名称创建新的启动模板或启动配置。

    5. 使用 update-auto-scaling-group 命令通过新的启动模板或启动配置更新您的 Auto Scaling 组。

用于参数 virtualName 的值(<与实例存储设备相关联的名称>)无效...

  • 错误消息:virtualName 参数的值(<与实例存储设备相关联的名称>)无效。预期格式:“ephemeralNUMBER”。启动 EC2 实例失败。

  • 原因:与块储存设备相关联的虚拟名称的指定格式不正确。

  • 解决方案:

    1. 通过在 virtualName 参数中指定设备名称创建新的启动模板或启动配置。有关设备名称格式的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Linux 实例上的设备命名

    2. 使用 update-auto-scaling-group 命令通过新的启动模板或启动配置更新您的 Auto Scaling 组。

实例存储 AMI 不支持 EBS 块储存设备映射。

  • 原因:启动模板或启动配置中指定的块储存设备映射在您的实例上不受支持。

  • 解决方案:

    1. 使用实例类型支持的块储存设备映射来创建新的启动模板或启动配置。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的块储存设备映射

    2. 使用 update-auto-scaling-group 命令通过新的启动模板或启动配置更新您的 Auto Scaling 组。

置放群组可能无法与类型为“m1.large”的实例一起使用。启动 EC2 实例失败。

  • 原因:您的集群置放群组包含无效实例类型。

  • 解决方案:

    1. 有关置放群组支持的有效实例类型的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的置放群组

    2. 按照置放群组中的详细说明创建新的置放群组。

    3. 或者,也可以使用受支持的实例类型创建新的启动模板或启动配置。

    4. 使用 update-auto-scaling-group 命令通过新的置放群组、启动模板或启动配置更新您的 Auto Scaling 组。

Client.InternalError:客户端在启动时出错。

  • 问题:Amazon EC2 Auto Scaling 尝试启动具有加密 EBS 卷的实例,但服务相关角色没有权限访问用于对其进行加密的 Amazon KMS 客户托管密钥。有关更多信息,请参阅与加密卷结合使用时必需的 Amazon KMS 密钥策略

  • 原因 1:您需要密钥策略,该策略向适当的服务相关角色授予使用客户托管密钥的权限。

  • 解决方案 1:允许服务相关角色使用客户管理密钥,如下所示:

    1. 确定将哪个服务相关角色用于此 Auto Scaling 组。

    2. 更新客户托管密钥上的密钥策略并允许服务相关角色使用客户托管密钥。

    3. 更新 Auto Scaling 组来使用服务相关角色。

    有关允许服务相关角色使用客户托管密钥的密钥策略示例,请参阅 示例 1:允许访问客户托管密钥的关键策略部分

  • 原因 2:如果客户托管密钥和 Auto Scaling 组在不同的 Amazon 账户中,您需要配置对客户托管密钥的跨账户访问权限,以便向适当的服务相关角色授予使用客户托管密钥的权限。

  • 解决方案 2:允许外部账户中的服务相关角色使用本地账户中的客户托管密钥,如下所示:

    1. 更新客户托管密钥上的密钥策略,以允许 Auto Scaling 组账户访问客户托管密钥。

    2. 在 Auto Scaling 组账户中定义可以创建授权的 IAM 用户或角色。

    3. 确定将哪个服务相关角色用于此 Auto Scaling 组。

    4. 使用适当的服务相关角色作为被授权者委托人,创建对客户托管密钥的授权。

    5. 更新 Auto Scaling 组来使用服务相关角色。

    有关更多信息,请参阅示例 2:允许跨账户访问客户托管密钥的关键策略部分

  • 解决方案 3:将同一 Amazon 账户中的客户托管密钥作为 Auto Scaling 组。

    1. 使用属于与 Auto Scaling 组相同的账户中的另一个客户托管密钥,复制并重新加密快照。

    2. 允许服务相关角色使用新的客户托管密钥。请参阅解决方案 1 的步骤。

我们目前在您请求的可用区中没有足够的 <实例类型> 容量。启动 EC2 实例失败。

  • 错误消息:您请求的可用区(<请求的可用区>)中当前没有足够的 <实例类型> 容量。我们的系统将调配额外的容量。您当前可以通过不在请求中指定可用区,或者选择 <当前支持该实例类型的可用区列表> 来获取 <实例类型> 容量。启动 EC2 实例失败。

  • 原因:现在,Amazon EC2 不能在请求的可用区中支持您的实例类型。

  • 解决方案:

    要解决该问题,请尝试以下操作:

    • 等待几分钟,然后再次提交您的请求;容量可能经常转移。

    • 按照错误消息中的建议提交新请求。

    • 提交减少了实例数(可在后期阶段增加)的新请求。

没有与您的请求匹配的竞价容量。启动 EC2 实例失败。

  • 原因:目前没有足够的备用容量来满足您的竞价型实例请求。

  • 解决方案:

    要解决该问题,请尝试以下操作:

    • 等待几分钟;容量可能经常转移。竞价请求会继续自动发起启动请求,直到有可用容量为止。当容量变为可用时,Amazon EC2 竞价服务将满足竞价请求。

    • 请遵循使用不同实例类型集的最佳实践,以便您不依赖于某一特定实例类型。有关更多信息,包括成功使用竞价型实例的最佳实践列表,请参阅 Auto Scaling 组具有多个实例类型和购买选项

    • 提交减少了实例数(可在后期阶段增加)的新请求。

已运行 <实例数量> 个实例。启动 EC2 实例失败。

  • 原因:您已达到可在某一区域中启动的实例数限制。在创建 Amazon 账户时,我们根据区域设置可运行的实例数的默认限制。

  • 解决方案:

    要解决该问题,请尝试以下操作:

    • 如果您当前的限制不足以满足需求,您可以根据区域请求提高配额。有关更多信息,请参见适用于 Linux 实例的 Amazon EC2 用户指南中的 Amazon EC2 服务配额

    • 提交减少了实例数(可在后期阶段增加)的新请求。