重要
经典 VM 将于 2023 年 3 月 1 日停用。
如果使用 ASM 中的 IaaS 资源,请在 2023 年 3 月 1 日完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器中的许多增强功能。
有关详细信息,请参阅在 2023 年 3 月 1 日之前将 IaaS 资源迁移到 Azure 资源管理器。
在 Azure 中设置 一个Microsoft HPC Pack 群集,其中包含运行 Windows Server 的头节点和运行受支持 Linux 分发版的多个计算节点。 浏览用于在 Linux 节点和群集的 Windows 头节点之间移动数据的选项。 了解如何将 Linux HPC 作业提交到群集。
注释
Azure 具有用于创建和处理资源的两个不同的部署模型:资源管理器部署模型和经典部署模型。 这篇文章介绍如何使用这两种模型,但 Microsoft 建议大多数最新部署使用 Resource Manager 模型。
概括而言,下图显示了创建和使用 HPC Pack 群集。
               
              
            
有关在 Azure 中运行 Linux HPC 工作负荷的其他选项,请参阅 用于批处理和高性能计算的技术资源。
使用 Linux 计算节点部署 HPC Pack 群集
本文介绍了在 Azure 中使用 Linux 计算节点部署 HPC Pack 群集的两个选项。 这两种方法都使用 Windows Server 和 HPC Pack 的市场映像来创建头节点。
- Azure 资源管理器模板 - 使用来自 Azure 市场的模板或社区中的快速入门模板,在 Resource Manager 部署模型中自动创建群集。 例如,Azure 市场中 适用于 Linux 工作负荷的 HPC Pack 群集 模板为 Linux HPC 工作负载创建完整的 HPC Pack 群集基础结构。
- PowerShell 脚本 - 使用 Microsoft HPC Pack IaaS 部署脚本 (New-HpcIaaSCluster.ps1)在经典部署模型中自动完成群集部署。 此 Azure PowerShell 脚本在 Azure 市场中使用 HPC Pack VM 映像进行快速部署,并提供一组全面的配置参数来部署 Linux 计算节点。
有关 Azure 中的 HPC Pack 群集部署选项的详细信息,请参阅 使用 Microsoft HPC Pack 在 Azure 中创建和管理高性能计算 (HPC) 群集的选项。
先决条件
- Azure 订阅 - 可以在 Azure 全球或 Azure 中国服务中使用订阅。 如果没有帐户,只需花费几分钟就能创建一个免费帐户。 
- 核心配额 - 可能需要增加核心配额,尤其是在选择部署具有多核 VM 大小的多个群集节点时。 若要增加配额,请免费提出联机客户支持请求。 
- Linux 分发 版 - 目前 HPC Pack 支持计算节点的以下 Linux 分发版。 可以使用这些分发版的市场版本(如果可用),也可以提供自己的版本。 - 基于 CentOS:6.5、6.6、6.7、7.0、7.1、7.2、6.5 HPC、7.1 HPC 
- Red Hat Enterprise Linux:6.7、6.8、7.2 
- SUSE Linux Enterprise Server:SLES 12、SLES 12(高级)、SLES 12 SP1、SLES 12 SP1(高级)、SLES 12 for HPC、SLES 12 for HPC(高级版) 
- Ubuntu 服务器:14.04 LTS、16.04 LTS - 小窍门 - 若要将 Azure RDMA 网络与支持 RDMA 的 VM 大小之一配合使用,请从 Azure 市场指定基于 SUSE Linux Enterprise Server 12 HPC 或 CentOS 的 HPC 映像。 有关详细信息,请参阅 高性能计算 VM 大小。 
 
使用 HPC Pack IaaS 部署脚本部署群集的其他先决条件:
- 客户端计算机 - 需要基于 Windows 的客户端计算机才能运行群集部署脚本。
- Azure PowerShell - 在客户端计算机上安装和配置 Azure PowerShell(版本 0.8.10 或更高版本)。
- 
              HPC Pack IaaS 部署脚本 - 从 Microsoft下载中心下载并解压缩最新版本的脚本。 可以通过运行 .\New-HPCIaaSCluster.ps1 –Version来检查脚本的版本。 本文基于脚本版本 4.4.1 或更高版本。
