排查无法访问的实例的问题 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

排查无法访问的实例的问题

如果无法通过 SSH 或 RDP 访问 Windows 实例,您可以捕获实例的屏幕截图并将其作为图像进行查看。这可以让您了解实例的状态,更快地处理问题。您还可以在运行 Windows Server 2008 或更高版本的实例上使用 EC2 Rescue,从脱机实例收集和分析数据。

有关对无法访问的 Linux 实例进行问题排查的信息,请参阅排查无法访问的实例的问题

如何获取无法访问的实例的屏幕截图

您可以在实例运行时或崩溃后获取其屏幕截图。屏幕截图不会产生数据传输费用。生成的图像为 JPG 格式,大小不超过 100 kb。

所有实例都支持此功能,但以下除外:

  • 裸机实例(以 .metal 结尾的实例类型)

  • 实例正在使用 NVIDIA GRID 驱动程序

  • 由基于 Arm 的 Graviton 处理器支持的实例

以下区域提供此功能:

  • 亚太地区(香港)区域

  • Asia Pacific (Tokyo) Region

  • 亚太区域(首尔)

  • Asia Pacific (Singapore) Region

  • Asia Pacific (Sydney) Region

  • 亚太地区 (孟买) 区域

  • US East (N. Virginia) Region

  • 美国东部(俄亥俄)区域

  • US West (Oregon) Region

  • US West (N. California) Region

  • Europe (Ireland) Region

  • 欧洲(法兰克福)区域

  • Europe (Milan) Region

  • 欧洲(伦敦)区域

  • 欧洲(巴黎)区域

  • 欧洲(斯德哥尔摩)区域

  • 欧洲(巴黎)区域

  • South America (São Paulo) Region

  • 加拿大 (中部) 区域

  • 中东(巴林)区域

  • 非洲(开普敦)区域

  • 中国(北京)区域

  • 中国 (宁夏) 区域

使用控制台获取运行的实例的屏幕截图
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择 Instances (实例)

  3. 选择要捕获的实例。

  4. 依次选择 Actions (操作)Monitor and troubleshoot (监控和问题排查)Get instance log (获取实例屏幕截图)

  5. 选择 Download (下载),或右键单击图像,以下载并保存该图像。

使用命令行获取运行的实例的屏幕截图

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

对于 API 调用,返回的输出采用 base64 编码。对于命令行工具,系统会为您进行解码。

常见的屏幕截图

您可以根据服务返回的屏幕截图,利用以下信息帮助您对无法访问的实例进行故障排除。

登录屏幕 (Ctrl+Alt+Delete)

控制台屏幕截图服务返回以下截图。


                        登录屏幕。

如果实例在登录时无法访问,可能是因为网络配置或 Windows 远程桌面服务存在问题。如果某个进程占用了大量 CPU,实例也可能没有响应。

网络配置

使用以下信息验证您的 Amazon、Microsoft Windows 和本地(或内部部署)网络配置是否阻止了对实例的访问。

Amazon 网络配置
配置 验证
安全组配置 验证端口 3389 是否向您的安全组开放。验证您是否连接到正确的公有 IP 地址。如果实例未与弹性 IP 关联,公有 IP 就会在实例停止或启动后发生更改。有关更多信息,请参阅远程桌面无法连接到远程计算机
VPC 配置 (网络 ACL) 验证您的 Amazon VPC 的访问控制列表 (ACL) 是否阻止访问。有关信息,请参阅 Amazon VPC 用户指南 中的网络 ACL
VPN 配置 如果您使用虚拟专用网络(VPN)连接您的 VPC,请验证 VPN 隧道的连通性。有关更多信息,请参阅如何对 Amazon VPC 的 VPN 隧道连通性问题进行故障排除?
Windows 网络配置
配置 验证
Windows 防火墙 验证 Windows 防火墙是否阻止与您的实例建立连接。按照远程桌面故障排除部分第 7 项的说明禁用 Windows 防火墙:远程桌面无法连接到远程计算机
高级 TCP/IP 配置 (使用静态 IP) 实例可能因您配置了静态 IP 地址而没有响应。对于 VPC,请创建网络接口将其连接到实例。对于 EC2 Classic,请启用 DHCP。

本地或内部部署网络配置

验证本地网络配置是否阻止访问。尝试连接无法访问的实例所在 VPC 中的其他实例。如果您无法访问其他实例,请联系本地网络管理员确定是否有本地策略限制了访问。

远程桌面服务问题

如果实例在登录时无法访问,可能是因为实例存在远程桌面服务 (RDS) 问题。

远程桌面服务配置
配置 验证
RDS 正在运行 验证实例上的 RDS 是否在运行。使用 Microsoft 管理控制台 (MMC) 的服务管理单元 (services.msc) 连接实例。在服务列表中,验证Remote Desktop Services (远程桌面服务) 是否处于正在运行状态。如果不是,请将其开启,然后将启动类型设置为 Automatic。如果使用服务管理单元无法连接到实例,请将根卷从该实例分离并为其创建快照或 AMI,将原始卷作为辅助卷附加到同一个可用区中的其他实例,并修改 Start 注册表项。完成后,请重新将根卷附加到原始实例。有关分离卷的更多信息,请参阅 从 Windows 实例分离 Amazon EBS 卷
RDS 已启用

