将应用程序部署到 Windows HPC 群集中的 Azure 节点

从 HPC Pack 2008 R2 和 Service Pack 1 (SP1) 开始,HPC Pack 包含内置实用工具和机制,可帮助群集管理员部署应用程序 (,例如可执行文件、SOA 服务、XLL 文件和已启用群集的 Microsoft Excel 工作簿,) Azure 节点,这些节点已加入 Azure“突发”方案中的本地群集。 默认情况下,Azure 节点无法直接访问本地资源和共享文件夹,因此用于在 Azure 节点上部署应用程序的方法不同于用于在本地部署应用程序的方法。 此外,添加到 Windows HPC 群集的 Azure 节点是动态部署和重新预配的,因此建议的应用程序部署方法有助于确保应用程序在新 Azure 节点实例上自动可用。

Azure 突发的 HPC 应用程序工作负载的注意事项

在将应用程序部署到 Azure 节点之前,请评估现有或计划的 HPC 工作负载是在 Azure 中高效运行还是进行缩放。 本主题不介绍在 Azure 突发方案中运行的 HPC 应用程序的详细迁移、开发和设计注意事项。 此外,Azure 平台的功能也在不断发展。 但是,以下是使用 HPC Pack 成功突发到 Azure 工作负载的当前特征,尤其是对于 Azure 节点的大规模部署:

  • 高度分布式单节点计算 其中包括许多参数扫描和某些面向服务的体系结构, (SOA) 作业。 其他作业类型(包括消息传递接口 (MPI) 作业)可以在 Azure 突发配置中运行,但可能需要选择支持 Azure RDMA 网络的 计算密集型实例大小 。 有关 HPC 作业类型的常规信息,请参阅 了解并行计算作业

  • 计算时间超过数据移动时间 某些 HPC 工作负载需要将大量数据上传到 Azure 进行计算,或返回已处理的大量数据。 确保数据移动不是 HPC 工作流中的瓶颈。

  • 基于文件的数据访问 访问本地数据文件的现有 HPC 应用程序可以通过访问上传到 Azure Blob 存储的数据文件,轻松迁移为在 Azure 中运行。 可以开发新的 HPC 应用程序来访问 Azure 中的各种存储类型。 但是,根据数据的敏感性、法律要求、成本注意事项和其他因素,可能无法将应用程序数据存储在 Azure 中。

  • “突发”工作负载模式 Azure 突发方案非常适合使用本地群集的固定资源轻松完成的资源密集型工作负载。 工作负荷可能包括不规则的计算高峰、定期计划的作业或一次性作业。

有关在 Azure 节点上运行应用程序的详细信息,请参阅 在 Azure 节点上运行 HPC 应用程序的指南

选择将应用程序和数据部署到 Azure 节点的方法

在某些情况下,用于将应用程序和数据 () 部署到 Azure 节点的方法取决于安装应用程序所需的内容,如下表所述。

安装要求 方法 可用性
可以通过将文件和任何依赖项(如 DLL 或配置文件)复制到节点来完成安装。 - 管理员使用 hpcpack 命令将文件打包并暂存到 Azure 存储。
请参阅 使用 hpcpack 和 hpcsync
- 管理员部署 Azure 节点。 包会自动部署 (复制并提取) 新的 Azure 节点实例,或者如果节点已在运行,管理员可以手动部署。
请参阅 使用 Microsoft HPC Pack 突发到 Azure 辅助角色实例
HPC Pack 2008 R2 with SP1
安装需要以无提示方式运行安装程序,或者需要其他配置步骤,例如设置环境变量或创建防火墙例外。 - 使用 hpcpack 命令将管理员包和暂存文件或安装程序到 Azure 存储。
请参阅 使用 hpcpack 和 hpcsync
- 管理员在 Azure 节点模板中指定启动脚本来配置环境或运行安装命令。
请参阅 使用 Azure 节点的启动脚本
- 管理员部署 Azure 节点。 包会自动部署到新的 Azure 节点实例,然后启动脚本在预配过程中运行。
请参阅 使用 Microsoft HPC Pack 突发到 Azure 辅助角色实例
将 HPC Pack 2008 R2 与 SP2 配合使用
在运行作业时,在准备任务期间,可能会进行安装和将数据分发到 Azure 节点。 - 管理员使用 Azure 存储工具(如 AzCopy )将安装程序和数据文件上传到 Azure Blob 存储中的容器。
- 管理员使用 hpcpack 命令将其他文件或安装程序打包并暂存到 Azure 存储。
请参阅 使用 hpcpack 和 hpcsync
- 管理员在 Azure 节点模板中指定启动脚本来配置环境或运行安装命令。
请参阅 使用 Azure 节点的启动脚本
- 管理员部署 Azure 节点。 包会自动部署到新的 Azure 节点实例,然后启动脚本在预配过程中运行。
请参阅 使用 Microsoft HPC Pack 突发到 Azure 辅助角色实例
- 管理员创建具有节点准备任务的作业,以执行其他安装步骤或从 Azure Blob 存储容器下载数据。
请参阅 定义节点准备任务 - 作业管理器
HPC Pack 2008 R2 with SP1
安装需要不容易编写脚本的步骤,并且可以从 Azure 中的持久驱动器访问应用程序和应用程序数据。

