使用 HPC Pack IaaS 部署脚本创建 Windows 高性能计算(HPC)群集
重要
经典 VM 将于 2023 年 3 月 1 日停用。
如果使用 ASM 中的 IaaS 资源,请在 2023 年 3 月 1 日完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器中的许多增强功能。
有关详细信息,请参阅 将 IaaS 资源在 2023 年 3 月 1 日前迁移到 Azure 资源管理器。
运行 HPC Pack IaaS 部署 PowerShell 脚本,为 Azure 虚拟机中的 Windows 工作负荷部署完整的 HPC Pack 2012 R2 群集。 群集由运行 Windows Server 和 Microsoft HPC Pack 的 Active Directory 联接的头节点以及指定的其他 Windows 计算资源组成。 若要在 Azure 中为 Linux 工作负载部署 HPC Pack 群集,请参阅 使用 HPC Pack IaaS 部署脚本创建 Linux HPC 群集。
重要
本文中所述的 PowerShell 脚本使用经典部署模型在 Azure 中创建Microsoft HPC Pack 2012 R2 群集。 Microsoft 建议大多数新部署使用 Resource Manager 模型。 此外,本文中所述的脚本不支持 HPC Pack 2016。 有关 HPC Pack 2012 R2 和 HPC Pack 2016 的资源管理器模板的信息,请参阅 Azure 中的HPC Pack 群集部署选项。
根据环境和选择,脚本可以创建所有群集基础结构,包括 Azure 虚拟网络、存储帐户、云服务、域控制器、远程或本地 SQL 数据库、头节点和其他群集节点。 或者,该脚本可以使用预先存在的 Azure 基础结构并仅创建 HPC 群集节点。
有关规划 HPC Pack 群集的背景信息,请参阅 HPC Pack 2012 R2 TechNet 库中的 产品评估和规划 和 入门 内容。
先决条件
- Azure 订阅:可以在 Azure 全球或 Azure 中国服务中使用订阅。 订阅限制会影响可以部署的群集节点的数量和类型。 有关信息,请参阅 Azure 订阅和服务限制、配额和约束。
- 已安装和配置 Azure PowerShell 0.8.10 或更高版本的 Windows 客户端计算机:请参阅 Azure PowerShell 使用指南,以获取安装说明和连接到 Azure 订阅的步骤。
-
HPC Pack IaaS 部署脚本:从 Microsoft下载中心下载和解压缩最新版本的脚本。 通过运行
New-HPCIaaSCluster.ps1 –Version
来检查脚本的版本。 本文基于脚本版本 4.5.2。 - 脚本配置文件:创建脚本用于配置 HPC 群集的 XML 文件。 有关信息和示例,请参阅本文后面的部分以及部署脚本随附的文件Manual.rtf。
语法
New-HPCIaaSCluster.ps1 [-ConfigFile] <String> [-AdminUserName]<String> [[-AdminPassword] <String>] [[-HPCImageName] <String>] [[-LogFile] <String>] [-Force] [-NoCleanOnFailure] [-PSSessionSkipCACheck] [<CommonParameters>]
注释
以管理员身份运行该脚本。
参数
ConfigFile:指定要描述 HPC 群集的配置文件的文件路径。 有关配置文件的更多信息,请参阅本主题,或在包含脚本的文件夹中查找Manual.rtf文件。
AdminUserName:指定用户名。 如果域林是由脚本创建的,那么这将成为所有 VM 的本地管理员的用户名和域管理员名称。 如果域林已存在,则指定域用户作为本地管理员用户名来安装 HPC Pack。
AdminPassword:指定管理员的密码。 如果未在命令行中指定,脚本会提示输入密码。
HPCImageName(可选):指定用于部署 HPC 群集的 HPC Pack VM 映像名称。 它必须是 Microsoft 提供的 Azure 市场的 HPC Pack 映像。 如果未指定(通常是推荐的),脚本将选择最新发布的 HPC Pack 2012 R2 镜像。 最新映像基于安装了 HPC Pack 2012 R2 Update 3 的 Windows Server 2012 R2 Datacenter。
注释
如果未指定有效的 HPC Pack 映像,则部署会失败。
LogFile(可选):指定部署日志文件路径。 如果未指定,脚本将在运行脚本的计算机的临时目录中创建日志文件。
强制(可选):取消所有确认提示。
NoCleanOnFailure(可选):指定未成功部署的 Azure 虚拟机不会被移除。 在重新运行脚本以继续部署之前手动删除这些 VM,否则部署可能会失败。
PSSessionSkipCACheck(可选):对于使用此脚本部署的 VM 的每个云服务,Azure 会自动生成自签名证书,云服务中的所有 VM 将此证书用作默认的 Windows 远程管理(WinRM)证书。 若要在这些 Azure VM 中部署 HPC 功能,默认情况下,该脚本会在客户端计算机的本地计算机\受信任的根证书颁发机构存储中临时安装这些证书,以在脚本执行期间禁止显示“不受信任的 CA”安全错误。 脚本完成后,将删除证书。 如果指定此参数,则不会在客户端计算机中安装证书,并禁止显示安全警告。
重要
不建议对生产部署使用此参数。
示例
以下示例使用配置文件 MyConfigFile.xml创建 HPC Pack 群集,并指定用于安装群集的管理员凭据。
.\New-HPCIaaSCluster.ps1 –ConfigFile MyConfigFile.xml -AdminUserName <username> –AdminPassword <password>
其他注意事项
- 该脚本可以选择通过 HPC Pack Web 门户或 HPC Pack REST API 启用作业提交。
- 如果要安装其他软件或配置其他设置,脚本可以选择在头节点上运行自定义预配置脚本和后配置脚本。
配置文件
部署脚本的配置文件是一个 XML 文件。 架构文件 HPCIaaSClusterConfig.xsd 位于 HPC Pack IaaS 部署脚本文件夹中。 IaaSClusterConfig 是配置文件的根元素,其中包含部署脚本文件夹中的文件Manual.rtf中详细介绍的子元素。
示例配置文件
在以下示例中,请将自己的值替换为订阅 ID 或名称以及帐户和服务名称。
示例 1
以下配置文件部署一个 HPC Pack 群集,该群集具有具有本地数据库的头节点和运行 Windows Server 2012 R2作系统的五个计算节点。 所有云服务都直接在美国西部位置创建。 头节点充当域林的域控制器。
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
<Subscription>
<SubscriptionId>08701940-C02E-452F-B0B1-39D50119F267</SubscriptionId>
<StorageAccount>mystorageaccount</StorageAccount>
</Subscription>
<Location>West US</Location>
<VNet>
<VNetName>MyVNet</VNetName>
<SubnetName>Subnet-1</SubnetName>
</VNet>
<Domain>
<DCOption>HeadNodeAsDC</DCOption>
<DomainFQDN>hpc.local</DomainFQDN>
</Domain>
<Database>
<DBOption>LocalDB</DBOption>
</Database>
<HeadNode>
<VMName>MyHeadNode</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>ExtraLarge</VMSize>
</HeadNode>
<ComputeNodes>
<VMNamePattern>MyHPCCN-%1000%</VMNamePattern>
<ServiceName>MyHPCCNService</ServiceName>
<VMSize>Medium</VMSize>
<NodeCount>5</NodeCount>
<OSVersion>WindowsServer2012R2</OSVersion>
</ComputeNodes>
</IaaSClusterConfig>
示例 2
以下配置文件在现有域林中部署 HPC Pack 群集。 群集有 1 个头节点,其中包含本地数据库,以及应用了 BGInfo VM 扩展的 12 个计算节点。 为域林中的所有虚拟机禁用了 Windows 更新的自动安装。 所有云服务直接在东亚位置创建。 计算节点在三个云服务和三个存储帐户中创建:MyHPCCN-0001MyHPCCN-0005MyHPCCNService01 和 mycnstorage01;MyHPCCN-0006 到 MyHPCCNService02 和 mycnstorage02中 MyHPCCN0010;MyHPCCN-0011MyHPCCN-0012,MyHPCCNService03 和 mycnstorage03)。 计算节点是从从计算节点捕获的现有专用映像创建的。 启用自动增长和收缩服务,使用默认的增长和收缩间隔。
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
<Subscription>
<SubscriptionName>Subscription-1</SubscriptionName>
<StorageAccount>mystorageaccount</StorageAccount>
</Subscription>
<Location>East Asia</Location>
<VNet>
<VNetName>MyVNet</VNetName>
<SubnetName>Subnet-1</SubnetName>
</VNet>
<Domain>
<DCOption>NewDC</DCOption>
<DomainFQDN>hpc.local</DomainFQDN>
<DomainController>
<VMName>MyDCServer</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>Large</VMSize>
</DomainController>
<NoWindowsAutoUpdate />
</Domain>
<Database>
<DBOption>LocalDB</DBOption>
</Database>
<HeadNode>
<VMName>MyHeadNode</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>ExtraLarge</VMSize>
</HeadNode>
<Certificates>
<Certificate>
<Id>1</Id>
<PfxFile>d:\mytestcert1.pfx</PfxFile>
<Password>MyPsw!!2</Password>
</Certificate>
</Certificates>
<ComputeNodes>
<VMNamePattern>MyHPCCN-%0001%</VMNamePattern>
<ServiceNamePattern>MyHPCCNService%01%</ServiceNamePattern>
<MaxNodeCountPerService>5</MaxNodeCountPerService>
<StorageAccountNamePattern>mycnstorage%01%</StorageAccountNamePattern>
<VMSize>Medium</VMSize>
<NodeCount>12</NodeCount>
<ImageName HPCPackInstalled=”true”>MyHPCComputeNodeImage</ImageName>
<VMExtensions>
<VMExtension>
<ExtensionName>BGInfo</ExtensionName>
<Publisher>Microsoft.Compute</Publisher>
<Version>1.*</Version>
</VMExtension>
</VMExtensions>
</ComputeNodes>
<AutoGrowShrink>
<CertificateId>1</CertificateId>
</AutoGrowShrink>
</IaaSClusterConfig>
示例 3
以下配置文件在现有域林中部署 HPC Pack 群集。 群集包含一个头节点、一个具有 500 GB 数据磁盘的数据库服务器、两个运行 Windows Server 2012 R2作系统的代理节点和五个运行 Windows Server 2012 R2作系统的计算节点。 云服务 MyHPCCNService 在地缘组 MyIBAffinityGroup中创建,其他云服务在地缘组中创建,MyAffinityGroup。 HPC 作业计划程序 REST API 和 HPC Web 门户在头节点上启用。
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
<Subscription>
<SubscriptionName>Subscription-1</SubscriptionName>
<StorageAccount>mystorageaccount</StorageAccount>
</Subscription>
<AffinityGroup>MyAffinityGroup</AffinityGroup>
<Location>East Asia</Location>
<VNet>
<VNetName>MyVNet</VNetName>
<SubnetName>Subnet-1</SubnetName>
</VNet>
<Domain>
<DCOption>ExistingDC</DCOption>
<DomainFQDN>hpc.local</DomainFQDN>
</Domain>
<Database>
<DBOption>NewRemoteDB</DBOption>
<DBVersion>SQLServer2014_Enterprise</DBVersion>
<DBServer>
<VMName>MyDBServer</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>ExtraLarge</VMSize>
<DataDiskSizeInGB>500</DataDiskSizeInGB>
</DBServer>
</Database>
<HeadNode>
<VMName>MyHeadNode</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>ExtraLarge</VMSize>
<EnableRESTAPI />
<EnableWebPortal />
</HeadNode>
<ComputeNodes>
<VMNamePattern>MyHPCCN-%0000%</VMNamePattern>
<ServiceName>MyHPCCNService</ServiceName>
<VMSize>A8</VMSize>
<NodeCount>5</NodeCount>
<AffinityGroup>MyIBAffinityGroup</AffinityGroup>
</ComputeNodes>
<BrokerNodes>
<VMNamePattern>MyHPCBN-%0000%</VMNamePattern>
<ServiceName>MyHPCBNService</ServiceName>
<VMSize>Medium</VMSize>
<NodeCount>2</NodeCount>
</BrokerNodes>
</IaaSClusterConfig>
示例 4
以下配置文件在现有域林中部署 HPC Pack 群集。 群集有两个头节点,具有本地数据库,创建了两个 Azure 节点模板,并为 Azure 节点模板 AzureTemplate1创建了三个中型的 Azure 节点。 配置头节点后,脚本文件在头节点上运行。
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
<Subscription>
<SubscriptionName>Subscription-1</SubscriptionName>
<StorageAccount>mystorageaccount</StorageAccount>
</Subscription>
<AffinityGroup>MyAffinityGroup</AffinityGroup>
<Location>East Asia</Location>
<VNet>
<VNetName>MyVNet</VNetName>
<SubnetName>Subnet-1</SubnetName>
</VNet>
<Domain>
<DCOption>ExistingDC</DCOption>
<DomainFQDN>hpc.local</DomainFQDN>
</Domain>
<Database>
<DBOption>LocalDB</DBOption>
</Database>
<HeadNode>
<VMName>MyHeadNode</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>ExtraLarge</VMSize>
<PostConfigScript>c:\MyHNPostActions.ps1</PostConfigScript>
</HeadNode>
<Certificates>
<Certificate>
<Id>1</Id>
<PfxFile>d:\mytestcert1.pfx</PfxFile>
<Password>MyPsw!!2</Password>
</Certificate>
<Certificate>
<Id>2</Id>
<PfxFile>d:\mytestcert2.pfx</PfxFile>
</Certificate>
</Certificates>
<AzureBurst>
<AzureNodeTemplate>
<TemplateName>AzureTemplate1</TemplateName>
<SubscriptionId>bb9252ba-831f-4c9d-ae14-9a38e6da8ee4</SubscriptionId>
<CertificateId>1</CertificateId>
<ServiceName>mytestsvc1</ServiceName>
<StorageAccount>myteststorage1</StorageAccount>
<NodeCount>3</NodeCount>
<RoleSize>Medium</RoleSize>
</AzureNodeTemplate>
<AzureNodeTemplate>
<TemplateName>AzureTemplate2</TemplateName>
<SubscriptionId>ad4b9f9f-05f2-4c74-a83f-f2eb73000e0b</SubscriptionId>
<CertificateId>1</CertificateId>
<ServiceName>mytestsvc2</ServiceName>
<StorageAccount>myteststorage2</StorageAccount>
<Proxy>
<UsesStaticProxyCount>false</UsesStaticProxyCount>
<ProxyRatio>100</ProxyRatio>
<ProxyRatioBase>400</ProxyRatioBase>
</Proxy>
<OSVersion>WindowsServer2012</OSVersion>
</AzureNodeTemplate>
</AzureBurst>
</IaaSClusterConfig>
故障排除
“VNet 不存在”错误 - 如果在一个订阅下同时运行脚本以在 Azure 中部署多个群集,则一个或多个部署可能会失败,并出现“VNet VNet_Name 不存在”错误。 如果发生此错误,请再次针对失败的部署运行脚本。
从 Azure 虚拟网络访问 Internet 时出现问题 - 如果使用部署脚本创建具有新域控制器的群集,或者手动将头节点 VM 提升到域控制器,则可能会遇到将 VM 连接到 Internet 时遇到的问题。 如果在域控制器上自动配置转发器 DNS 服务器,并且此转发器 DNS 服务器无法正确解决,则可能会出现此问题。
若要解决此问题,请登录到域控制器,并删除转发器配置设置或配置有效的转发器 DNS 服务器。 若要配置此设置,请在服务器管理器中单击 工具>DNS 打开 DNS 管理器,然后双击 转发器。
从计算密集型 VM 访问 RDMA 网络时出现问题 - 如果使用支持 RDMA 的大小(例如 A8 或 A9)来添加 Windows Server 计算节点或中转节点 VM,可能会遇到将这些 VM 连接到 RDMA 应用网络的问题。 出现此问题的一个原因是在将 VM 添加到群集时未正确安装 HpcVmDrivers 扩展。 例如,扩展可能停滞在安装状态。
若要解决此问题,请先检查 VM 中的扩展状态。 如果扩展未正确安装,请尝试从 HPC 群集中删除节点,然后再次添加节点。 例如,可以通过在头节点上运行 Add-HpcIaaSNode.ps1 脚本来添加计算节点 VM。
后续步骤
- 尝试在群集上运行测试工作负荷。 有关示例,请参阅 HPC Pack 入门指南。
- 有关编写群集部署和运行 HPC 工作负荷的教程,请参阅 Azure 中的 HPC Pack 群集入门,以运行 Excel 和 SOA 工作负荷。
- 尝试使用 HPC Pack 的工具启动、停止、添加和删除创建的群集中的计算节点。 请参阅 管理 AzureHPC Pack 群集中的计算节点。
- 若要设置从本地计算机将作业提交到群集,请参阅 将 HPC 作业从本地计算机提交到 Azure中的 HPC Pack 群集。