从 HPC Pack 群集突发到 Azure IaaS VM
使用 Microsoft HPC Pack 添加 Azure IaaS 计算节点的要求
本部分介绍将 Azure IaaS 计算节点添加到 HPC 群集的要求。
Microsoft HPC Pack 群集的支持版本
若要在 HPC Pack 群集上部署 Azure IaaS 计算节点,必须运行 Microsoft HPC Pack 2016 Update 1 或更高版本。
如果要完全在 Azure 中创建新的 HPC Pack 群集,请转到 在 Azure 中部署 HPC Pack 2016 群集 ,然后选择要部署的模板。 否则,需要先在本地创建 HPC Pack 群集。 有关混合 HPC Pack 群集的安装说明,请参阅以下内容:
Azure 订阅帐户
必须获取 Azure 订阅或被分配为订阅的所有者角色。
注意
对于每个 Azure 订阅,有些限制 (也称为配额) 。 虚拟机核心具有区域总限制以及每个大小系列的区域 (Dv2、F 等 ) 单独强制实施的限制。 可以转到Azure 门户检查 Azure 订阅的配额和使用情况。 如果要提高配额, 请提出联机客户支持请求。
网络基础结构
需要为 Azure IaaS 计算节点提供 Azure 虚拟网络和子网。
如果计划完全在 Azure 中创建 HPC Pack 群集,则必须在单个 Azure 虚拟网络中创建头节点 () 和 Azure IaaS 计算节点。
但是,如果计划在本地企业网络中创建具有头节点 () 的混合 HPC Pack 群集,并在 Azure 中创建 Azure IaaS 计算节点,则必须配置从本地网络到 Azure 虚拟网络的 站点到站点 VPN 或 ExpressRoute 连接。 头节点 () 还必须能够通过 Internet 连接到 Azure 服务。 可能需要联系网络管理员来配置此连接。
为 Azure 虚拟网络配置网络安全组
建议为 Azure 虚拟网络子网配置网络安全组。 以下 HPC 端口表 列出了每种 HPC 节点类型的侦听端口。 有关端口的更多详细信息,请参阅 此文档。
角色 | 端口 | 协议 |
---|---|---|
Linux 计算节点 | 40000, 40002 | TCP |
Windows 计算节点 | 1856, 6729, 6730, 7998, 8677, 9096, 9100-9611, 42323, 42324 | TCP |
Broker 节点 | Windows 计算节点的 9087、9091、9095、80、443 和端口 | TCP |
头节点 | 445、5800、5802、5969、5970、5974、5999、7997、9090、9092、9094、9892-9894 以及 Broker 节点的端口; 本地数据库的 1433;Service Fabric 群集 10100、10101、10200、10300、10400 (高可用性) | TCP |
头节点 | 9894 | UDP |
对于 Azure 中具有头节点 () 的 HPC Pack 群集
对于完全在 Azure 中的 HPC Pack 群集,必须配置以下 NSG 规则。
1. 入站安全规则
默认入站安全规则 AllowVNetInBound 允许所有入站虚拟网络内流量。 但是,如果已添加任何规则来拒绝具有源 VirtualNetwork 或更高优先级 的任意 流量,请确保 HPC 端口表 中列出的端口不会被拒绝。
如果要通过 Internet 从本地客户端提交作业,则必须添加以下入站安全规则。
名称 | 端口 | 协议 | 源 | 目标 | 操作 |
---|---|---|---|---|---|
AllowHttpsInBound | 443 | TCP | 任意 | 任意 | Allow |
AllowHpcSoaInbound | 9087,9090,9091,9094 | TCP | 任意 | 任意 | Allow |
2. 外向安全规则
默认出站安全规则 AllowVNetOutBound 允许所有出站虚拟网络内流量。 但是,如果已添加任何规则来拒绝具有 Destination VirtualNetwork 或更高优先级 的任意 流量,请确保 HPC 端口表 中列出的端口不会被拒绝。
默认出站安全规则 AllowInternetOutBound 允许发到 Internet 的所有出站流量。 但是,如果已添加任何规则来拒绝具有目标 Internet 或更高优先级 的任何 流量,则必须添加以下具有更高优先级的出站规则:
名称 | 端口 | 协议 | 源 | 目标 | 操作 |
---|---|---|---|---|---|
AllowKeyVaultOutBound | 任意 | 任意 | VirtualNetwork | AzureKeyVault | Allow |
AllowAzureCloudOutBound | 任意 | 任意 | VirtualNetwork | AzureCloud | 允许 |
AllowHttpsOutBound | 443 | TCP | VirtualNetwork | 任意 | Allow |
对于具有本地头节点的混合 HPC Pack 群集, ()
对于具有本地头节点 () 和代理节点 () 和 Azure IaaS 计算节点的混合 HPC Pack 群集,必须从 Azure IaaS 计算节点的角度配置以下 NSG 规则。
1. 入站安全规则
默认入站安全规则 AllowVNetInBound 允许所有入站虚拟网络内流量。 但是,如果已添加任何规则来拒绝具有源 VirtualNetwork 或更高优先级的任意流量,请确保不会拒绝 HPC 端口表中列出的 Linux 计算节点和 Windows 计算节点的端口。
注意
如果公司网络和 Azure 虚拟网络之间存在防火墙,请配置 出站 防火墙规则,以从头节点 () 的角度允许这些端口。
2. 外向安全规则
默认出站安全规则 AllowVNetOutBound 允许所有出站虚拟网络内流量。 但是,如果已添加任何规则来拒绝具有 Destination VirtualNetwork 或更高优先级 的任何 流量,则必须添加以下具有更高优先级的出站规则,以便 Azure IaaS 计算节点可以连接到本地头节点 () 。
名称 | 端口 | 协议 | 源 | 目标 | 操作 |
---|---|---|---|---|---|
AllowHpcIntraVNetTcpOutBound | 443, 5970, 6729, 6730, 8677, 9892, 9893, 9894 | TCP | 任意 | VirtualNetwork | 允许 |
AllowHpcIntraVNetUdpOutBound | 9894 | UDP | 任意 | VirtualNetwork | Allow |
注意
如果公司网络和 Azure 虚拟网络之间存在防火墙,请配置 入站 防火墙规则,以从头节点 () 的角度允许这些端口。
默认出站安全规则 AllowInternetOutBound 允许发到 Internet 的所有出站流量。 但是,如果已添加任何规则来拒绝具有目标 Internet 或更高优先级 的任何 流量,则必须添加以下具有更高优先级的出站规则:
名称 | 端口 | 协议 | 源 | 目标 | 操作 |
---|---|---|---|---|---|
AllowKeyVaultOutBound | 任意 | 任意 | VirtualNetwork | AzureKeyVault | Allow |
AllowAzureCloudOutBound | 任意 | 任意 | VirtualNetwork | AzureCloud | 允许 |
AllowHttpsOutBound | 443 | TCP | VirtualNetwork | 任意 | Allow |
HPC Pack 头节点 () 可以访问以下公共 URL ,请参阅设置 Azure 部署配置 步骤 和创建和管理 Azure IaaS 计算节点 步骤,应将它们添加到本地防火墙的允许列表中。
https://management.core.windows.net
https://login.microsoftonline.com
https://hpcazuresasdispatcher.azurewebsites.net
https://hpcazureconsumptionsb.servicebus.windows.net
https://*.vault.azure.net
https://*.microsoft.com
https://*.msauth.net
https://*.msftauth.net
https://*.core.windows.net
步骤 1。 配置群集以支持 Azure IaaS 计算节点的部署
在 头节点上打开 HPC 群集管理器,在 “部署待办事项列表”中完成所有三个 必需部署任务。 提供的 安装凭据 的用户名和密码将用作 Azure 虚拟机的管理员用户名和密码。
步骤 1.1 设置 Azure 部署配置
可以使用 HPC 群集管理器或 PowerShell 命令设置 Azure 部署配置。
使用 HPC 群集管理器设置 Azure 部署配置
注意
本文中的 “设置 Azure 部署配置” 向导基于 HPC Pack 2016 Update 2 (及更高版本) 。
可以单击“ 设置 Azure 部署配置” ,然后按照向导完成配置。
1.配置 Azure 服务主体
HPC Pack 服务使用 Azure 服务主体来预配、启动、停止和删除 Azure IaaS VM。 若要配置 Azure 服务主体,请单击“Azure 服务主体”页上的“登录”按钮登录到 Azure 帐户。
注意
应使用 Azure AD) 帐户Microsoft Entra ID (登录。 如果使用个人 Microsoft 帐户登录,则会遇到错误“此用户名可能不正确。 请确保键入正确。 否则,请与管理员联系。”
若要确认帐户类型,请登录到 Azure 门户,单击Microsoft Entra ID ->“用户和组”,然后找到帐户。 如果其标识是 MicrosoftAccount 而不是目录的域名,则你的帐户是 Microsoft 个人帐户。 工作原理是查找帐户 的用户主体名称 并使用它登录。
如果你的帐户有权限访问多个 Azure AD 租户,请在右上角单击该帐户, 并将门户会话设置为所需的租户。 必须具有访问目录中的资源的权限。
单击左侧“服务”导航窗格中的“Microsoft Entra ID”,单击“用户和组”,并确保已创建或配置用户帐户
如果有多个 Azure 订阅与 Azure 帐户相关联,请单击“ 选择” 按钮以选择用于部署 Azure IaaS 计算节点的订阅。
可以从 “服务主体名称” 列表中选择现有的 Azure 服务主体,然后单击按钮“ 浏览 ”以选择用于创建 Azure 服务主体的正确 管理证书 ,也可以单击“ 创建 ”按钮创建新的 Azure 服务主体。
如果选择创建新的 Azure 服务主体,请在“ 创建 Azure 服务主体 ”对话框中,为新的 Azure 服务主体指定一个友好的唯一 显示名称 ,然后单击“ 浏览 ”以从本地计算机\个人存储中选择 证书 ,或单击“ 导入 ”以导入 PFX 格式的证书或生成新的自签名证书。 然后单击“ 确定 ”创建 Azure 服务主体。
注意
Azure 服务主体的证书必须与用于保护 HPC 节点之间的通信的证书不同。
若要创建 Azure 服务主体,Azure 帐户必须是 Azure 订阅的 所有者 角色,默认情况下,Azure 服务主体将被授予 Azure 订阅的 参与者 角色,可以参考 HPC Pack 群集中 Azure 资源的访问控制 ,根据用户方案手动重新配置 Azure 服务主体的访问权限。
2. 指定 Azure 虚拟网络
在 “Azure 虚拟网络 ”页上,指定将在其中创建 Azure IaaS 计算节点的 Azure 虚拟网络的信息。
Azure 位置:虚拟网络所在的 Azure 位置
资源组名称:在其中创建虚拟网络的资源组
虚拟网络名称:将在其中创建 Azure IaaS 计算节点的虚拟网络的名称。
子网名称:将在其中创建 Azure IaaS 计算节点的子网的名称。
注意
指定的虚拟网络必须与头节点所在的本地网络建立站点到站点 VPN 或 Express Route 连接。
3.配置 Azure 密钥保管库 证书
HPC Pack 服务使用 X.509 证书来保护 HPC 节点通信。 因此,我们需要将此证书导入 Azure 密钥保管库,以便在预配期间将其安装到 Azure IaaS VM。 在“Azure 密钥保管库证书”页上,单击“选择”按钮,选择 Azure 密钥保管库名称和机密名称(如果已创建 Azure 密钥保管库机密)。 或者单击“ 创建 ”按钮创建新按钮。
如果选择创建新的密钥保管库机密,可以从“保管库名称”列表中选择现有的 Azure 密钥保管库名称,或单击“创建”创建新的 Azure 密钥保管库。 然后指定一个友好的 机密名称,单击“ 浏览 ”或“ 导入 ”以选择正确的证书。
注意
如果在头节点上使用自签名证书 (HPC 节点通信) ,则必须将头节点安装期间使用的证书 () 相同的证书上传到 Azure 密钥保管库 机密。 如果未能这样做,则由于不受信任的证书问题,头节点 () 无法访问 Azure IaaS 计算节点。 可以使用以下 PowerShell 命令获取用于节点通信的证书指纹: Get-HPCClusterRegistry -propertyName SSLThumbprint
查看设置并单击“ 完成 ”以完成配置。
使用 PowerShell 设置 Azure 部署配置
还可以选择运行以下 PowerShell 命令来设置 Azure 部署配置(如果已有):
- 创建了 Azure 服务主体和 Azure 密钥保管库证书。
- 在所有头节点计算机上安装了 Azure 服务主体的证书到 本地计算机\个人 证书存储 ,并具有私钥 。
Add-PSSnapin Microsoft.Hpc
# Set Azure subscription and Service Principal information
Set-HpcClusterRegistry -PropertyName SubscriptionId -PropertyValue <subscriptionId>
Set-HpcClusterRegistry -PropertyName TenantId -PropertyValue <tenantId>
Set-HpcClusterRegistry -PropertyName ApplicationId -PropertyValue <ServiceprincipalApplicationId>
Set-HpcClusterRegistry -PropertyName Thumbprint -PropertyValue <ServiceprincipalCertThumbprint>
# Set Virtual network information
Set-HpcClusterRegistry -PropertyName VNet -PropertyValue <VNetName>
Set-HpcClusterRegistry -PropertyName Subnet -PropertyValue <SubnetName>
Set-HpcClusterRegistry -PropertyName Location -PropertyValue <VNetLocation>
Set-HpcClusterRegistry -PropertyName ResourceGroup -PropertyValue <VNetResourceGroup>
# Set Azure Key vault certificate
Set-HpcKeyVaultCertificate -ResourceGroup <KeyVaultResourceGroupName> -CertificateUrl <KeyVaultSecretUrlWithVersion> -CertificateThumbprint <KeyVaultCertificateThumbprint>
步骤 1.2 配置其他群集属性
如果计划在头节点 () 找到 的其他子网中创建未加入域的 Azure IaaS Windows 计算节点或 Linux 计算 节点,请在 头节点上 运行以下 PowerShell 命令,使群集为不同子网中的节点添加主机条目。 如果未能这样做,则无法访问头节点 () ,因为头节点 () 无法解析其主机名。
Set-HpcClusterRegistry -PropertyName HostFileForOtherSubnet -PropertyValue 1
if($env:CCP_CONNECTIONSTRING -like "*,*,*") {
Connect-ServiceFabricCluster
$opId = [Guid]::NewGuid()
Start-ServiceFabricPartitionRestart -OperationId $opId -RestartPartitionMode AllReplicasOrInstances -ServiceName fabric:/HpcApplication/ManagementStatelessService -ErrorAction Stop
}
如果运行的是 HPC Pack 2016 Update 2 或更早版本,并计划创建 使用 Azure IaaS 节点模板创建的 Azure IaaS Linux 计算节点, 请在头节点上 运行以下 PowerShell 命令,以便在头节点 () 和 Linux 计算节点之间通过 Http 进行通信。
Set-HpcClusterRegistry -PropertyName LinuxHttps -PropertyValue 0
if($env:CCP_CONNECTIONSTRING -like "*,*,*") {
Connect-ServiceFabricCluster
$opId = [Guid]::NewGuid()
Start-ServiceFabricPartitionRestart -OperationId $opId -RestartPartitionMode AllReplicasOrInstances -ServiceName fabric:/HpcApplication/SchedulerStatefulService -ErrorAction Stop
} else {
Restart-Service -Name HpcScheduler
}
步骤 2。 创建 Azure IaaS 节点模板
重要
- 如果选择使用自定义映像或共享映像,则 VM 映像的操作系统必须满足 要求。
- HPC Pack 2016 Update 2 或更低版本中不支持共享映像。
- 从 HPC Pack 2019 开始支持 Azure 现成 VM
在“配置”面板上,单击“节点模板”,然后在“操作”列表中单击“新建”以创建 Azure IaaS 节点模板。
在 “选择节点模板类型 ”页上,选择节点模板类型作为 Azure IaaS 节点模板。
在“ 指定模板名称 ”页上,指定 模板名称 ,并根据需要指定 “说明”。
在 “指定 VM 组信息 ”页上,指定将在其中创建 IaaS 计算节点的 Azure 资源组的资源组 名称 。 可以选择现有资源组,也可以指定新的资源组名称。 如果指定新的资源组名称,HPC Pack 群集将在使用此节点模板部署第一个 Azure IaaS 计算节点时创建资源组。
指定是否要在 Azure 可用性集中创建节点,并根据需要指定 可用性集名称 。 如果指定新的可用性集名称,HPC Pack 群集将在使用此节点模板部署第一个 Azure IaaS 计算节点时创建它。
在 “指定 VM 映像 ”页上,指定用于部署 IaaS 计算节点的 VM 映像。 可以选择以下 映像类型之一: MarketplaceImage、 CustomWindowsImage 或 CustomLinuxImage。
如果选择“映像类型”作为“市场映像”,请选择“OS 类型和映像标签”以选择 Azure 市场中的公共 VM 映像。
如果 OS 类型 是 Windows ,并且 HPC Pack 头节点 () 已加入域,请指定是否要将 节点加入域。 建议将 Windows 计算节点加入域。
如果选择 “映像类型 ”作为 CustomImage,请指定 OS 类型、自定义 VM 映像的 映像名称 以及存储映像的 资源组 。 VM 映像必须在创建 Azure IaaS 计算节点的同一 Azure 位置创建,并确保向步骤 1.1 中指定的 Azure 服务主体授予对自定义映像的 读取 权限。 请按照 创建自定义映像 操作,为 IaaS VM 创建自己的自定义映像。
可以单击链接, 详细了解 HPC Pack 计算节点的自定义 VM 映像 ,了解如何创建自定义 HPC Pack 计算节点 VM 映像。
如果选择“映像类型”作为“SharedImage”,请指定 OS 类型、Azure 中共享 VM 映像的 Azure 资源 ID 共享映像库。 确保向步骤 1.1 中指定的 Azure 服务主体授予对共享映像库的 “读取” 权限。
在“ 审阅 ”页上,查看指定的设置,然后单击“ 创建 ”以创建节点模板。
在使用节点模板创建新的 Azure IaaS 计算节点之前,如果要指定一些高级选项(例如 ,使用 Azure 现成 VM),请参阅 IaaS 节点模板的高级选项。
步骤 3。 创建并管理 IaaS 计算节点
打开 HPC 群集管理器控制台,单击“ 资源管理 栏”,然后单击“ 添加节点 ”以启动 “添加节点向导”。
在 “选择部署方法” 页上,选择“ 添加 Azure IaaS VM 节点”。
在 “指定新节点” 页上,选择刚刚在步骤 2 中创建的 节点模板 ,指定 节点数 和 节点的 VM 大小,然后单击“ 下一步”。
单击“ 完成”后,可以在“节点”列表中找到两个新 节点 。 事实上,这两个节点的相应 Azure 虚拟机尚未在 Azure 端创建。
然后,可以选择节点并单击“ 启动 ”,在 Azure 中创建虚拟机。
等待预配 Azure IaaS 计算节点。
Azure IaaS 计算节点的部署完成且节点运行状况正常后,可以将作业提交到这些节点。
可以通过单击“ 停止”手动停止节点,Azure 中的虚拟机将被取消分配。
如果不再需要节点,还可以 删除 这些节点,如果这样做,Azure 虚拟机也会被删除。
如果启用了 自动增长和收缩 Azure 节点 功能,Azure IaaS 节点将根据群集工作负载自动启动或停止,请参阅 Azure 资源的自动增长收缩。
IaaS 节点模板的高级选项
在大多数情况下,可以直接使用 步骤 2 中创建的节点模板来创建 Azure IaaS 计算节点,无需指定高级选项。 如果要指定高级选项,请转到 “配置 ”->“节点模板”,选择刚刚创建的节点模板,然后单击“ 编辑”。
注意
仅当 Azure IaaS 节点模板中没有创建计算节点时,才能对其进行编辑。
使用 Azure 现成 VM
使用 Azure 现成 VM 创建 Azure IaaS 计算节点是 HPC Pack 2019 中引入的一项功能。 使用 Azure 现成 VM 可以大幅节省成本,利用未使用的 Azure 计算容量。 但是,Azure 现成 VM 没有 SLA。
如果指定的 Azure 区域中没有可用的现成容量,则 IaaS 计算节点的部署可能会失败。
任何正在运行的 Azure 现成 VM 都可以在 Azure 基础结构需要容量时随时被逐出并移动到已停止-解除分配状态。 在这种情况下,相应的 HPC 计算节点将显示在 “错误 ”节点运行状况状态中,节点上运行的任何任务都将中断并重新排队。
当现成容量再次可用时,Azure 基础结构不会自动重新部署已逐出的 Azure 现成 VM。 可以尝试手动使节点脱机,然后在 HPC 群集管理器上重新启动它,以便稍后重新部署 Azure 现成 VM,但重新部署可能仍然失败,因为没有可用的现成容量。
DNS 服务器
默认情况下,未设置 DNS 服务器 选项,Azure VM 的网络接口从虚拟网络获取 DNS 服务器设置。 如果要显式设置网络接口的 DNS 服务器,请指定用逗号分隔的 DNS 服务器列表。
HPC 自动更新
HPC Pack 使用 Azure VM 扩展 在 Azure VM 中部署 HPC Pack 组件。 HPC 自动更新选项指定如果发布了新版本的 HPC Pack 计算节点 VM 扩展,Azure VM 代理是否必须自动升级 HPC Pack 版本。 默认值为 False,强烈建议 不要 将其设置为 True,因为正在运行的任务将中断,HPC 作业也可能失败。