介绍 Slurm 与 Azure CycleCloud 的集成

已完成

完成本单元后,你应该能够介绍 Slurm 与 Azure CycleCloud 的集成方式,并介绍 Slurm 与 Azure CycleCloud 之间的关键集成领域。

What is Azure CycleCloud?(什么是 Azure CycleCloud?)

Azure CycleCloud 是在 Azure 中部署 HPC 群集并管理其工作负载的工具。 它提供各种 HPC 功能,包括:

  • 基于模板的 HPC 群集部署。 Azure CycleCloud 为最常见的群集计划程序(包括 Slurm、OpenPBS、LSF、Grid Engine 和 HTCondor)的部署提供可自定义的内置模板。 CycleCloud GitHub 存储库中提供了许多其他预定义模板,你可以将其导入 Azure CycleCloud 实例中。
  • 手动和自动缩放群集节点。 Azure CycleCloud 允许根据作业队列的长度和治理策略,手动和自动对托管群集进行水平缩放。 它还提供了用于为自定义计划程序开发自动缩放适配器的 REST API。
  • 通过 cloud-init 脚本进行节点配置。 Azure CycleCloud 支持基于自定义脚本的配置管理,在所有其他特定于 CycleCloud 的配置任务之前,这些脚本在托管群集节点中运行。
  • 管理内部和外部群集存储。 Azure CycleCloud 允许你通过预配、装载和格式化 Azure 托管磁盘和网络连接存储(例如 NFS 服务器或 BeeGFS 群集)来配置群集存储。
  • 监视、记录和警报。 Azure CycleCloud 提供内置的群集监视功能,并与 Azure Monitor 集成。 还可以将 CycleCloud 群集中的日志数据存储到 Log Analytics 并创建自定义指标仪表板。 还可以创建由遥测数据触发的自定义警报和电子邮件通知。 所有 Azure CycleCloud 活动都会记录。
  • 身份验证和授权。 Azure CycleCloud 支持内置的本地身份验证。 或者,可以将它与 Active Directory Domain Services (AD DS) 或其他基于轻型目录访问协议 (LDAP) 的标识提供程序集成。 默认情况下,本地定义的用户可以访问托管群集节点上的操作系统,但也可以单独管理群集用户。 要管理 Azure 订阅中的资源,你可以使用 Microsoft Entra 服务主体或托管标识。
  • 准实时成本报告和控制。 Azure CycleCloud 跟踪群集使用情况并估算相应的成本。 此功能允许你设置当群集成本超过指定货币金额时触发的预算警报。 Azure CycleCloud 也可与 Microsoft 成本管理集成。

Azure CycleCloud 和 Azure Batch

Azure CycleCloud 和 Azure Batch 是 Azure 服务,旨在管理和运行云中的大规模并行和高性能计算工作负载。 这些服务的目标受众、功能集和用例各不相同。

Azure CycleCloud 侧重于在 Azure 中创建、管理和优化 HPC 和 HTC 群集。 CycleCloud 面向特定于域的 HPC 和 HTC 工作负载,例如计算流体动力学、基因组学和工程模拟。 CycleCloud 支持各种群集计划程序,例如 Slurm、网格引擎、LSF 和 HTCondor。 它还与 Azure Blob 存储、Azure 托管磁盘 和 Azure NetApp 文件等 Azure 服务集成以实现存储解决方案。

Azure Batch 是一项托管服务,专门设计用于在 Azure 中运行大规模并行和批处理工作负载。 Azure Batch 适用于各种类型的批处理任务,例如数据处理、绘制和机器学习模型训练。 Azure Batch 负责管理资源、计划任务和根据工作负载要求缩放计算节点。

Azure CycleCloud 专为 HPC 和 HTC 工作负载而设计,支持多个群集计划程序,而 Azure Batch 更通用,支持各种类型的并行和批处理任务。

了解 HPC 和 HTC 分区

Azure CycleCloud 分区是具有特定配置、用途或工作负载类型的计算节点的逻辑分组。 术语“HPC 分区”和“HTC 分区”是指配置为处理高性能计算和高吞吐量计算工作负载的分区。

HPC 分区使用大量基于 CPU 或 GPU 的虚拟机来执行复杂的任务。 HTC 是一种体系结构,它在长时间内使用许多计算资源来完成大量松散耦合的任务。 需要执行大型复杂计算(例如涉及科学和工程模拟的计算)时,可以使用 HPC 分区。

HTC 分区使用大量基于 CPU 或 GPU 的虚拟机节点来解决需要紧密耦合的快速通信的复杂数学任务。 HTC 作业通常是独立的、有序的,可以在多个站点中的不同计算资源上进行计划。 HPC 作业通常是并行的、相互依赖的,需要在具有低延迟互连的单个站点上运行。 HTC 适用于处理大量小型任务,并且适用于对可拆分为小元素的数据密集型任务进行批处理。 在 HTC 中使用批处理时,可处理大量数据或计算任务,方式是将其划分为更小的、可管理的组(称为“批”)。 群集通过将每个批分配到计算群集中的不同节点来并行处理这些批。

