使用 Microsoft HPC Pack 排查 Azure 节点部署问题
本主题包含有助于或Microsoft支持使用 HPC Pack 排查 Azure 节点部署问题的信息。
有关使用 HPC Pack 部署 Azure 节点的一般要求和最佳做法,请参阅以下内容:
使用 Microsoft HPC Pack添加 Azure 节点
要求。 使用 Microsoft 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 |
- 日志文件采用二进制格式。 默认日志记录级别为 Verbose。 - 默认情况下,每个日志文件的大小最多为 4 MB,每个节点上最多可存储 5000 MB 的日志文件。 - 为了便于分析,可以通过运行 hpc Pack 安装的 hpctrace 命令行工具的 parselog 子命令,将日志文件转换为制表符分隔的文本文件。 有关使用此命令的详细信息,请参阅 hpctrace。 |
使用 SP4 的 HPC Pack 2008 R2 |
-
工作器节点 C:\logs\hpcworker.log - 代理节点 C:\logs\hpcproxy.log |
- 日志文件采用文本格式。 默认日志记录级别为“警告”或“更高”。 - 每个节点上写入扩展名为 .00<整数> 的最多五个编号溢出日志文件。 - 每个节点上的日志文件限制为 60 MB,然后自动循环。 |
注意
可以使用经典门户中云服务的 配置 设置来更改 Azure 节点上特定进程的跟踪级别(如 Microsoft.Hpc.Azure.AzureNodeManagerTracing)。
存储跟踪日志数据的方案
只要角色实例正在运行,Azure 角色实例上生成的跟踪日志文件将保留在角色实例的本地存储中。 但是,如果要在停止 Azure 部署或删除节点后访问数据,则需要在运行角色实例时下载或存储永久性存储(例如 Azure 存储)中的跟踪日志文件或数据。 下面是存储跟踪日志文件或数据的方案。
方案 1:启用将跟踪日志文件自动传输到 Azure Blob 存储
从 HPC Pack 2012 SP1 开始,HPC 群集管理员可以选择为部署启用从 Azure 计算节点或代理节点到 Azure 存储帐户中 Blob 存储(hpclogs)中用于部署的容器的跟踪日志文件的自动传输。
若要启用将跟踪日志文件自动传输到 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)表(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 的脚本 从工作器节点组下载文件。
使用 Azure 管理门户单独连接到每个节点。 然后,可以将日志文件或文件复制到本地计算机。
在头节点上运行 hpcazurelog 命令,从 Azure 工作器节点或代理节点下载文件。 此命令是在 HPC Pack 2012 SP1 中引入的,在以前的版本中不受支持。 有关详细信息,请参阅 hpcazurelog。
注意
- 若要与 Azure 节点建立远程连接,请确保在 Azure 节点模板中配置远程桌面凭据。
- 若要从 HPC 代理节点下载日志文件,必须与每个节点建立远程连接,然后将日志文件单独复制到本地计算机。
下面是使用 hpcfile get
从 Azure 工作器节点下载日志文件的示例命令和脚本。 有关命令语法的详细信息,请参阅 hpcfile。
示例 1. 若要下载跟踪日志文件(包括可能的溢出文件),请从群集上的 Azure 节点 AZURECN-001,其中 HPC Pack 2008 R2 的 SP4 头节点名为 myHeadNode myHeadNode 到本地计算机上的当前文件夹,重命名文件以避免覆盖本地计算机上的文件:
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. 若要从节点组中的 Azure 节点
@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 存储帐户:
按照上一部分所述,将一个或多个日志文件下载到本地计算机,然后通过运行 hpcpack upload 命令将其上传到 Azure 存储帐户。
在一个或多个 Azure 节点上运行脚本,该节点使用 hpcpack 上传 将日志文件直接上传到存储帐户。
注意
- 若要在一组 Azure 节点上运行脚本,可以首先将脚本从本地计算机上传到节点。
- 如 方案 1 中所述:启用将跟踪日志文件自动传输到 Azure blob 存储(从 HPC Pack 2012 和 SP1 开始),可以启用将跟踪日志文件自动传输到 Azure 存储帐户中的 Blob 存储。 但是,如果不使用支持此功能的 HPC Pack 版本,或者未启用将日志文件自动传输到 Blob 存储,则可以手动将其上传到该位置。
下面是使用 hpcpack 上传 将日志文件从 Azure 工作器节点上传到 Azure 存储帐户的示例脚本。 有关命令语法的详细信息,请参阅 hpcpack。
注意
由于工作节点上的日志文件命名方式相同,因此在将这些文件上传到 Azure 存储帐户时,应避免覆盖这些文件。 例如,可以使用包含节点主机名的名称重命名日志文件,如以下示例所示。
示例 3. 若要将hpcworker_000000.bin文件从 Azure 辅助角色节点上传到名为 MyStorageAccount 的 Azure 存储帐户中的容器 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. 若要将脚本
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
hpcazurelog