即使该服务已启动,它也有可能被禁用。将根卷从实例分离并为其创建快照或 AMI,将原始卷作为辅助卷挂载到同一个可用区中的其他实例,然后按照 在具有远程注册表的 EC2 实例上启用远程桌面中的说明,通过修改 Terminal Server (终端服务器) 注册表项来启用该服务。

完成后,请重新将根卷附加到原始实例。有关更多信息,请参阅从 Windows 实例分离 Amazon EBS 卷

较高的 CPU 使用率

使用 Amazon CloudWatch 检查您实例上的 CPUUtilization (Maximum) 指标。如果 CPUUtilization (Maximum) 的值比较大,请等待 CPU 使用率下降后尝试重新连接。CPU 使用率高可能由以下原因导致:

  • Windows 更新

  • 安全软件扫描

  • 自定义启动脚本

  • 任务计划程序

有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的获取特定资源的统计信息。有关其他故障排除提示,请参阅 Windows 启动后,CPU 使用率短时增高

恢复控制台屏幕

控制台屏幕截图服务返回以下截图。


                        恢复控制台屏幕截图。

如果 bootstatuspolicy 未设置为 ignoreallfailures,操作系统可能启动至“Recovery”(恢复)控制台,并停滞在这一状态。请按照以下步骤将 bootstatuspolicy 配置更改为 ignoreallfailures

默认情况下,Amazon 提供的公有 Windows AMI 的策略配置设置为 ignoreallfailures

  1. 停止无法访问的实例。

  2. 创建根卷的快照。根卷是作为 /dev/sda1 附加到实例的。

    将根卷从无法访问的实例分离并为其创建快照或 AMI,然后将根卷作为辅助卷附加到同一个可用区中的其他实例。有关更多信息,请参阅从 Windows 实例分离 Amazon EBS 卷

    警告

    如果您的临时实例和原始实例是使用相同的 AMI 启动的,则您必须完成额外步骤,否则在您恢复原始实例的根卷之后,由于磁盘签名冲突,您将无法启动该原始实例。如果您必须使用相同的 AMI 创建临时实例,为了避免磁盘签名冲突,请完成 磁盘签名冲突 中的步骤。

    或者,可以为临时实例选择不同的 AMI。例如,如果原始实例使用包含 Windows Server 2008 R2 的 AMI,则使用包含 Windows Server 2012 的 AMI 来启动临时实例。

  3. 登录实例并从命令提示符运行以下命令,以将 bootstatuspolicy 配置更改为 ignoreallfailures

    bcdedit /store Drive Letter:\boot\bcd /set {default} bootstatuspolicy ignoreallfailures
  4. 重新将卷附加到无法访问的实例并重新启动实例。

Windows 引导管理器屏幕

控制台屏幕截图服务返回以下截图。


                        Windows 引导管理器屏幕。

操作系统的系统文件和/或注册表遭到严重损坏。当实例停滞在这一状态时,您应该从最近备份的 AMI 恢复实例或启动一个替代实例。如果您需要访问实例上的数据,请将所有根卷从无法访问的实例上分离并为这些卷创建快照或 AMI,然后将其作为辅助卷附加到同一个可用区中的其他实例。有关更多信息,请参阅从 Windows 实例分离 Amazon EBS 卷

Sysprep 屏幕

控制台屏幕截图服务返回以下截图。


                        Sysprep 屏幕。

如果您没有使用 EC2Config 服务调用 Sysprep,或者操作系统在运行 Sysprep 时出现故障,您可能会看到此屏幕。您可以使用 EC2Rescue 重置密码。否则为 使用 Sysprep 创建标准化的 Amazon Machine Image (AMI)

Getting Ready 屏幕

控制台屏幕截图服务返回以下截图。


                        Getting Ready 屏幕。

反复刷新实例控制台屏幕截图服务,验证环形进度条是否转动。如果环形进度条转动,请等待操作系统启动。您也可以使用 Amazon CloudWatch 查看您实例上的 CPUUtilization (Maximum) 指标,以确认操作系统是否处于活动状态。如果环形进度条不转,则实例可能停滞在启动过程。重启实例。如果重新启动无法解决问题,请从最近备份的 AMI 中恢复实例或启动一个替代实例。如果需要访问实例上的数据,请将根卷从无法访问的实例中分离,并为其创建快照或 AMI。然后,将根卷作为辅助卷附加到同一个可用区中的其他实例。

Windows Update 屏幕

控制台屏幕截图服务返回以下截图。


                        Windows Update 屏幕。

Windows 更新进程正在更新注册表。请等待更新完成。请勿在更新期间重新启动或停止实例,因为这可能会导致数据损坏。

注意

在更新时,Windows 更新进程会占用服务器上的资源。若您频繁遇到这一问题,可以考虑使用速度更快的实例类型和 EBS 卷。

Chkdsk

控制台屏幕截图服务返回以下截图。


                        Chkdsk 屏幕。

Windows 正在驱动器上运行 chkdsk 系统工具,以验证文件系统的完整性并修复逻辑文件系统错误。请等待该进程完成。