如何在升级驱动程序后对不可访问或无法到达 DNS 的 EC2 Windows 实例进行故障排除?

上次更新日期:2021 年 7 月 23 日

我更新了 Amazon Elastic Compute Cloud (Amazon EC2) Windows 实例上的 PV、NVMe 或 ENA 驱动程序。现在该实例无法访问。或者,我升级了驱动程序并将我的实例类型更改为基于 Nitrot 的实例,现在该实例无法到达 DNS。如何排查此问题?

简短描述

EC2 Windows 实例上使用了三种类型的 AWS 驱动程序:

实例使用的 AWS 驱动程序的类型取决于实例类型。基于 Nitron 的实例系列中的大多数实例都使用 ENA 驱动程序进行联网,而使用 AWS NVMe 驱动程序进行存储。基于 Xen 的实例系列 (非 Nitro) 中的大多数实例都使用 AWS PV 驱动程序进行联网和存储。有些实例结合使用多个驱动程序进行存储和联网。有关实例使用哪些驱动程序进行联网和存储的信息,请参阅联网和储存功能摘要。在联网和存储功能摘要表中,仅限 EBS表示该卷使用 AWS PV 驱动程序。NVME EBS 表示实例使用 NVMe 驱动程序。

注意:Windows Server 2008 R2 及更高版本支持 AWS PV 驱动程序。Windows Server 2008 和 Windows Server 2003 使用 Citrix PV 驱动程序。注意,Windows Server 2008 R2 支持 AWS PV 版本 8.3.4 及更早版本。有关更多信息,请参阅适用于 Windows 实例的半虚拟化驱动程序

在 Windows 实例上升级驱动程序或更改实例类型时,请确保根据实例类型 (Nitro/Xen) 安装最新版本的驱动程序

注意:您可以运行以下 PowerShell 命令来列出在 Windows 实例上运行的 AWS 驱动程序和驱动程序版本:

Get-WmiObject Win32_PnpSignedDriver | Select-Object DeviceName, DriverVersion, InfName | Where-Object {$_.DeviceName -like "*AWS*" -OR $_.DeviceName -like "*Amazon*"}

解决方法

在升级 Windows 驱动程序后对无法访问的实例进行故障排除

查看实例屏幕截图或使用 EC2 Rescue for Windows 来查看系统日志

检查实例屏幕截图以确定实例的状态。然后,在对无法访问的实例进行故障排除中的故障排除步骤。

如果屏幕截图显示登录屏幕,但实例状态检查失败,则问题可能是网络驱动程序损坏或无法检测到驱动程序。

使用 EC2Rescue 工具检索无法访问的实例的操作系统日志。查看日志以获取更多信息,从而进一步排查问题。这些日志可以是事件查看器日志、EC2Config 日志、启动日志等。

  • 查看位于 %SystemRoot%\infsetupapi.dev 日志,了解有关纯文本设备安装的信息。您可以使用此信息验证具有时间戳的设备的安装情况,并对设备安装问题进行故障排除。
  • 检查位于 C:\Program Files\Amazon\XenToolsAWSPVDriverMSI 日志文件。此日志特定于 AWS PV 驱动程序安装并会报告任何错误。

如果日志显示驱动程序已损坏或安装不正确,请将驱动程序离线注入实例。您可以使用 AWSSupport-UpgradeWindowsAWSDrivers 自动化文档升级或修复实例上的存储和网络 AWS 驱动程序。有关更多信息,请参阅使用 AWS Systems Manager 升级 AWS PV、ENA 和 NVMe 驱动程序

注意:最佳实践是在升级驱动程序或更改实例类型之前备份实例

使用 EC2Rescue 还原实例

使用 EC2Rescue 工具将实例还原到上次已知的正确配置状态。有关更多信息,请遵循视频逐步解说

使用最新的可用快照替换实例的根卷

有关详细信息,请参阅替换根卷

使用适用于 Windows 的 EC2 串行控制台

如果您已启用适用于 Windows 的 EC2 串行控制台,则可以使用它来排查受支持的基于 Nitro 的实例类型问题。串行控制台可帮助您排查启动问题、网络配置和 SSH 配置问题。串行控制台无需网络连接即可连接到您的实例。您可以使用 Amazon EC2 控制台或 AWS 命令行界面 (AWS CLI) 访问串行控制台。

在使用串行控制台之前,在账户层面授予对该控制台的访问权限。然后,创建 AWS Identity and Access Management (IAM) 策略,授予对 IAM 用户的访问权限。此外,每个使用串行控制台的实例都必须至少包含一个基于密码的用户。如果您的实例无法访问,并且您尚未配置对串行控制台的访问权限,请使用上述方法之一对实例进行故障排除。有关配置适用于 Windows 的 EC2 串行控制台的信息,请参阅配置对 EC2 串行控制台的访问权限

注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

升级驱动程序并将实例更改为基于 Nitrot 的实例类型后,该实例可以访问但无法到达 DNS

将实例迁移到最新一代实例类型时,现有弹性网络接口上的静态 IP 或自定义 DNS 网络设置可能会丢失。这是因为实例默认为新的 ENA 设备。要解决此问题,请重新配置弹性网络接口设置。有关更多信息,请参阅是否需要为 Amazon EC2 Windows 实例设置静态私有 IP 地址?