使用 HPC Pack IaaS 部署脚本创建 Windows 高性能计算 (HPC) 群集

运行 HPC Pack IaaS 部署 PowerShell 脚本,以便在 Azure 虚拟机中部署适用于 Windows 工作负荷的完整 HPC Pack 2012 R2 群集。 群集包含运行 Windows Server 和 Microsoft HPC Pack 的已加入 Active Directory 的头节点,以及你指定的其他 Windows 计算资源。 你还可以使用 Azure Resource Manager 模板来部署 HPC Pack 群集。 有关示例,请参阅创建 HPC 群集使用自定义计算节点映像创建 HPC 群集

Important

本文介绍的 PowerShell 脚本在 Azure 中使用经典部署模型创建 Microsoft HPC Pack 2012 R2 群集。 Azure 建议大多数新部署使用 Resource Manager 模型。 此外,本文中所述的脚本不支持 HPC Pack 2016。

根据你的环境和选择,该脚本可以创建所有群集基础结构,包括 Azure 虚拟网络、存储帐户、云服务、域控制器、远程或本地 SQL 数据库、头节点和其他群集节点。 或者,该脚本可以使用预先存在的 Azure 基础结构仅创建 HPC 群集节点。

有关规划 HPC Pack 群集的背景信息,请参阅 HPC Pack 2012 R2 TechNet 库中的产品评估和规划入门内容。

先决条件

  • Azure 订阅:可以使用 Azure 全球或 Azure 中国服务中的订阅。 订阅限制会影响可以部署的群集节点数量和类型。 有关信息,请参阅 Azure 订阅和服务限制、配额和约束
  • 安装并配置了 Azure PowerShell 0.8.10 或更高版本的 Windows 客户端计算机:有关安装说明和用于连接到 Azure 订阅的步骤,请参阅 Azure PowerShell 入门
  • HPC Pack IaaS 部署脚本:从 Microsoft 下载中心下载并解压缩最新版本的脚本。 通过运行 New-HPCIaaSCluster.ps1 -Version检查脚本的版本。 本文基于版本 4.5.2 的脚本。
  • 脚本配置文件:创建 XML 文件,以供脚本用来配置 HPC 群集。 有关信息和示例,请参阅本文后面的章节和部署脚本随附的文件 Manual.rtf。

语法

New-HPCIaaSCluster.ps1 [-ConfigFile] <String> [-AdminUserName]<String> [[-AdminPassword] <String>] [[-HPCImageName] <String>] [[-LogFile] <String>] [-Force] [-NoCleanOnFailure] [-PSSessionSkipCACheck] [<CommonParameters>]

Note

以管理员身份运行脚本。

Parameters

  • 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。

    Note

    指定无效的 HPC Pack 映像会导致部署失败。

  • LogFile(可选):指定部署日志文件路径。 如果未指定,脚本会在运行脚本的计算机的 temp 目录中创建一个日志文件。
  • Force(可选):隐藏所有确认提示。
  • NoCleanOnFailure(可选):指定不删除未成功部署的 Azure VM。 在重新运行脚本以继续部署之前,请手动删除这些 VM,否则部署可能失败。
  • PSSessionSkipCACheck(可选):对于每个包含此脚本所部署的 VM 的云服务,Azure 会自动生成自签名证书,云服务中的所有 VM 使用此证书作为默认的 Windows 远程管理 (WinRM) 证书。 若要在这些 Azure VM 中部署 HPC 功能,脚本默认会在客户端计算机的“本地计算机\受信任的根证书颁发机构”存储中临时安装这些证书,以隐藏执行脚本期间发生的“不受信任的 CA”安全错误。 完成脚本后将删除这些证书。 如果指定此参数,则不会在客户端计算机中安装证书,并且会隐藏安全警告。

    Important

    对于生产部署,不建议指定此参数。

示例

以下示例将使用配置文件 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

以下配置文件将部署 1 个 HPC Pack 群集,其中包含 1 个具有本地数据库的头节点和 5 个运行 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>China North</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 个具有本地数据库的头节点和 12 个应用了 BGInfo VM 扩展的计算节点。 域林中的所有 VM 均已禁用 Windows 更新的自动安装。 所有云服务直接在“中国东部”位置创建。 计算节点是在 3 个云服务和 3 个存储帐户中创建的:MyHPCCNService01 和 mycnstorage01 中的 MyHPCCN-0001 到 MyHPCCN-0005;MyHPCCNService02 和 mycnstorage02 中的 MyHPCCN-0006 到 MyHPCCN0010;MyHPCCNService03 和 mycnstorage03 中的 MyHPCCN-0011 到 MyHPCCN-0012。 计算节点基于从计算节点捕获的现有专用映像创建。 已启用自动扩展和收缩服务,并采用默认的扩展和收缩间隔。

<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
  <Subscription>
    <SubscriptionName>Subscription-1</SubscriptionName>
    <StorageAccount>mystorageaccount</StorageAccount>
  </Subscription>
  <Location>China East</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 群集。 该群集包含 1 个头节点、1 个具有 500 GB 数据磁盘的数据库服务器、2 个运行 Windows Server 2012 R2 操作系统的中转站节点,以及 5 个运行 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>China East</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>A7</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 群集。 该群集包含 2 个具有本地数据库的头节点,此外还将创建 2 个 Azure 节点模板并为 Azure 节点模板 AzureTemplate1创建 3 个中等大小的 Azure 节点。 配置头节点后,将在其上运行脚本文件。

<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
  <Subscription>
    <SubscriptionName>Subscription-1</SubscriptionName>
    <StorageAccount>mystorageaccount</StorageAccount>
  </Subscription>
  <AffinityGroup>MyAffinityGroup</AffinityGroup>
  <Location>China East</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 管理器,然后双击“转发器”*。

后续步骤