部署选项 1。 使用资源管理器模板
- 转到 Azure 市场中 适用于 Linux 工作负荷模板的 HPC Pack 群集 ,然后单击“ 部署”。 
- 在 Azure 门户中,查看信息,然后单击“ 创建”。   
- 在 “基本信息”选项卡上,输入群集的名称,该名称也命名头节点 VM。 可以选择现有资源组,也可以在可用的位置为部署创建组。 该位置会影响某些 VM 大小和其他 Azure 服务的可用性(请参阅 区域可用的产品)。 
- 在主节点设置页选项卡中,首次部署时,可接受默认设置。 - 注释 - 配置后脚本 URL 是一个可选设置,用于指定运行后要在头节点 VM 上运行的公开可用的 Windows PowerShell 脚本。 
- 在 “计算节点设置” 边栏选项卡上,选择要部署的节点的命名模式、节点的数量和大小以及要部署的 Linux 分发版。 
- 在 “基础结构设置” 边栏选项卡上,输入虚拟网络和 Active Directory 域、域和 VM 管理员凭据的名称,以及存储帐户的命名模式。 - 注释 - HPC Pack 使用 Active Directory 域对群集用户进行身份验证。 
- 验证测试运行并查看使用条款后,单击“ 购买”。 
部署选项 2。 使用 IaaS 部署脚本
以下是使用 HPC Pack IaaS 部署脚本部署群集的其他先决条件:
- 客户端计算机 - 需要基于 Windows 的客户端计算机才能运行群集部署脚本。
- Azure PowerShell - 在客户端计算机上安装和配置 Azure PowerShell(版本 0.8.10 或更高版本)。
- 
              HPC Pack IaaS 部署脚本 - 从 Microsoft下载中心下载并解压缩最新版本的脚本。 可以通过运行 .\New-HPCIaaSCluster.ps1 –Version来检查脚本的版本。 本文基于脚本版本 4.4.1 或更高版本。
XML 配置文件
HPC Pack IaaS 部署脚本使用 XML 配置文件作为输入来描述 HPC 群集。 以下示例配置文件指定由 HPC Pack 头节点和两个大小 A7 CentOS 7.0 Linux 计算节点组成的小型群集。
根据环境和所需群集配置根据需要修改文件,并使用名称(如 HPCDemoConfig.xml)保存该文件。 例如,需要提供订阅名称和唯一的存储帐户名称和云服务名称。 此外,你可能想要为计算节点选择其他受支持的 Linux 映像。 有关配置文件中的元素的详细信息,请参阅脚本文件夹中的Manual.rtf文件,并使用 HPC Pack IaaS 部署脚本创建 HPC 群集。
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
  <Subscription>
    <SubscriptionName>Subscription-1</SubscriptionName>
    <StorageAccount>allvhdsje</StorageAccount>
  </Subscription>
  <Location>Japan East</Location>  
  <VNet>
    <VNetName>centos7rdmavnetje</VNetName>
    <SubnetName>CentOS7RDMACluster</SubnetName>
  </VNet>
  <Domain>
    <DCOption>HeadNodeAsDC</DCOption>
    <DomainFQDN>hpc.local</DomainFQDN>
  </Domain>
  <Database>
    <DBOption>LocalDB</DBOption>
  </Database>
  <HeadNode>
    <VMName>CentOS7RDMA-HN</VMName>
    <ServiceName>centos7rdma-je</ServiceName>
  <VMSize>ExtraLarge</VMSize>
  <EnableRESTAPI />
  <EnableWebPortal />
  </HeadNode>
  <LinuxComputeNodes>
    <VMNamePattern>CentOS7RDMA-LN%1%</VMNamePattern>
    <ServiceName>centos7rdma-je</ServiceName>
    <VMSize>A7</VMSize>
    <NodeCount>2</NodeCount>
    <ImageName>5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20150325</ImageName>
  </LinuxComputeNodes>
