介绍 Azure CycleCloud 的基本知识

已完成

许多组织希望将其本地 HPC 工作负载转换到 Azure,以从其超大规模功能中获益。 他们还希望最大程度地减少与这种转换相关的学习曲线,并使用与现有部署相关的专业知识,例如特定的 HPC 计划程序。 最后,他们希望以与本地环境相似的方式,深入了解基于云的群集资源的性能和成本。

实现满足这些需求的自定义解决方案极具挑战性。 它需要深入了解作为基于云的 HPC 群集构建基块的 Azure 计算、网络和存储资源。 此外,如果没有相应的管理界面,依赖标准 Azure 管理工具来操作此类解决方案会导致巨大的管理开销。

Azure CycleCloud 提供了一种简单、安全且可缩放的方式,可在 Azure 中实现 HPC 计划程序以解决这些问题。 在此单元中,你将了解其基本功能。

注意

Azure CycleCloud 面向需要使用特定 HPC 计划程序的部署场景。 这是对 Azure Batch 的补充,后者提供 Azure 上的计划程序即服务。

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

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

  • 基于模板的 HPC 群集部署。 Azure CycleCloud 提供可自定义的内置模板,用于部署最常见的群集计划程序,包括 Slurm、OpenPBS、LSF、Grid Engine 和 HTCondor。 CycleCloud GitHub 存储库中提供了许多其他预定义模板,你可以将其导入 Azure CycleCloud 实例中。

    备注

    模板是 INI 格式的文件,使用声明性语法来描述节点在 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 域服务或其他基于轻型目录访问协议 (LDAP) 的标识提供者集成。 默认情况下,本地定义的用户可以访问托管群集节点上的操作系统,但也可以单独管理群集用户。 为了管理 Azure 订阅中的资源,你可以使用 Microsoft Entra 服务主体或托管标识。

  • 准实时成本报告和控制。 Azure CycleCloud 跟踪群集使用情况并估算相应的成本。 此功能允许你设置当群集成本超过指定货币金额时触发的预算警报。 Azure CycleCloud 也可与 Microsoft 成本管理集成。

如何实现和使用 Azure CycleCloud?

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

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

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

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

屏幕截图显示 Azure CycleCloud Web 应用程序的图形界面。

Azure CycleCloud 的体系结构是什么?

与 Azure 资源管理器相比,Azure CycleCloud 提供了一个额外的抽象层,可最大程度地减少用户直接处理 Azure 计算和存储资源的需求。 它的作用是将可通过其图形界面或 CLI 访问的计划程序级配置转换为与用户定义的虚拟网络和子网中的 Azure VM 和 Azure VM 规模集进行交互的 Azure 资源管理器 (ARM) API 调用。 这些调用还考虑区域 vCPU 配额、群集大小限制和 InfiniBand 网络拓扑的约束。 它们还可帮助优化群集性能,方法是将此类构造用作邻近放置组或将群集节点连接到同一 InfiniBand 交换机。

备注

邻近放置组允许将 Azure VM 并置在一起,但不考虑 InfiniBand 网络。 借助 Azure CycleCloud 可以使用其自己的特定构造(称为 PlacementGroupId)将群集节点分组到连接到同一网络交换机的单个 Azure VM 规模集。 你可以合并这两项功能,但这可能会减少可在同一 Azure VM 规模集内预配的节点数。

Azure CycleCloud 协调 HPC 群集的生命周期,这通常由一个或多个 HPC 计划程序头节点和计算节点组成,但也可能包括网络连接存储,例如 NFS 服务器或 BeeGFS 群集、Azure NetApp 文件、Azure HPC 缓存和 Microsoft Entra 域服务。 它包括可缓存群集和节点状态的内部 NoSQL 数据存储。 其节点监控系统可以发出警报。 其管理功能通过 REST API 公开,并且可通过 Web 和 CLI 访问。

托管群集的自动缩放依赖于需求计算器和自动缩放库。 你将在本课程的下一个单元中了解其特征。

此图显示 Azure CycleCloud 的高级体系结构。

什么是 Azure CycleCloud 群集生命周期?

群集的生命周期从选择包含其定义的模板开始。 你可选择使用其中一个内置模板,也可以创建一个自定义模板,然后将其导入 CycleCloud 应用程序。 该模板通常包含多个参数,可用于在其创建期间自定义群集配置。 群集创建的具体过程取决于你使用的是 Web 还是 CLI。

创建群集后,可启动它。 启动群集将为基于群集模板的定义中的每个节点触发一系列任务。 此序列包括对请求预配 Azure VM 的 Azure 资源管理器的调用,称为“获取”状态。 接下来是 VM 的配置,包括执行在相应项目中定义的初始化项,执行脚本以安装和配置计划软件,以及预配和装载文件系统卷。 序列完成后,节点将进入“已启动”状态。 任何未处理或未知错误都会导致“错误”状态。

群集节点运行后,可以通过 SSH 或 RDP 远程访问它们,具体取决于它们的操作系统。 你可以使用此类连接来提交群集作业。 根据群集配置,这可能会触发群集的缩放。

你可以在群集完成所有已提交的作业后终止群集。 终止群集会停止和删除其节点,并删除任何非永久性卷,使群集处于“关闭”状态