使用 Microsoft HPC Pack 排查 Azure 节点的部署问题

本主题包含可帮助或Microsoft 支持部门排查使用 HPC Pack 部署 Azure 节点的问题的信息。

有关使用 HPC Pack 部署 Azure 节点的一般要求和最佳做法,请参阅以下内容:

常规部署故障排除指南

  • 如果 Internet 连接或节点模板中提供的 Azure 订阅信息出现问题,Azure 节点部署可能会失败。 可以在节点模板中验证 Azure 的连接设置。 在 节点模板编辑器中打开模板。 然后,在“ 连接信息 ”选项卡上,单击“ 验证连接信息”。

  • 如果 Azure 管理证书的配置有问题,请参阅 排查证书问题

  • 如果至少运行 HPC Pack 2008 R2 和 SP2,则可以运行 Azure 防火墙 端口诊断测试和 Azure 服务连接诊断测试,以帮助验证是否已正确配置网络防火墙和其他设置,以便在 HPC Pack 和 Azure 之间进行通信或排查连接问题。

  • 如果未在头节点计算机 (或头节点计算机上准确设置系统时间) ,某些 Azure 操作(如节点模板创建或部署新节点)可能会失败,并显示类似于以下内容的错误:

    Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.  
    
  • 如果在部署中遇到部分故障(其中 Azure 节点未联机),可以尝试运行以下 telnet 命令,查看节点模板中指定的云服务是否可以在 Azure 终结点访问:

    telnet <ServiceName>.cloudapp.net 7999  
    

    注意

    若要运行此命令,必须在操作系统中安装 Telnet 客户端功能。 有关如何使用 服务器管理器 安装 Telnet 客户端的信息,请参阅 Telnet 操作指南

  • Azure 中的问题可能会影响一组 Azure 节点的子集。 例如,如果要启动大量节点,则部署在一个或多个节点上可能会失败。 在这种情况下,你将在某些 HPC Pack) 版本中在 资源管理 (“ 节点管理” 中看到故障节点的适当状态信息。

  • 部署状态信息显示在门户中的服务帐户信息中。 HPC 群集管理器会定期查询此门户以获取更新的状态信息。 但是,门户中的信息可能与预配日志或 HPC 群集管理器中的操作日志中的信息不同。

  • 如果 Azure 中发生部署错误,则门户中的云服务信息或 HPC 群集管理器的预配日志中可能会出现错误消息和故障排除信息。 如果无法解决问题,可以查看在部署中的角色实例上生成的跟踪日志。 有关详细信息,请参阅本主题中的 Azure 节点上的跟踪日志文件

    还可以访问 Azure 支持。 为了帮助解决问题,请准备好提供节点模板中配置的订阅 ID,以及 HPC 群集管理器和门户中的预配日志中显示的部署 ID。

  • 在 Azure 中预配一组节点后,可以使用同一节点模板启动其他一组节点。 但是,在某些情况下,其他节点无法在 HPC 群集管理器中联机,但它们似乎已成功部署在 Azure 中。 如果发生这种情况,可能无法使用 HPC 群集管理器来停止或删除失败的节点。 如有必要,请先停止并重启 HPC 管理服务。 然后,若要删除节点,请使用 Azure 管理门户。

  • 从 HPC Pack 2012 SP1 开始,为了帮助排查 Azure 节点部署问题,可以选择在头节点上收集有关 Azure 节点可用性、连接性和性能的数据发送给 Microsoft。 如果需要打开与 Azure 节点部署相关的支持事件,则可以选择执行此操作。 若要启用数据收集,请在 HPC 群集管理器的 “选项” 菜单上,单击“ Azure 支持数据收集”。 或者,使用 Set-HpcClusterProperty HPC PowerShell cmdlet 配置 AzureMetricsCollectionEnabled 群集属性。 有关数据收集的详细信息,请参阅 Microsoft HPC Pack 隐私声明

Azure 节点上的跟踪日志文件

从 HPC Pack 2008 R2 SP4 开始,跟踪日志文件在 Azure 工作器节点上自动生成,并在为每个部署自动预配的 Azure HPC 代理节点上生成。 日志文件可帮助你或Microsoft 支持部门排查节点预配期间或之后的问题- 例如,可能导致 Azure 节点显示运行状况状态为“无法访问”或“错误”的条件,即使门户可能指示状态为“就绪”。

跟踪日志文件包含以下类型的有关每个节点的信息:

  • 操作系统的引导信息。

  • 有关应在节点上运行的 HPC Pack 服务的信息。

  • 有关 Hosts 文件的信息。

  • 操作系统性能计数器数据。

日志文件将写入每个节点上的本地存储,如下表所示。 跟踪日志文件的格式、特征和命名取决于 HPC Pack 的版本。

重要

日志文件仅在 Azure 角色实例上的本地存储中维护,而节点仍保留在 Azure 中。 除非将文件或数据复制到其他位置,否则在停止或删除 Azure 节点后,将无法查看跟踪日志信息。 有关详细信息,请参阅本主题中的 存储跟踪日志数据的方案

HPC Pack 的版本 日志文件 注释
HPC Pack 2012 或更高版本 - 工作器节点C:\logs\hpcworker_nnnnnn.bin
- 代理节点C:\logs\hpcproxy_nnnnnn.bin
- 日志文件采用二进制格式。 默认日志记录级别为“详细”。
- 默认情况下,每个日志文件的最大大小为 4 MB,每个节点上最多可以存储 5000 MB 的日志文件。
- 为了便于分析,可以通过运行随 HPC Pack 一起安装的 hpctrace 命令行工具的 parselog 子命令,将日志文件转换为制表符分隔的文本文件。 有关使用此命令的详细信息,请参阅 hpctrace
HPC Pack 2008 R2 SP4 - 工作器节点 C:\logs\hpcworker.log
- 代理节点 C:\logs\hpcproxy.log
- 日志文件采用文本格式。 默认日志记录级别为“警告”或更高。
- 每个节点上最多写入 5 个扩展名为 .00<Integer> 的编号溢出日志文件。
- 每个节点上的日志文件限制为 60 MB,然后自动循环。

注意

可以使用经典门户中的 “配置 云服务设置”更改 Azure 节点上特定进程的跟踪级别, (例如 Microsoft.Hpc.Azure.AzureNodeManagerTracing) 。

存储跟踪日志数据的方案

只要角色实例正在运行,Azure 角色实例上生成的跟踪日志文件就保留在角色实例的本地存储中。 但是,如果要在 Azure 部署停止或删除节点后访问数据,则需要在角色实例运行时下载或存储跟踪日志文件或数据,例如 Azure 存储。 下面是存储跟踪日志文件或数据的方案。

方案 1:启用跟踪日志文件自动传输到 Azure Blob 存储

从 HPC Pack 2012 SP1 开始,HPC 群集管理员可以选择启用跟踪日志文件从部署中的 Azure 计算或代理节点自动传输到 Blob 存储 (hpclogs) 部署的 Azure 存储帐户中的容器。

若要在 Azure 存储帐户中启用跟踪日志文件自动传输到 Blob 存储,请在 HPC 群集管理器的 “选项” 菜单上,单击“ Azure 部署配置”。 还可以使用 Set-HpcClusterProperty HPC PowerShell cmdlet 设置 AzureLogstoBlob HPC 群集属性。 可以选择传输代理节点和/或工作器节点的日志。 默认情况下,日志文件 blob 存储的传输处于禁用状态。 更改 AzureLogstoBlob 属性仅影响日志文件的传输,以便将来的 Azure 节点部署。 当前部署不受影响。 有关详细信息,请参阅 Set-HpcClusterProperty

重要

在 Blob 存储中保存 Azure 部署日志文件会占用存储空间,并在与每个部署关联的存储帐户上生成存储事务。 如果启用,从工作器节点保存日志文件可能会影响使用同一存储帐户的所有 Azure 部署的性能,尤其是在有大型部署或多个并发部署时。 存储空间和存储事务将计入你的帐户。 禁用日志文件传输后,日志文件不会自动从 Azure 存储中删除。 可能需要通过下载日志文件来保留日志文件以供将来参考。 可以通过从存储帐户中删除 hpclogs 容器来清理日志文件。

可以在头节点上运行 hpcazurelog 命令,将数据从存储帐户中的 Blob 存储下载到本地文件夹,并从 Blob 存储中删除文件。 有关详细信息,请参阅 hpcazurelog

方案 2:启用跟踪日志数据自动传输到 Azure 表存储

从 HPC Pack 2012 开始,HPC 群集管理员可以选择启用将跟踪日志数据从部署中的 Azure 节点传输到 Azure 诊断 (WADSLogsTable) 表,以便在用于部署的 Azure 存储帐户中创建。

若要允许将跟踪日志数据传输到 Azure 存储帐户中的 WADSLogsTable 表,请使用 Set-HpcClusterProperty HPC PowerShell cmdlet 将 AzureLoggingEnabled HPC 群集属性设置为 true。 默认情况下,仅筛选日志文件中的“严重”、“错误”和“警告”事件,以包含在 WADSLogstable 表中。 更改 AzureLoggingEnabled 属性仅影响将来 Azure 节点部署的日志记录。 当前部署不受影响。 有关详细信息,请参阅 Set-HpcClusterProperty

重要

  • Azure 部署活动的日志记录使用表存储空间,并在与每个部署关联的存储帐户上生成存储事务。 存储空间和存储事务将根据 Azure 订阅的条款产生费用。
  • 通常,仅当部署出现问题并有助于排查部署问题时,才应启用到 Azure 存储的日志记录。 禁用对 Azure 存储的日志记录后,不会自动从 Azure 存储中删除日志数据。 你可能希望通过下载日志来保留日志以供将来参考。 可以通过从存储帐户中删除 WADLogsTable 来清理日志条目

从 HPC Pack 2012 SP1 开始,可以在头节点上运行 hpcazurelog 命令,将数据从存储帐户中的 WADLogsTable 下载到本地文件夹,并指定为表中存储选择的数据的跟踪级别。 有关详细信息,请参阅 hpcazurelog

方案 3:从 Azure 节点手动检索和存储日志文件

为了便于进一步分析,可以将日志文件从 Azure 节点手动下载到本地计算机,或将其上传到 Azure 存储帐户。

下载日志文件

若要下载日志文件,可以使用以下过程之一:

  • 运行 hpcfile get 命令,从每个节点单独下载日志文件。

  • 运行使用 hpcfile get 从工作器节点组下载文件的脚本。

  • 使用 Azure 管理门户单独远程连接到每个节点。 然后,可以将日志文件或文件复制到本地计算机。

  • 在头节点上运行 hpcazurelog 命令,从 Azure 工作器节点或代理节点下载文件。 此命令是在具有 SP1 的 HPC Pack 2012 中引入的,在以前的版本中不受支持。 有关详细信息,请参阅 hpcazurelog

注意

  • 若要与 Azure 节点建立远程连接,请确保在 Azure 节点模板中配置远程桌面凭据。
  • 若要从 HPC 代理节点下载日志文件,必须与每个节点建立远程连接,然后将日志文件单独复制到本地计算机。

下面是用于 hpcfile get 从 Azure 工作器节点下载日志文件的示例命令和脚本。 有关命令语法的详细信息,请参阅 hpcfile

示例 1。 若要将跟踪日志文件(包括可能的溢出文件)从具有 HPC Pack 2008 R2 的 SP4 头节点 myHeadNode 的群集上的 Azure 节点 AZURECN-001 下载到本地计算机上的当前文件夹,请重命名文件以避免覆盖本地计算机上的文件:

hpcfile get /scheduler:myHeadNode /targetnode:AZURECN-001 /file:"C:\logs\hpcworker.log" /destfile:"worker001.log"  
hpcfile get /scheduler:myHeadNode /targetnode:AZURECN-001 /file:"C:\logs\hpcworker.log.001" /destfile:"worker002.log"  
hpcfile get /scheduler:myHeadNode /targetnode:AZURECN-001 /file:"C:\logs\hpcworker.log.002" /destfile:"worker003.log"  
hpcfile get /scheduler:myHeadNode /targetnode:AZURECN-001 /file:"C:\logs\hpcworker.log.003" /destfile:"worker004.log"  
hpcfile get /scheduler:myHeadNode /targetnode:AZURECN-001 /file:"C:\logs\hpcworker.log.004" /destfile:"worker005.log"  
hpcfile get /scheduler:myHeadNode /targetnode:AZURECN-001 /file:"C:\logs\hpcworker.log.005" /destfile:"worker006.log"  

示例 2。 要将 hpcworker_000000.bin 日志文件从节点组 WorkerNodes 中名称以 AZURECN 开头的群集上名为 myHeadNode 的 HPC Pack 2012 头节点下载到本地计算机上的 C:\myFiles\myLogs 文件夹:

@echo off  
set "extension=.bin"  
set "fullfilepath=C:\myFiles\myLogs"  
mkdir C:\myFiles\myLogs  
FOR /F "tokens=1 delims="%%G IN ('node list /group:WorkerNodes ^| FIND "AZURECN-"') DO hpcfile get /scheduler:MyHeadNode /targetnode:%%G -file:"C:\logs\hpcworker_000000.bin" /destfile:"%fullfilepath%%%G%%%extension%"  

将日志文件上传到 Azure 存储帐户

可以使用以下过程之一将跟踪日志文件从 Azure 工作器节点上传到 Azure 存储帐户:

  1. 如上一部分中所述,将一个或多个日志文件下载到本地计算机,然后运行 hpcpack upload 命令将其上传到 Azure 存储帐户。

  2. 在一个或多个使用 hpcpack 上传 的 Azure 节点上运行脚本,将日志文件直接上传到存储帐户。

    注意

    • 若要在一组 Azure 节点上运行脚本,可以先将脚本从本地计算机上传到节点。
    • 方案 1:启用跟踪日志文件自动传输到 Azure Blob 存储中所述,从使用 SP1 的 HPC Pack 2012 开始,可以启用将跟踪日志文件自动传输到 Azure 存储帐户中的 blob 存储。 但是,如果未使用支持此功能的 HPC Pack 版本,或者尚未启用日志文件自动传输到 Blob 存储,则可以手动将其上传到该位置。

下面是使用 hpcpack 上传 将日志文件从 Azure 工作器节点上传到 Azure 存储帐户的示例脚本。 有关命令语法的详细信息,请参阅 hpcpack

注意

由于工作器节点上的日志文件名称相同,因此在将文件上传到 Azure 存储帐户时应避免覆盖这些文件。 例如,可以使用包含节点主机名的名称重命名日志文件,如以下示例所示。

示例 3。 将 hpcworker_000000.bin 文件从 Azure 工作器节点上载并重命名到 Azure 存储帐户中名为 MyStorageAccount 的容器 MyLogs,主键名为 MyPrimaryKey

@echo off  
REM Get the host name of the Azure node  
FOR /F "usebackq" %%i IN ('e:\approot\mpiexec.exe -c 1 hostname') DO SET filename=%%i  
set "extension=.bin"  
set "fullpath=C:\logs"  
REM Consolidate the log file name (e.g., AzureCN-001.bin)  
set "fullfilePath=%fullpath%%filename%%extension%"  
REM echo:%fullfilePath%  
REM Create a temporary file with desired name  
copy C:\logs\hpcworker_000000.bin %fullfilePath%  
e:\approot\hpcpack upload %fullfilePath% /account:MyStorageAccount /container:MyLogs /key:MyPrimaryKey  
del %fullfilePath%  

示例 4. 若要将脚本Uploader.bat (类似于示例 3) 中的脚本从头节点上传到名为 MyStorageAccount 的 Azure 存储帐户中名为 MyContainer 的容器,请将该脚本下载到节点组中名为 WorkerNodes 的 Azure 节点,然后在 WorkerNodes 中的节点上运行Uploader.bat

hpcpack upload uploader.bat /account:MyStorageAccount /container:MyLogs /key:MyPrimaryKey  
clusrun /nodegroup:WorkerNodes hpcpack download uploader.bat /account:MyStorageAccount /container:MyLogs /key:MyPrimaryKey /path:c:\logs  
clusrun /nodegroup:WorkerNodes c:\logs\uploader.bat  
clusrun /nodegroup:WorkerNodes del c:\logs\uploader.bat  

查看 Azure 存储帐户中的日志数据

若要查看 Azure 表或 Blob 存储中的日志,可以使用 Azure 存储资源管理器 等工具来浏览存储。

另请参阅

使用 Microsoft HPC Pack 迸发到 Azure 辅助角色实例
hpcazurelog