</IaaSClusterConfig>
运行 HPC Pack IaaS 部署脚本
- 以管理员身份在客户端计算机上打开 Windows PowerShell。 
- 将目录更改为安装脚本的文件夹(此示例中的 E:\IaaSClusterScript)。 - cd E:\IaaSClusterScript
- 运行以下命令来部署 HPC Pack 群集。 此示例假定配置文件位于 E:\HPCDemoConfig.xml - .\New-HpcIaaSCluster.ps1 –ConfigFile E:\HPCDemoConfig.xml –AdminUserName MyAdminName- a。 由于上述命令中未指定 AdminPassword ,因此系统会提示输入用户 MyAdminName 的密码。 - b. 然后,脚本开始验证配置文件。 最长可能需要几分钟时间,具体取决于网络连接。   - c. 验证通过后,脚本会列出要创建的群集资源。 输入 Y 以继续。   - d. 该脚本开始部署 HPC Pack 群集,无需进一步手动步骤即可完成配置。 该脚本可以运行几分钟。   - 注释 - 在此示例中,脚本自动生成日志文件,因为未指定 -LogFile 参数。 日志不是实时写入的,而是在验证和部署结束时收集的。 如果在脚本运行时停止 PowerShell 进程,则会丢失一些日志。 
连接到头节点
在 Azure 中部署 HPC Pack 群集后,使用部署群集时提供的域凭据(例如 hpc\clusteradmin)通过远程桌面连接到头节点 VM。 从头节点管理群集。
在头节点上,启动 HPC 群集管理器以检查 HPC Pack 群集的状态。 可以采用与使用 Windows 计算节点相同的方式管理和监视 Linux 计算节点。 例如,可以看到 资源管理 中列出的 Linux 节点(这些节点是使用 LinuxNode 模板部署的)。
               
              
            
还可以在 热度映射 视图中看到 Linux 节点。
               
              
            
