使用 Azure 节点的启动脚本
可以配置启动脚本,该脚本在启动时在一组 Azure 节点上自动运行(已预配)。 使用启动脚本,可以确保正确配置一组节点以运行特定作业。 此外,如果节点由于服务中断而不可用,并且需要再次在 Azure 中预配角色实例,则节点将还原到已知状态。 例如,使用启动脚本,可以安装应用程序或驱动程序、配置共享文件夹或打开特定应用程序的防火墙端口。 还可以使用启动脚本在使用特定节点模板部署的 Azure 节点集中以不同的方式配置节点的子集。
在本主题中:
注意
- 从 HPC Pack 2008 R2 和 Service Pack 2 开始,支持 Azure 启动脚本。
- 如果启动脚本需要超过 15 分钟才能完成,Azure Fabric 控制器可能会导致预配角色实例失败。
配置和使用启动脚本的常规步骤
下面是为 Azure 节点配置和使用启动脚本的一般步骤:
创建配置脚本(例如,startup.bat),该脚本使用环境变量来区分节点和设置不同的配置。 有关详细信息,请参阅本主题中的其余部分。
使用 hpcpack 命令打包脚本并将其上传到用于部署 Azure 节点的 Azure 存储帐户。
重要
打包和上传启动脚本时,不要指定
/relativePath
参数。 启动脚本只能从 Azure 节点的根目录运行。创建或编辑 Azure 节点模板以指定启动脚本。
启动(预配)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 节点模板