-
- 管理员使用 Windows 工具 (VHD) 创建虚拟硬盘,并在 VHD 上安装应用程序和任何必要的应用程序数据。
- 管理员分离 VHD,并使用 hpcpack upload 命令将 VHD 作为页 Blob 上传到 Azure 存储。
请参阅 使用 hpcpack 和 hpcsync
- 管理员指定配置 Azure 节点模板时 Azure 存储中的应用程序 VHD。
请参阅 在 Azure 辅助角色节点上装载应用程序 VHD
- (可选)管理员为其他配置指定启动脚本,或者在部署中的一个或多个节点上设置共享文件夹。
请参阅 使用 Azure 节点的启动脚本
- 管理员部署 Azure 节点。 创建装载应用程序 VHD 的 Azure 节点实例,存储上的任何包会自动部署到节点,然后启动脚本作为预配过程的一部分运行。
请参阅 使用 Microsoft HPC Pack 突发到 Azure 辅助角色实例
HPC Pack 2012

使用 hpcpack 和 hpcsync

每个 Azure 节点部署都与节点模板中指定的 Azure 存储帐户相关联。 群集管理员可以使用 hpcpack 命令暂存 (文件,例如应用程序、SOA 服务、XLL、已启用群集的 Excel 工作簿以及) 到存储帐户的实用工具。 可以使用 hpcpack create 以压缩格式 (.zip) 打包可上传到 Azure 存储的文件或文件夹。 每个应用程序、SOA 服务或 XLL 必须单独打包,并且包必须包含任何必需的依赖项,例如 DLL 或配置文件。 然后,可以使用 hpcpack 上传 将包上传到存储帐户。 可以从头节点运行 hpcpack 命令,也可以在安装了 HPC 客户端实用工具的计算机上运行。

在预配过程中,存储帐户中的所有包会自动部署到新的 Azure 节点实例。 使用 HPC 管理实用工具部署一组 Azure 节点时,如果 Windows Azure 系统自动重新预配节点实例,则会发生此情况。 hpcsync 命令在每个 Azure 节点上运行,将所有包从存储复制到节点,然后提取文件。 如果在启动 Azure 节点后将包上传到存储,可以通过在每个 Azure 节点上手动运行 hpcsync 命令来部署包。

注意

如果创建多个引用同一存储帐户的 Azure 节点模板,则相同的暂存文件将部署到所有 Azure 节点集。 若要将不同的文件部署到不同的节点集,请为每个 Azure 节点模板创建单独的 Azure 存储帐户。

下图演示了将应用程序复制到 Azure 节点的基本工作流和机制:

在 Windows HPC 中将应用程序复制到 Azure 节点

默认情况下, hpcsync 将文件提取到CCP_PACKAGE_ROOT环境变量指定的位置。 此变量在预配过程中在 Azure 节点上设置。 提取的文件放置在按如下方式确定的文件夹中:%CCP_PACKAGE_ROOT%\<packageName>\<uploadTimeStamp>。 这是 SOA 服务、XL 和 Excel 工作簿的预期位置。 但是,对于群集用户在其命令行中调用的应用程序,这并不方便。 若要简化可执行文件的文件夹结构,可以在将包上传到存储时设置包的相对路径属性。 hpcsync 在提取文件时应用相对路径,以便按如下方式确定路径:%CCP_PACKAGE_ROOT%\<relativePath>。 然后,用户可以指定其应用程序的路径,如作业提交命令的以下示例所示: job submit %CCP_PACKAGE_ROOT%\myRelativePath\myapp.exe

下面是有关 hpcsync 和CCP_PACKAGE_ROOT的重要注意事项:

  • 在 Azure 工作器节点上,%CCP_PACKAGE_ROOT% 文件夹是在 10 GB 磁盘分区上创建的。 这意味着节点实例上的所有应用程序文件不能超过 10 GB。 如果应用程序具有大量输入和输出文件,则可以使用启动脚本授予用户对 C:\ 的权限驱动器,以便用户可以写入节点上的所有可用暂存空间。

  • 手动运行 hpcsync 时,可以替代默认位置 (%CCP_PACKAGE_ROOT%) 。 例如,可以在每个 Azure 节点上创建一个文件夹,然后在运行 hpcsync 时指定该位置。 所有包都将提取到该文件夹。 但是, (部署或自动重新预配) 的任何新节点实例将不包括该文件夹,并且包将自动部署到默认位置。 此外,群集用户仅对 %CCP_PACKAGE_ROOT% 中的文件夹具有写入权限。 除非修改 Azure 节点上的文件夹权限,否则只有管理员才能在 %CCP_PACKAGE_ROOT% 之外运行应用程序。

  • 当 hpcsync 部署包时,提取的文件的完整路径长度不能超过 256 个字符。 暂时放置提取文件的根目录最多需要 136 个字符,文件名保留 120 个字符,子目录 ((如果有任何) )和 relativePath ((如果指定) )。 如果提取的文件的路径超过 256 个字符,则包部署将失败。

