使用 Microsoft HPC Pack 大规模部署 Azure 节点的最佳做法

从具有 Service Pack 1 的 HPC Pack 2008 R2 开始,Windows HPC 群集管理员和开发人员可以通过在 Azure 中按需添加计算资源来提高本地群集的强大功能。 具有 Azure 辅助角色实例的此 HPC 群集“突发”方案可实现更大的 HPC 工作负荷,有时除了或取代本地群集资源外,还要求数千个核心。 本主题提供指导和最佳做法建议,可帮助规划和实现本地 HPC Pack 群集中的 Azure 节点的大型部署。 这些建议的最佳做法应有助于最大程度地减少 Azure 部署超时、部署失败和实时实例丢失的情况。

注意

  • 这些最佳做法包括有关 Azure 环境和本地头节点配置的建议。 大多数建议也会改善 Azure 节点的较小部署行为。 这些准则的例外情况是测试部署,其中头节点服务的性能和可靠性可能不是关键且非常小的部署,其中头节点服务不会受到高度压力。
  • 为大型 Azure 部署配置本地头节点的许多注意事项也适用于包含相当大量本地计算节点的群集。
  • 这些建议补充了将 Azure 节点添加到 Windows HPC 群集的群集、网络和其他要求。 有关详细信息,请参阅 Azure 节点要求。
  • 这些常规建议可能会随时间而变化,可能需要针对 HPC 工作负荷进行调整。

适用于 .NET 的 HPC Pack 和 Azure SDK 版本

这些建议通常基于 HPC Pack 2012 R2 和 HPC Pack 2012,但它们也适用于使用 HPC Pack 2008 R2 执行的大型部署。

下表列出了 HPC Pack 的版本以及这些准则适用于 .NET 的 Azure SDK 相关版本。

HPC Pack Azure SDK
HPC Pack 2012 R2 用于 .NET 2.2 的 Azure SDK
具有 Service Pack 1 的 HPC Pack 2012 (SP1) 用于 .NET 2.0 的 Azure SDK
HPC Pack 2012 用于 .NET 1.8 的 Azure SDK
具有 Service Pack 4 的 HPC Pack 2008 R2 (SP4) 用于 .NET 1.7 的 Azure SDK
具有 Service Pack 3 的 HPC Pack 2008 R2 (SP3) 用于 .NET 1.6 的 Azure SDK

Azure 节点的大型部署的阈值

当考虑头节点的配置以及部署需要大量使用单个云服务可以使用的资源的 Azure 群集时,HPC 群集的部署将被视为“大”。 更大的部署将面临部署超时和丢失实时实例的风险。

重要

每个 Azure 订阅都分配了核心和其他资源的配额,这也会影响部署大量 Azure 节点的能力。 若要能够部署大量 Azure 节点,可能需要先联系Microsoft支持部门,请求提高订阅的核心配额。 请注意,配额是额度限制,不能保证资源的可用性。

下表列出了在单个云服务中大规模部署 Azure 节点时常用的角色实例的实际阈值数。 阈值取决于为 Azure 角色实例选择的虚拟机大小(在 Azure 中预定义)。

角色实例大小 角色实例数
A9 (从 HPC Pack 2012 R2 开始支持) 125
A8 (从 HPC Pack 2012 R2 开始支持) 250
A7 (从 HPC Pack 2012 SP1 开始支持) 250
A6(从 HPC Pack 2012 SP1 开始支持) 250
特大 250
大型 500
800
1000

有关每个虚拟机大小的详细信息,包括每个大小的 CPU 核心数和内存数,请参阅云服务大小。

若要在可靠性较高的一个服务中部署多个阈值以上的角色实例,通常需要 Azure 运营团队的手动参与。 若要发起此计划,请联系Microsoft销售代表、Microsoft顶级支持客户经理或Microsoft支持人员。 若要详细了解支持计划,请参阅 Azure 支持计划

尽管没有适用于所有 Azure 节点部署的硬性强制限制,但每个云服务有 1000 个实例是实际生产限制。

将 Azure 用于大型部署的最佳做法

以下是成功创建和使用大型 Azure 部署与 HPC 群集的一般准则。

向 Azure 运营团队提供早期信号

除非已安排在数据中心内部署到专用 Azure 群集,否则最重要的建议是提前(通过Microsoft支持渠道)向 Azure 运营团队(通过Microsoft支持渠道)传达需求,并相应地规划部署,以消除容量作为瓶颈。 这也是一个机会,除了本主题中所述的部署策略之外,还可以获取有关部署策略的其他指导。

将部署分散到多个云服务

建议使用多个云服务将大型部署拆分为多个较小的部署,原因如下:

  • 允许灵活地启动和停止节点组。

  • 若要使作业完成后停止空闲实例。

  • 为了便于在 Azure 群集中查找可用节点,尤其是在使用特大型实例时。

  • 为灾难恢复或业务连续性方案启用多个 Azure 数据中心的使用。

