你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

CycleCloud 群集

在 CycleCloud 中,术语 群集 用于描述一组连接的计算机 (节点) 作为单个系统协同工作。 群集可以嵌套;例如,由网格引擎计划程序头节点和计算节点组成的计算群集可以装载由多个元数据和存储服务器组成的 BeeGFS 群集,计算群集和存储群集合并在单个父 HPC 群集或系统下。

概述关系图

节点和节点数组

群集基本上由节点组成,每个节点在 HPC 系统中执行特定角色。 术语节点VM 偶尔可互换使用,但在 CycleCloud 中在语义上是分开的。 组成群集的节点实质上是 Azure 上已完成准备和配置过程的虚拟机。 换句话说, VM 是从 Azure 基础结构服务层预配的,在完成软件安装和配置步骤后,其最终状态是 HPC 群集的 节点

体系结构图

CycleCloud 中有两个单独的节点化身。 第一个作为独立节点,第二个作为 nodearray,它是相同配置的节点的集合 (节点与节点数组之间的区别遵循 devOps Pets 与牛类比精神) 。 从广义上讲,但不是严格地说,独立节点是从 Azure 上的单个 VM 构造的,而节点数组映射到虚拟机规模集 (VMSS) 。

但是,节点数组和 VM 规模集之间存在至关重要的差异,主要区别在于单个节点数组可以包含多个 VM 规模集。 这样就可以从大小不同的 VM 甚至不同的 VM 系列生成单个节点数组,唯一的限制是 nodearray 中的所有节点在群集中执行相同的角色,例如,为计划程序的单一队列提供资源。

群集模板

拓扑或节点在 CycleCloud 群集中的组织方式是在布局群集节点之间的关系的文本模板中定义的,对于嵌套群集,则为群集的父子关系。 模板还提供定义每个节点所扮演的角色的方法。

群集模板以 INI 格式定义。 使用方括号 []进行划分的部分用于定义群集、节点和节点数组。 INI 文件的基本元素是提供每个部分的配置详细信息的键值对断言。 这些配置详细信息提供用于创建群集的每个节点的上下文信息,从用于启动 VM 的虚拟机映像到要在其中预配 VM 的子网。 详细了解 CycleCloud 群集模板

节点准备和配置

CycleCloud 从群集模板中定义的基本 VM 映像预配 VM,并在启动过程中通过 CycleCloud 代理 (Jetpack) 管理的一系列步骤,初始化并配置 VM 上的 OS 以将其转换为正常运行的 HPC 节点。 这些步骤包括用于安装和配置计划软件的脚本,以及用于装载文件系统的最后一英里配置。

节点准备图

在每个节点的配置部分中定义的是 cluster-init 规范 -- 提供给每个启动 VM 的规范,用于为群集中的特定角色做好准备。 CycleCloud 利用 Chef 作为基础结构自动化平台来准备和配置每个节点。 从本质上讲,每个 群集 init 规格 映射到需要在启动 VM 上执行的更多 Chef 角色 和/或 食谱 之一。

CycleCloud 在不依赖于集中式 Chef 服务器的独立模式下利用 Chef。 相反,准备每个 VM 所需的整个 Chef 食谱集是在 VM 启动阶段从属于用户的 Azure 存储帐户下载的。 在群集创建阶段,这组食谱将从 CycleCloud 应用程序服务器缓存到存储帐户中。

下载这些食谱后,Chef 会处理节点 的群集 init 规范中定义的食谱列表,从而触发将 VM 转换为有效 HPC 节点的准备和配置阶段。

规范创作为名为 Projects 的逻辑集合。 例如,批处理计划程序(如 Slurm)的项目至少包含两个规格:一个用于计划程序头节点,另一个用于计算节点。 阅读有关 CycleCloud 项目的详细信息

节点业务流程

根据群集中使用的计划程序和服务,CycleCloud 有时需要通过协调不同节点来协调群集中节点的准备阶段。 例如,某些计划程序要求每个计算节点都针对计划程序守护程序注册自己,这样不仅需要计算节点知道头节点的地址,而且还能够识别到头节点已准备就绪,如果不是,则等待。

Service Discovery 的此元素还用于文件系统服务器-客户端关系,是 CycleCloud 中的一项功能。

深入阅读