hpcsync 机制足以部署 SOA 服务、XLL 文件和只需将文件复制到节点即可安装的应用程序。 如果需要运行安装程序来安装应用程序,或者应用程序需要其他配置步骤,例如设置环境变量、添加防火墙例外、修改文件夹权限或创建文件夹,则可以在节点模板中包含启动脚本。 此脚本将在 hpcsync 运行后的预配过程中运行,并可用于配置节点和执行所需的应用程序安装步骤。

如何将应用程序文件暂存到 Azure 存储

本部分介绍如何使用 hpcpack 打包应用程序并将其暂存到 Azure 存储。 分阶段包会自动部署到预配 (或由 Azure 系统) 自动重新预配的新 Azure 节点实例。

注意

你必须是群集管理员,或者至少拥有 Azure 订阅 ID 和存储帐户密钥才能将文件暂存到 Azure 存储。

要求

如果要打包 SOA 服务:

  • 包的名称必须是 SOA 服务的名称 (即 SOA 客户端在 SessionStartInfo 构造函数) 中指定的服务名称。 例如,serviceName.zip或serviceName_serviceVersion.zip。

  • 必须在包中包含服务 DLL、任何依赖 DLL 和服务配置文件。

  • 还必须将服务配置文件部署到头节点。 所有设置都由配置文件的本地副本确定。

  • 上传包时,不要指定相对路径。 必须将 SOA 服务解压缩到默认位置。

如果要打包 XLL 文件:

  • 包的名称必须是 XLL 文件的名称。 例如,XLLName.zip。

  • 如果 XLL 具有依赖项,请将 XLL 和支持文件放在文件夹中并打包该文件夹。 XLL 必须位于文件夹的顶层, (不在子文件夹) 中。

  • 上传包时,不要指定相对路径。 必须将 XL 解压缩到默认位置。

如果要打包 Excel 工作簿:

  • 包的名称必须是工作簿的名称。 例如,workbookName.zip。

  • 如果工作簿具有依赖项,请将工作簿和支持文件放在文件夹中并打包文件夹。 工作簿必须位于文件夹的顶层, (不在子文件夹) 中。

  • 上传包时,不要指定相对路径。 工作簿必须解压缩到默认位置。

如果要打包可执行文件 (,例如 MPI 应用程序) 、应用程序安装程序或将从启动脚本调用的实用工具:

  • 必须在包中包含任何依赖 DLL 或文件。

  • 上传包时,请指定相对路径属性。

如果要打包启动脚本:

  • 包的名称必须是启动脚本的名称。 例如,startup.bat.zip。

  • 上传包时,不要指定相对路径。 必须将启动脚本解压缩到默认位置。

  • 如果启动脚本调用安装程序或实用工具,请确保单独打包和暂暂保存所需的文件。

步骤

例如,以下过程演示了如何将各种类型的应用程序文件暂存到 Azure 存储。

注意

无需提升的命令提示符 (以管理员) 身份运行 hpcpack create。 但是, hpcpack 上传 需要提升。 若要执行以下过程,请在提升的命令提示符窗口中运行命令。

将 SOA 服务打包并暂存到 Azure 存储
  1. 如果 SOA 服务尚未注册并部署到本地群集,则通过将服务配置文件的副本放在头节点上的服务注册文件夹中来注册 SOA 服务 (通常为 %CCP_HOME%\ServiceRegistration) 。 有关详细信息,请参阅 部署和编辑服务配置文件

  2. 将服务配置文件、服务程序集和任何依赖 DLL 复制到空文件夹。 例如,将文件复制到名为 C:\myFiles\myServiceFiles 的文件夹

  3. 在提升的命令提示符下,运行 hpcpack create ,并为包和包含服务文件的文件夹指定名称。

    重要

    包的名称必须是 SOA 服务的名称 (即 SOA 客户端在 SessionStartInfo 构造函数) 中指定的服务名称。

    例如,若要将 C:\myFiles\myServiceFiles 的内容打包为 myServiceName.zip (,并将包保存到名为 AzurePackages) 的文件夹:

    hpcpack create C:AzurePackagesmyServiceName.zip C:myFilesmyServiceFiles

  4. 运行 hpcpack 上传 以使用以下命令将包上传到 Azure 存储,其中 myHeadNode 是头节点的名称, myAzureTemplate 是用于部署 Azure 节点的模板的名称。 例如:

    hpcpack upload C:\AzurePackages\myServiceName.zip /nodetemplate:myAzureNodeTemplate /scheduler:myHeadNode

