使用 Azure 节点的启动脚本

可以配置启动脚本,该脚本在启动时在一组 Azure 节点上自动运行(已预配)。 使用启动脚本,可以确保正确配置一组节点以运行特定作业。 此外,如果节点由于服务中断而不可用,并且需要再次在 Azure 中预配角色实例,则节点将还原到已知状态。 例如,使用启动脚本,可以安装应用程序或驱动程序、配置共享文件夹或打开特定应用程序的防火墙端口。 还可以使用启动脚本在使用特定节点模板部署的 Azure 节点集中以不同的方式配置节点的子集。

在本主题中:

注意

  • 从 HPC Pack 2008 R2 和 Service Pack 2 开始,支持 Azure 启动脚本。
  • 如果启动脚本需要超过 15 分钟才能完成,Azure Fabric 控制器可能会导致预配角色实例失败。

配置和使用启动脚本的常规步骤

下面是为 Azure 节点配置和使用启动脚本的一般步骤:

  1. 创建配置脚本(例如,startup.bat),该脚本使用环境变量来区分节点和设置不同的配置。 有关详细信息,请参阅本主题中的其余部分。

  2. 使用 hpcpack 命令打包脚本并将其上传到用于部署 Azure 节点的 Azure 存储帐户。

    重要

    打包和上传启动脚本时,不要指定 /relativePath 参数。 启动脚本只能从 Azure 节点的根目录运行。

  3. 创建或编辑 Azure 节点模板以指定启动脚本。

  4. 启动(预配)Azure 节点。

    启动脚本会自动部署到 Azure 节点并在节点上运行。 如果脚本运行时出现问题,可以查看错误日志。 有关详细信息,请参阅 使用 Microsoft HPC Pack排查 Azure 节点的部署问题。

脚本名称

必须确保上传到 Azure 的包的名称与运行脚本的名称(以及节点模板中指定的脚本的名称)保持一致。 仅允许下表中的命名约定:

脚本名称 包名称
file.extension(示例:startup.bat) file.extension.zip(示例:startup.bat.zip)

-或-

文件.zip(示例:startup.zip)

环境变量

可以使用下表中的环境变量(在 Azure 节点上自动设置)来帮助配置启动脚本:

环境变量 描述
HPC_NODE_NAME Microsoft HPC Pack 自动配置的 Azure 节点的名称,例如,AZURECN-0014
HPC_NODE_GROUPS 节点所属的节点组的逗号分隔列表。 允许脚本的行为专用于节点的不同子集。 注意:仅在首次启动 Azure 节点时设置 HPC_NODE_GROUPS。 如果变量已更新,然后再次预配节点,则不会动态更新该变量。

以下示例是一个批处理文件,该文件在节点组 Port31337 服务器组标识的节点上配置防火墙规则。 可以调整此模式,以创建执行其他任务的启动脚本。

@echo off  
echo %HPC_NODE_GROUPS% | findstr /C: "Port31337 Server Group"  
if %errorlevel% == 0 (  
echo Creating firewall exception  
netsh advfirewall firewall add rule name="MyRule" dir=in protocol=tcp localport=31337 action=allow enable=yes  
)  
  

日志文件

如果启动脚本运行时出现问题,请查看脚本的日志文件。 下表中列出了启动脚本的日志。 日志文件位于每个 Azure 工作器节点上的 %CCP_HOME% 文件夹中。

日志文件 描述
HpcStartupCommand.log 退出代码和输出流
HpcStartupCommand.err 错误流

另请参阅

为 Microsoft HPC Pack 配置 Azure 节点模板