如何使用 Linux 节点在群集中移动数据
可以选择在 Linux 节点和群集的 Windows 头节点之间移动数据。 下面是三种常见方法,在以下各节中更详细地介绍:
- Azure 文件 - 公开托管 SMB 文件共享以在 Azure 存储中存储数据文件。 Windows 节点和 Linux 节点可以同时将 Azure 文件共享装载为驱动器或文件夹,即使它们部署在不同的虚拟网络中也是如此。
- 头节点 SMB 共享 - 在 Linux 节点上装载头节点的标准 Windows 共享文件夹。
- 头节点 NFS 服务器 - 为混合 Windows 和 Linux 环境提供文件共享解决方案。
Azure 文件存储
Azure 文件服务使用标准 SMB 2.1 协议公开文件共享。 Azure VM 和云服务可以通过装载的共享跨应用程序组件共享文件数据,本地应用程序可以通过文件存储 API 访问共享中的文件数据。
有关创建 Azure 文件共享并将其装载到头节点上的详细步骤,请参阅 Windows 上的 Azure 文件存储入门。 若要在 Linux 节点上装载 Azure 文件共享,请参阅 如何将 Azure 文件存储与 Linux 配合使用。 若要设置持久化连接,请参阅 持久化连接到 Azure 文件。
在以下示例中,在存储帐户上创建 Azure 文件共享。 若要在头节点上装载共享,请打开命令提示符并输入以下命令:
cmdkey /add:allvhdsje.file.core.windows.net /user:allvhdsje /pass:<storageaccountkey>
net use Z: \\allvhdje.file.core.windows.net\rdma /persistent:yes
在此示例中,allvhdsje 是存储帐户名称,storageaccountkey 是存储帐户密钥,rdma 是 Azure 文件共享名称。 Azure 文件共享在头节点上被装载为 Z:。
若要在 Linux 节点上装载 Azure 文件共享,请在头节点上运行 clusrun 命令。 Clusrun 是一个有用的 HPC Pack 工具,用于在多个节点上执行管理任务。 (另请参阅本文中 适用于 Linux 节点的 Clusrun 。
打开 Windows PowerShell 窗口并输入以下命令:
clusrun /nodegroup:LinuxNodes mkdir -p /rdma
clusrun /nodegroup:LinuxNodes mount -t cifs //allvhdsje.file.core.windows.net/rdma /rdma -o vers=2.1`,username=allvhdsje`,password=<storageaccountkey>'`,dir_mode=0777`,file_mode=0777
第一个命令在 LinuxNodes 组中的所有节点上创建名为 /rdma 的文件夹。 第二个命令会将 Azure 文件共享 allvhdsjw.file.core.windows.net/rdma 装载到 /rdma 文件夹中,并将 dir 和文件模式位设置为 777。 第二个命令中,allvhdsje 是存储帐户名称,storageaccountkey 是存储帐户密钥。
注释
第二个命令中的“`”符号是 PowerShell 的转义字符。 “',”表示“,”(逗号字符)是命令的一部分。
头节点共享
或者,在 Linux 节点上装载头节点的共享文件夹。 共享提供了共享文件的最简单方法,但头节点和所有 Linux 节点必须部署在同一虚拟网络中。 下面是相关步骤。
- 在头节点上创建一个文件夹,并使用读/写权限将其共享给所有人。 例如,将头节点上的 D:\OpenFOAM 共享为 \CentOS7RDMA-HN\OpenFOAM。 此处 CentOS7RDMA-HN 是头节点的主机名。     
- 打开 Windows PowerShell 窗口并运行以下命令: - clusrun /nodegroup:LinuxNodes mkdir -p /openfoam clusrun /nodegroup:LinuxNodes mount -t cifs //CentOS7RDMA-HN/OpenFOAM /openfoam -o vers=2.1`,username=<username>`,password='<password>'`,dir_mode=0777`,file_mode=0777
第一个命令在 LinuxNodes 组中的所有节点上创建一个名为 /openfoam 的文件夹。 第二个命令将共享文件夹 //CentOS7RDMA-HN/OpenFOAM 装载到文件夹,并将 dir 和文件模式位设置为 777。 命令中的用户名和密码应该是头节点上群集用户的用户名和密码。 (请参阅 添加或删除群集用户。
注释
第二个命令中的“`”符号是 PowerShell 的转义字符。 “',”表示“,”(逗号字符)是命令的一部分。
NFS 服务器
通过 NFS 服务,可以使用 SMB 协议和基于 Linux 的计算机使用 NFS 协议在运行 Windows Server 2012作系统的计算机之间共享和迁移文件。 NFS 服务器和所有其他节点必须部署在同一虚拟网络中。 与 SMB 共享相比,它可以更好地与 Linux 节点兼容。 例如,它支持文件链接。
- 若要安装和设置 NFS 服务器,请按照 网络文件系统 First Share 端到端的服务器中的步骤作。 - 例如,使用以下属性创建名为 nfs 的 NFS 共享:         
- 打开 Windows PowerShell 窗口并运行以下命令: - clusrun /nodegroup:LinuxNodes mkdir -p /nfsshare clusrun /nodegroup:LinuxNodes mount CentOS7RDMA-HN:/nfs /nfsshared- 第一个命令在 LinuxNodes 组中的所有节点上创建名为 /nfsshared 的文件夹。 第二个命令将 NFS 共享 CentOS7RDMA-HN:/nfs 装载到该文件夹中。 此处 CentOS7RDMA-HN:/nfs 是 NFS 共享的远程路径。 
如何提交作业
可通过多种方式将作业提交到 HPC Pack 群集:
- HPC 群集管理器或 HPC 作业管理器 GUI
- HPC Web 门户
- REST API
通过 HPC Pack GUI 工具和 HPC Web 门户将作业提交到 Azure 中的群集与 Windows 计算节点的作业提交相同。 请参阅 HPC Pack 作业管理器 以及如何 从本地客户端计算机提交作业。
若要通过 REST API 提交作业,请参阅 在 Microsoft HPC Pack 中使用 REST API 创建和提交作业。 若要从 Linux 客户端提交作业,另请参阅 HPC Pack SDK 中的 Python 示例。
适用于 Linux 节点的 Clusrun
HPC Pack clusrun 工具可用于通过命令提示符或 HPC 群集管理器在 Linux 节点上执行命令。 下面是一些基本示例。
- 显示群集中所有节点上的当前用户名。 - clusrun whoami
- 在 linuxnodes 组的所有节点上安装具有 yum 的 gdb 调试器工具,然后在 10 分钟后重启节点。 - clusrun /nodegroup:linuxnodes yum install gdb –y; shutdown –r 10
- 创建一个 shell 脚本,用于在群集中的每个 Linux 节点上逐一显示数字 1 到 10,每个数字显示一秒,运行它,并立即显示节点的输出。 - clusrun /interleaved /nodegroup:linuxnodes echo \"for i in {1..10}; do echo \\\"\$i\\\"; sleep 1; done\" ^> script.sh; chmod +x script.sh; ./script.sh
注释
可能需要在 clusrun 命令中使用某些转义字符。 如本示例所示,在命令提示符中使用 ^ 对“>”符号进行转义。
后续步骤
- 尝试将群集纵向扩展到更多节点,或尝试在群集上运行 Linux 工作负荷。 有关示例,请参阅在 Azure 中的 Linux 计算节点上使用 Microsoft HPC Pack 运行 NAMD。
- 尝试使用 支持 RDMA 的计算密集型 VM 的群集来运行 MPI 工作负荷。 有关示例,请参阅在 Azure 中的 Linux RDMA 群集上使用 Microsoft HPC Pack 运行 OpenFOAM。
- 如果有兴趣在本地 HPC Pack 群集中使用 Linux 节点,请参阅 TechNet 指南。