将 XLL 文件或 Excel 工作簿打包并暂存到 Azure 存储
  1. 如果 XLL 或工作簿对 DLL 或其他文件具有依赖项,请将 XLL 或工作簿及其依赖项复制到文件夹,例如 c:\myFiles\myExcelFiles

  2. 在提升的命令提示符下,运行 hpcpack create 以打包 XLL 或工作簿。 指定包的名称并指定 XLL 或工作簿。 包的名称必须是 XLL 文件的名称或 Excel 工作簿的名称。

    例如,如果 XLL 或工作簿具有依赖项,请将整个文件夹 (打包,并将包保存到名为 AzurePackages 的文件夹) :

    hpcpack create C:\AzurePackages\myXLL.zip C:\myFiles\myExcelFiles

    如果 XLL 或工作簿没有依赖项,可以直接打包。 例如,将 C:\myFiles\myXLL.xll 打包为 myXLL.zip

    hpcpack create C:\AzurePackages\myXLL.zip C:\myFiles\myXLL.xll

  3. 运行 hpcpack 上传 以使用以下命令将包上传到 Azure 存储,其中 myHeadNode 是头节点的名称, myAzureTemplate 是用于部署 Azure 节点的模板的名称。 例如:

    hpcpack upload C:\AzurePackages\myXLL.zip /nodetemplate:myAzureNodeTemplate /scheduler:myHeadNode

将可执行文件打包并暂存到 Azure 存储
  1. 将可执行文件和任何依赖项或 DLL 复制到文件夹,例如 C:\myFiles\myAppFiles

  2. 在提升的命令提示符下,运行 hpcpack create 以打包应用程序文件。 指定包的名称,并指定包含应用程序文件的文件夹。

    例如,若要将 c:\myFiles\myAppFiles 的内容打包为 myApp.zip (,并将包保存到名为 AzurePackages) 的文件夹:

    hpcpack create c:\AzurePackages\myApp.zip c:\myFiles\myAppFiles

  3. 使用以下命令将包上传到 Azure 存储,其中 myHeadNode 是头节点的名称, myAzureTemplate 是用于部署 Azure 节点的模板的名称。 指定应用程序文件的相对路径。 例如:

    hpcpack upload c:\AzurePackages\myApp.zip /scheduler:myHeadNode /nodetemplate:myAzureTemplate /relativepath:myApp

如何将分阶段包部署到 Azure 节点

暂存到 Azure 存储的包会自动部署到新的节点实例。 可以手动部署包 - 例如,在自动部署到所有新节点之前,验证包中是否具有所有必要的依赖项,或者将包部署到已在运行的节点。 可以使用 clusrunhpcsync 将文件从 Azure 存储帐户部署到 Azure 节点。

例如:

clusrun /nodegroup:AzureWorkerNodes hpcsync

若要查看已部署到 Azure 节点的文件夹或文件的列表,可以运行以下命令:

clusrun /nodegroup:AzureWorkerNodes dir %CCP_PACKAGE_ROOT% /s

从 Azure 节点访问文件

如果 HPC 应用程序需要文件访问权限,下面是用于从部署到 Azure 节点的应用程序访问文件的选项。

选项 先决条件 注释
Azure 驱动器 管理员在 Azure 节点上配置和装载应用程序 VHD。

请参阅 在 Azure 辅助角色节点上装载应用程序 VHD
- 在每个节点上本地复制和缓存驱动器
- 驱动器一次只能由一个节点写入
Azure 虚拟机上的文件服务器 管理员配置 Azure 虚拟机实例,将数据磁盘附加到虚拟机,启用文件服务器角色,并创建文件共享文件夹。

请参阅如何配置 Azure 虚拟机文件服务器并从Windows HPC Server计算作业中使用它
- 作业对文件服务器资源的访问需要经过身份验证的用户访问权限。
- 为现有应用程序提供 SMB 兼容性
- 每个服务器最多提供 16 TB 的数据
- 将带宽限制为 800 Mb/秒
将本地文件镜像到 Azure Blob 存储 管理员使用 Azure 存储工具(如 AzCopy )将本地文件镜像到 Azure Blob 存储中的容器。
- 将数据从本地环境镜像到 Azure 会增加开销。
直接访问 Azure Blob 存储 应用程序经过体系结构设计,可直接在 Azure Blob 上执行数据访问操作 - 提供可用选项的最高可伸缩性

其他参考