云服务的大小没有固定限制,但一般指南少于 500 到 700 个虚拟机实例或少于 1000 个核心。 较大的部署将面临部署超时、丢失实时实例和虚拟 IP 地址交换问题的风险。

单个 HPC 群集的云服务的最大测试数量为 32。

注意

在可以通过 HPC Pack 或 Azure 管理门户管理的云服务和角色实例数方面可能会遇到限制。

灵活使用位置

依赖于其他服务和其他地理要求可能是不可避免的,但如果 Azure 部署未绑定到特定区域或地理位置,它可能会有所帮助。 但是,建议不要在不同的地理区域中放置多个部署,除非它们在这些地理区域中具有外部依赖项,或者你具有高可用性和灾难恢复要求。

灵活调整虚拟机大小

对特定虚拟机大小(例如,特大型)具有严格的依赖项可能会影响大规模部署的成功。 灵活调整甚至混合匹配虚拟机大小,以平衡实例计数和核心可以提供帮助。

对节点部署使用多个 Azure 存储帐户

建议对同时进行大型 Azure 节点部署和自定义应用程序使用不同的 Azure 存储帐户。 对于受 I/O 约束的某些应用程序,请使用多个存储帐户。 此外,最佳做法是,用于 Azure 节点部署的存储帐户不应用于节点预配以外的目的。 例如,如果计划使用 Azure 存储将作业和任务数据移入和移出头节点或从 Azure 节点移动,请为此配置单独的存储帐户。

注意

对于 Azure 存储帐户上存储的数据总量和存储事务,与 Azure 存储帐户的数量无关,会产生费用。 但是,每个订阅将限制存储帐户的总数。 如果需要订阅中的其他存储帐户,请联系 Azure 支持部门。

调整代理节点实例数以支持部署

代理节点是从 HPC 群集自动添加到每个 Azure 节点部署的 Azure 辅助角色实例,用于促进本地头节点与 Azure 节点之间的通信。 代理节点上的资源需求取决于在 Azure 中部署的节点数以及在这些节点上运行的作业。 通常应增加大型 Azure 部署中的代理节点数。

注意

  • 代理角色实例与 Azure 节点实例一起在 Azure 中产生费用。
  • 代理角色实例使用分配给订阅的核心,并减少可用于部署 Azure 节点的核心数。