在基于云的环境中(例如 Azure CycleCloud),HTC 和 HPC 可以在同一群集体系结构上运行。

实现 Azure CycleCloud

CycleCloud 作为基于 Linux 的 Web 应用程序进行实现,你可以将其安装在任何可以访问 Azure 环境的位置。 最简单的设置方法就是使用相应的 Azure 市场映像部署 Azure VM,并可选择使用 Azure 资源管理器 (ARM) 模板自动完成部署。 或者,可以使用 yum 或 apt 包,或使用 Microsoft Container Registry 提供的容器映像。

在初始配置期间,可选择提供 SSH 密钥,以安全访问托管 CycleCloud 应用程序的操作系统,以及安全访问随后部署的群集节点。 为了使 CycleCloud 应用程序能够与 ARM 交互,你需要选择一个 Microsoft Entra 标识,该标识将为此交互提供安全性上下文,并使用 Azure 基于角色的访问控制 (RBAC) 在目标 Azure 订阅中为其分配足够的权限。 此标识可采用服务主体形式,或者如果在 Azure VM 上托管 Azure CycleCloud 应用程序,则采用托管标识形式。

Azure CycleCloud 实例还需要 Azure 存储帐户和随附的 blob 容器。 此容器称为“保险箱”,提供将项目部署到群集节点的暂存区域。

安装后,Azure CycleCloud 应用程序提供图形用户界面,允许用户管理和监视 HPC 系统,并提供一个命令行接口 (CLI),方便将 CycleCloud 自动化和集成到现有工作流中。 你还可使用 CLI 导入模板、自动执行群集预配,以及执行更高级的管理任务。

了解 CycleCloud 群集自动缩放

Azure CycleCloud 有助于在 Azure 中部署计划程序,进而分发和管理在由 Azure 资源组成的群集上运行的作业。 Azure CycleCloud 不能充当计划程序。 相反,它充当计划程序和基础平台之间的中介。 Azure CycleCloud 还提供基于 REST API 的编程接口和基于 Python 的客户端库,简化了相应计划程序的自动缩放功能的开发。

Azure CycleCloud 允许将托管群集的自动缩放行为与群集作业队列的长度关联起来。 你可定义用于控制空闲节点终止前的时间长度或自动停止检查频率等的模板参数,进一步自定义此行为。

所有内置模板直接在 Azure CycleCloud 图形界面中公开自动缩放设置。 在每种情况下,这些设置包括用于指定自动缩放范围下限和上限(以 CPU 核心数表示)的选项。 上限可帮助你最大程度地降低意外收费的可能性。 你可设置预算警报来进一步缓解此风险。

如果将下限阈值设置为 0,则创建群集只会配置计划程序头节点。 但是,当计划程序检测到已排队的作业时,它会启动执行相应工作负载所需的计算节点的预配,直至达到你定义的限制。 为了支持各个任务彼此独立执行的联系不太紧密作业或并行作业,将在第一个节点可用时立即开始运行作业。 对于使用消息传递接口 (MPI) 功能的联系紧密作业,等待时间将更长,具体取决于节点间依赖项的范围。 在作业队列清空时长超过了允许的空闲时长后,计算节点将开始自动停止,并且群集将再次只包含计划程序头节点。

Slurm 与 CycleCloud 的集成

可以通过在 CycleCloud 中设置基于 Slurm 的群集来将 Slurm 与 Azure CycleCloud 集成,其中 CycleCloud 管理底层基础结构,Slurm 负责作业计划和资源管理。

Slurm 通过以下方式与 Azure CycleCloud 集成:

  • 群集配置。 在 Azure CycleCloud 中创建新群集时,可以选择 Slurm 作为群集计划程序。 这意味着 CycleCloud 将配置群集资源(例如 VM、存储、网络),并在群集的主节点(或控制器节点)上部署 Slurm 计划程序。
  • 群集部署。 Azure CycleCloud 在 Azure 中部署 Slurm 群集,为主节点和计算节点创建必要的 VM。 主节点运行 Slurm 控制器守护程序 (slurmctld),计算节点运行负责执行作业的 Slurm 守护程序 (slurmd)。 CycleCloud 设置网络和存储资源,并根据指定的设置配置 Slurm 群集。
  • 自动缩放。 Azure CycleCloud 可以根据工作负载要求和定义的自动缩放策略添加或移除计算节点,从而动态缩放 Slurm 群集。 这有助于优化资源使用情况和控制成本。 当提交新作业,而资源不足时,CycleCloud 可以自动预配其他计算节点并将这些节点添加到 Slurm 群集。 同样,当工作负载减少时,CycleCloud 可以自动移除空闲的计算节点以节省成本。
  • 监视和管理。 Azure CycleCloud 为 Slurm 群集提供监视和管理功能,例如跟踪群集性能、资源使用情况和作业状态。 还可以管理群集生命周期、启动/停止群集,并根据需要应用更新。
  • 作业提交。 可以使用标准 Slurm 命令(如 sbatch、srun 和 salloc)将作业提交到 Slurm 群集。 然后,在构成 Slurm 群集计算节点的 Azure VM 上计划和执行这些作业。