为什么我的 AWS OpsWorks Stacks 实例没有启动并卡在“start_failed”状态?

3 分钟阅读
0

我的一个由 AWS OpsWorks Stacks 托管的 Amazon Elastic Compute Cloud (Amazon EC2) 实例卡在“start_failed”状态。为什么我的 OpsWorks Stacks 实例无法进入“在线”状态,我该如何对此问题进行故障排除?

简短描述

多种原因可以导致 OpsWorks Stacks 实例进入 start_failed 状态并且在设置生命周期事件期间无法启动。但是,此问题通常由联网故障导致。

要对此问题进行故障排除,请首先验证您的 EC2 实例是否可以连接到 OpsWorks Stacks 服务。如果未连接到服务,请参阅本文的如果您的 EC2 实例无法连接到 OpsWorks Stacks 服务部分。如果已连接到服务,请参阅本文的如果您的 EC2 实例可以连接到 OpsWorks Stacks 服务部分。

注意: 对于状态卡在 setup_failed 的实例,请参阅为什么我的 AWS OpsWorks Stacks 实例没有启动并卡在“setup_failed”状态?

解决方案

验证您的 EC2 实例是否可以连接到 OpsWorks Stacks 服务

1.    登录到您的 Amazon EC2 实例

2.    通过使用 Linux 命令行界面 (CLI) 运行以下 netcat (nc) 命令,向与实例关联的 OpsWorks 终端节点发送测试请求:

重要提示:opsworks.us-east-1.amazonaws.com 替换为您正在使用的 OpsWorks Stacks 终端节点。

nc -vz opsworks.us-east-1.amazonaws.com 443

如果您的 EC2 实例可以连接到 OpsWorks Stacks 服务,则命令输出类似于以下内容:

Ncat: Connected to <ipaddress>

注意: 如果您的 EC2 实例上未安装 netcat,请通过运行以下命令手动将 netcat 软件包安装在实例上:

sudo yum install -y nc

如果您的 EC2 实例无法连接到 OpsWorks Stacks 服务

如果 NAT 网关提供对您的 EC2 实例的互联网访问

遵循为什么我的 EC2 实例无法使用 NAT 网关访问互联网?中的说明

如果互联网网关提供对您的 EC2 实例的互联网访问

遵循为什么我的 EC2 实例无法使用互联网网关连接到互联网?中的说明

如果 NAT 实例提供对您的 EC2 实例的互联网访问

打开 EC2 控制台并验证以下内容:

  • NAT 实例的状态为运行
    注意: 如果 NAT 实例的状态不是运行,请将状态更改为运行
  • NAT 实例正在通过运行状况检查。
    注意: 如果 NAT 实例未通过运行状况检查,请执行以下操作: 创建新的 NAT 实例。然后,在 NAT 实例路由表中将新的 NAT 实例与您的 EC2 实例进行关联。
  • EC2 实例位于原定设置 Amazon Virtual Private Cloud (Amazon VPC) 中。
    注意: 如果 OpsWorks Stacks 托管的 EC2 实例在原定设置 Amazon VPC 之外启动,则该实例始终会进入 start_failed 状态。

有关更多信息,请参阅查看状态检查

如果 VPC 终端节点提供对您的 EC2 实例的互联网访问

  • 通过执行以下操作,验证您的 VPC 终端节点在您正在使用的 Amazon VPC 中是否正确且可供访问:
    打开 Amazon VPC 控制台
    在导航窗格中的 Virtual Private Cloud 下,选择终端节点
    然后,查看与您的 EC2 实例关联的 VPC 终端节点,以确保它们正确且可供访问。
  • 验证您的 VPC 终端节点是否可以完成 Amazon Simple Storage Service (Amazon S3) 要求的操作

如果您的 EC2 实例可以连接到 OpsWorks Stacks 服务

检查 EC2 实例的 IAM 权限

验证实例配置文件的 AWS Identity and Access Management (IAM) 角色是否存在并且包含所有必需的权限

如果实例配置文件没有 IAM 角色,请执行以下操作:

1.    停止该实例

2.    通过执行以下操作将实例配置文件角色与 EC2 实例分离:
EC2 控制台中,选择实例。然后,选择您的 EC2 实例。
依次选择操作选项卡、安全修改 IAM 角色
选择无 IAM 角色。然后选择保存

3.    使用现有 EC2 实例替换实例配置文件
– 或者 –
替换 OpsWorks Stacks 中的 EC2 实例。

注意: 有关如何替换 OpsWorks Stacks 中 EC2 实例的更多信息,请参阅将实例添加到层

对于由 Amazon Elastic Block Store (Amazon EBS) 支持的 EC2 实例,请验证实例的根设备卷是否已满

有关说明,请参阅查看 Linux 的可用磁盘空间查看 Windows 的可用磁盘空间

验证 EC2 实例是否使用 IMDSv1

要检查您的实例使用的元数据服务并在需要时重新配置实例,请参阅配置实例元数据选项

注意: OpsWorks Stacks 仅支持实例元数据服务版本 1 (IMDSv1),不支持 IMDSv2。

对于由自定义 AMI 支持的 EC2 实例,验证 AMI 的配置是否正确

有关更多信息,请参阅从 AWS OpsWorks Stacks 实例创建自定义 Linux Amazon Machine Image (AMI)

验证 EC2 实例上安装的 OpsWorks Stacks 代理是否正在运行

1.    登录到您的 Amazon EC2 实例

2.    通过在 Linux CLI 上运行以下命令,验证 EC2 实例上安装的 OpsWorks Stacks 代理是否正在运行:

sudo service opsworks-agent status

如果 OpsWorks Stacks 代理正在运行,则命令输出类似于以下内容:

Active: active (running)

如果 OpsWorks Stacks 代理未运行,则命令输出将类似于以下内容:

Active: inactive (dead)

如果 OpsWorks Stacks 代理未运行,请运行以下命令启动代理:

sudo service opsworks-agent start

检查 EC2 实例的 CloudTrail 日志中是否存在“Client.UnauthorizedOperation”错误

查看 AWS CloudTrail 中记录的 OpsWorks Stacks 实例的 API 调用。查找返回以下错误消息的 EC2 **运行实例**事件: Client.UnauthorizedOperation

如果实例的 CloudTrail 中显示错误消息,请参阅以下文章: 当我尝试使用 AWS Backup 还原 Amazon EC2 实例时,如何对编码的授权失败消息进行故障排除?

如果您的 EC2 实例被分配到多个层,请确保每个层的网络设置相同

有关更多信息,请参阅将实例添加到层


AWS 官方
AWS 官方已更新 3 年前