HPC Pack 2012 引入了 HPC 管理工具,用于配置每个 Azure 节点部署(云服务)中的代理节点数。 (在 HPC Pack 2008 R2 中,每个部署自动设置 2 个代理节点的数字。还可以使用 Azure 管理门户中的工具来纵向扩展或缩减代理节点的角色实例数,而无需重新部署节点。 建议单个部署的最大代理节点数为 10。

更大或大量使用的部署可能需要超过下表中列出的代理节点数,该节点基于 CPU 利用率低于 50% 且带宽低于配额。

每个云服务的 Azure 节点数 代理节点数
<100 2
100 - 400 3
400 - 800 4
800 - 1000 5

有关代理节点配置选项的详细信息,请参阅 设置 Azure 代理节点数

为大型部署配置头节点的最佳做法

Azure 节点的大型部署可能会对群集的头节点(或头节点)产生重大需求。 头节点执行多个任务来支持部署:

  • 访问在 Azure 部署中创建的代理节点实例,以促进与 Azure 节点的通信(请参阅 调整代理节点实例数以支持部署,本主题中)。

  • 访问 Blob 的 Azure 存储帐户(例如运行时包)、队列和表数据。

  • 管理检测信号间隔和响应、代理数(从 HPC Pack 2012 开始)、部署数和节点数。

随着 Azure 部署的大小和吞吐量的增长,HPC 群集头节点的压力会增加。 一般情况下,确保头节点能够支持部署的关键要素包括:

  • 足够的 RAM

  • 足够的磁盘空间

  • HPC 群集数据库的适当大小、维护良好的 SQL Server 数据库

头节点的硬件规范

下面是头节点支持大型 Azure 部署的最低规范:

  • 8 个 CPU 核心

  • 2 个磁盘

  • 16 GB RAM

配置远程 SQL Server 数据库

对于大型部署,我们建议在运行 Microsoft SQL Server 的远程服务器上安装群集数据库,而不是在头节点上安装群集数据库。 有关为群集选择和配置 SQL Server 版本的一般准则,请参阅 数据库容量规划和优化Microsoft HPC Pack

不要为其他群集角色配置头节点

作为大多数生产部署的一般最佳做法,我们建议头节点未配置其他群集角色(计算节点角色或 WCF 代理节点角色)。 让头节点提供多个用途可能会阻止其成功执行其主要管理角色。 若要更改头节点执行的角色,请先使用 HPC 群集管理器中 资源管理(称为 HPC 群集管理器中某些版本的 HPC Pack 中的 节点管理)中的操作使节点脱机。 然后,右键单击头节点,然后单击 更改角色

此外,将群集存储移出头节点可确保头节点不会耗尽空间,并且将有效运行。

使用 HPC 客户端实用工具远程连接到头节点

当头节点在负载过大的情况下运行时,其性能可能会受到许多用户与远程桌面连接的影响。 用户和管理员应在其工作站上安装 HPC Pack 客户端实用工具,并使用这些远程工具访问群集,而不是让用户使用远程桌面服务(RDS)连接到头节点。

禁用性能计数器收集和事件转发

对于大型部署,性能计数器收集和事件转发可能会给 HPC 管理服务和 SQL Server 带来很大的负担。 对于这些部署,可能需要使用 HPC 群集管理工具禁用这些功能。 例如,使用 Set-HpcClusterProperty HPC PowerShell cmdlet 将 CollectCounters 群集属性设置为 false。 改进的性能与收集指标之间可能存在权衡,这些指标可以帮助你排查出现的问题。

禁用不需要的头节点服务

若要确保操作系统的硬件占用最少,并且作为一般 HPC 群集最佳做法,请禁用 HPC 群集操作不需要的任何操作系统服务。 我们特别鼓励禁用可能已启用的任何面向桌面的功能。

不要在头节点上运行 NAT

尽管 HPC Pack 允许快速配置头节点上运行的路由和远程访问服务(RRAS),以提供网络地址转换(NAT)并允许计算节点到达企业网络,但这可能导致头节点成为网络带宽的重要瓶颈,也可能会影响其性能。 作为大型部署或部署的一般最佳做法,在计算节点与公共网络之间具有重要流量的部署,建议使用以下替代方法之一:

  • 提供与每个计算节点的直接公共网络连接。

  • 提供专用 NAT 路由器,例如运行 Windows Server 操作系统的独立服务器,该服务器位于两个网络上并运行 RRAS。

确保已完成作业的合理存储期

cluscfg 命令的 TtlCompletedJobs 属性和 Set-HpcClusterProperty HPC cmdlet 控制已完成的作业在 HPC 群集的 SQL Server 数据库中保留多长时间。 为此属性设置大值可确保在系统中长时间维护作业信息,这对于报告而言可能很理想。 但是,系统中的大量作业会增加系统的存储和内存要求,因为数据库(和针对它的查询)通常更大。

在标记无法访问的节点之前配置合理的未命中检测信号数

HPC Pack 使用检测信号来验证节点可用性。 HPC 作业计划程序服务对此定期运行状况探测的响应不足决定了该节点是否将被标记为无法访问。 通过在 HPC 群集管理器中的作业计划程序配置中配置检测信号选项, 或者通过使用 cluscfg 命令或 Set-HpcClusterProperty HPC cmdlet,群集管理员可以设置检测信号(HeartbeatInterval)以及节点在标记为无法访问之前可能会错过的检测信号数(InactivityCount)。 例如,群集包含大型 Azure 部署时,默认 HeartbeatInterval 30 秒可以增加到 2 分钟。 默认 InactivityCount 设置为 3,这适用于某些本地部署,但在部署 Azure 节点时,它应增加到 10 或更多。

注意

从 HPC Pack 2012 SP1 开始,为本地节点和 Azure 节点单独配置错过检测信号数。 InactivityCountAzure 群集属性配置未命中检测信号的数量,之后群集会将部署在 Azure 中的辅助角色节点视为无法访问。 InactivityCountAzure 的默认值设置为 10。 从 HPC Pack 2012 SP1 开始,InactivityCount 属性专用于本地节点。

如果头节点或 WCF 代理节点配置为故障转移群集中的高可用性,则还应考虑每个故障转移群集计算机用来监视故障转移群集中其他计算机(或计算机)的可用性的检测信号。 默认情况下,如果计算机错过五个检测信号,每秒一次,则与该计算机的通信被视为失败。 可以使用故障转移群集管理器来降低检测信号的频率,或者在具有大型 Azure 部署的群集中增加错过的检测信号数。

如果在 Azure 节点上运行面向服务的体系结构(SOA)作业,可能需要调整服务注册文件中的监视超时设置来管理大型会话。 有关 SOA 服务配置文件的详细信息,请参阅 Windows HPC Server 2008 R2中的 SOA 服务配置文件。

配置注册表项以提高文件暂存操作的性能

从 HPC Pack 2008 R2 SP2 开始,可以在头节点计算机上设置注册表项,以提高诊断测试的性能,clusrun 操作,以及 Azure 节点大型部署上的 hpcfile 实用工具。 为此,请在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HPC中添加名为 FileStagingMaxConcurrentCalls 的新 DWORD 值。 建议配置一个介于 50% 到 100% 计划部署的 Azure 节点数之间的值。 若要完成配置,设置 FileStagingMaxConcurrentCalls 值后,必须停止,然后重启 HPC 作业计划程序服务。

注意

错误地编辑注册表可能会严重损坏系统。 在对注册表进行更改之前,应备份计算机上的任何值数据。

另请参阅

使用 Microsoft HPC Pack 突发到 Azure 辅助角色实例
Azure 云服务 上 Large-Scale 服务的设计最佳做法
Windows Azure 业务连续性技术指南