LUCI4HPC

当今各个领域的计算需求无法通过单台计算机来满足。这些领域包括天气预报、天文学、汽车空气动力学模拟、材料科学和计算药物设计。这使得有必要将多台计算机组合成一个系统,即所谓的计算机集群,以获得所需的计算能力。

本文中描述的软件是为 Beowulf 风格的集群设计的。这种集群通常由消费级机器组成,并允许并行高性能计算。系统由头节点管理,并通过登录节点访问。实际工作由多个计算节点执行。各个节点通过内部网络连接。头节点和登录节点需要额外的外部网络连接,而计算节点通常在它们之间使用额外的高吞吐量、低延迟连接,例如 InfiniBand。

这种相当复杂的设置需要特殊的软件,该软件提供工具来轻松安装和管理此类系统。本文中介绍的软件——LUCI4HPC,是 lightweight user-friendly cluster installer for high performance computing(高性能计算的轻量级用户友好型集群安装程序)的缩写——就是这样一种工具。

其目的是促进主要由研究机构使用的小型内部集群的维护,以降低对共享外部系统的依赖性。LUCI4HPC 的主要重点是在资源使用方面保持轻量级,以便尽可能多地将计算能力留给实际计算,并做到用户友好,这通过用于系统管理的图形化基于 Web 的控制面板来实现。

LUCI4HPC 仅关注基本功能,以避免给用户带来许多不必要的选项,从而使系统只需点击几下即可快速投入运行。

在本文中,我们将概述 LUCI4HPC 软件,并简要解释其安装和使用。您可以在 LUCI4HPC 网站上的手册中找到更详细的安装和使用指南(请参阅“资源”)。图 1 显示了推荐的硬件设置概述。

图 1. 运行 LUCI4HPC 的集群的推荐硬件设置

当前 LUCI4HPC 的 beta 版本以自解压二进制包的形式提供,并支持 Ubuntu Linux。在已安装操作系统的头节点上执行该二进制文件,以触发安装过程。在安装过程中,您必须回答一系列关于集群设置和配置的问题。这些问题包括头节点的外部和内部 IP 地址(包括内部网络的 IP 范围)、集群的名称以及其他节点安装所需的时区和键盘布局。

安装脚本为大多数配置选项提供了从操作系统中提取的预定义默认值。安装脚本执行所有必要的步骤,以使头节点完全正常运行。安装完成后,您需要在 LUCI4HPC 网站上获取免费许可证,并将其放置在许可证文件夹中。之后,集群即可就绪,您可以添加登录节点和计算节点。

添加节点非常容易。将节点连接到集群的内部网络,并将其设置为通过此网络连接启动。所有后续步骤都可以通过基于 Web 的控制面板执行。该节点被识别为候选节点,并在控制面板中可见。您可以在其中定义节点的类型(登录、计算、其他)和名称。单击“保存”按钮以启动在节点上自动安装 Ubuntu Linux 和客户端程序。

目前,该软件区分三种类型的节点:即登录节点、计算节点和其他节点。登录节点是一台具有内部和外部连接的计算机,它允许用户访问集群。这与头节点分开,以防止用户错误干扰集群系统。由于占用所有内存或处理时间的脚本可能会影响 LUCI4HPC 程序,因此计算节点执行实际计算,因此由功能强大的硬件组成。“其他”类型是一种特殊情况,它指定一个分配了内部 IP 地址但 LUCI4HPC 软件不会自动安装操作系统的节点。当您想将存储服务器连接到集群时,这非常有用,例如,出于性能原因,首选内部连接,但该服务器已经安装了操作系统。候选系统的优势在于可以同时打开许多节点,并且您稍后可以在舒适的办公室中决定每个节点的类型。

集群软件的一个重要部分是调度器,它管理资源的分配以及作业在各个节点上的执行。LUCI4HPC 配备了完全集成的作业调度器,也可以通过基于 Web 的控制面板进行配置。

控制面板使用 HTTPS,您可以使用用户 ID 为 1000 的用户的用户名和密码登录。因此,更改登录凭据非常容易和方便——只需更改头节点上该用户的凭据即可。登录后,您将在第一页看到集群概览。图 2 显示了此概览的屏幕截图。

图 2. LUCI4HPC 基于 Web 的控制面板,集群概览页面

此概览具有名为 Clusterboy 的友好计算机图标,如果一切正常,则显示竖起大拇指,如果集群中存在问题(例如节点故障),则显示拇指向下。这使您可以立即评估集群的状态。此外,概览还显示集群中每种类型的节点数量、其中有多少节点正在运行和已安装,以及 CPU、GPU 和内存的总量和当前使用量。有关当前资源使用量的信息直接取自调度器。

控制面板右侧的导航菜单用于访问不同的页面。“管理”页面显示所有节点的列表,其中包含其对应的 MAC 和 IP 地址以及主机名,并按类型分类。顶部类别显示标记为“关闭”的节点,这意味着它们在过去两分钟内未发送心跳信号。单击节点旁边的“详细信息”链接以访问配置页面。正常运行时间和负载以及已用和总资源量都在此处列出。此外,还可以更改一些配置选项,例如主机名、IP 地址和节点类型,并且还可以将其标记为重新安装。更改 IP 地址需要重新启动节点才能生效,但这不会自动完成。

“调度器”页面显示集群中所有当前作业的列表,以及它们是正在运行还是正在排队。您可以在此处选择删除作业。

“队列”选项卡允许您定义新队列。可以将节点非常轻松地添加到队列中。单击队列旁边的“详细信息”链接以获取分配给它的节点列表以及当前未分配节点的列表。未分配的节点可以分配给队列,分配给队列的节点可以从中删除以变为未分配节点。此外,队列可以具有公平使用限制;它可以限制为特定的组 ID,并且您可以在三种不同的调度方法之间进行选择。这些方法是“填充”,它依次填充节点;“分散”,它将新作业分配给使用最少的节点,从而执行简单的负载平衡;最后是“完全”,它将作业分配给空闲节点。当多个作业不能在同一节点上共存时,使用此方法。

还有一个 VIP 系统。当例如必须赶上截止日期时,此系统为用户提供临时优先访问权限。VIP 用户始终位于队列的顶部,并且他们的作业将在必要的资源可用后立即执行。通常,调度器会根据请求的资源量和提交时间为每个作业分配权重。此权重决定排队顺序。

最后,“选项”页面允许您更改集群系统的配置选项,这些选项是在安装期间确定的。通常,可以在控制面板中完成的所有操作也可以通过修改配置文件和发出重新加载命令来完成。

在当前的 beta 版本中,有些任务无法通过控制面板完成。这些任务包括添加新用户和软件包以及自定义安装脚本。为了向集群添加用户,请像通常在 Linux 下添加用户一样将用户添加到头节点。通过 LUCI4HPC 命令行工具向节点发出重新加载命令,然后节点将从头节点同步用户和组文件。因此,该用户为整个集群所知。

在节点上安装新软件包同样容易。由于当前版本支持 Ubuntu Linux,因此它也支持 Ubuntu 软件包管理系统。为了在所有节点以及所有未来节点上安装软件包,软件包名称将添加到 LUCI4HPC 配置文件中的 additional_packages 文件中。在启动或安装过程期间,或在重新加载命令之后,节点会自动安装此文件中列出的所有软件包。

LUCI4HPC 的安装过程通过 Ubuntu 安装程序的预应答文件以及安装前和安装后 shell 脚本来处理。这些 shell 脚本以及预应答文件都是可自定义的。它们支持由 # 定义的所谓 LUCI4HPC 变量。变量允许脚本访问集群选项,例如头节点的 IP 或脚本执行所在的节点的 IP 和主机名。因此,可以编写一个通用脚本,该脚本通过这些变量使用其运行所在的节点的 IP 地址,而无需为每个节点单独定义它。

GPU 和 InfiniBand 驱动程序有特殊的安装脚本,这些脚本仅在节点上找到相应的硬件时才执行。这些硬件组件的安装步骤应放置在这些文件中。

由于可以更改安装 shell 脚本并在这些脚本中直接使用集群系统中的配置选项,因此您可以非常轻松地使安装适应您的特定需求。例如,这可以用于自动安装特定硬件的驱动程序或自动设置您的工作所需的特定软件包。

对于用户而言,大多数内容都是隐藏的。作为用户,您登录到登录节点并使用程序 lqsub 向集群提交作业,使用 lqdel 删除您的作业之一,并使用 lqstat 查看您当前的作业及其状态。

以下内容更技术性地概述了 LUCI4HPC 在后台的工作方式。

LUCI4HPC 由一个在头节点上运行的主程序以及客户端程序(每种节点类型一个)组成,客户端程序在节点上运行。主程序启动多个进程,这些进程代表 LUCI4HPC 服务。这些服务通过共享内存进行通信。某些服务可以使用多个线程来提高其吞吐量。这些服务负责管理集群,并提供基本的网络功能,例如 DHCP 和 DNS。LUCI4HPC 的所有部分都是从头开始用 C/C++ 编写的。唯一使用的第三方库是 OpenSSL。除了 DNS 和 DHCP 服务之外,还有一个 PXE 启动过程所需的 TFTP 服务。

心跳服务用于监控节点并检查它们是启动还是关闭,以及收集信息,例如当前负载。先前描述的调度器也通过服务实现,这意味着它可以直接从共享内存中的其他服务(例如心跳服务)访问信息。这可以防止它将作业发送到已关闭的节点。此外,其他服务(例如控制面板)可以轻松访问有关当前作业的信息。

软件包缓存可用,这最大限度地减少了外部网络连接的使用。如果一个节点请求一个软件包,它会从 Ubuntu 存储库下载该软件包并将其放置在缓存中,以便来自其他节点的后续请求可以直接从中下载该软件包。用户文件的同步由单独的服务处理。此外,LUCI4HPC 命令行工具用于同时在多个节点上执行命令。这是通过所谓的执行服务实现的。某些服务使用标准协议,例如 DNS、DHCP、TFTP 和 HTTPS 进行网络通信。对于其他服务,设计了新的自定义协议以满足特定需求。

总之,此处介绍的软件旨在提供一种简单快捷的方式来安装和管理小型高性能集群。此类内部集群为根据您的特定需求定制硬件和已安装的程序和库提供了更多可能性。

LUCI4HPC 采用从头开始编写所有内容的方法,保证了所有组件完美契合,没有任何格式或通信协议不匹配的情况。这使得可以实现更好的自定义和更好的性能。

请注意,该软件目前处于 beta 阶段。您可以在注册后从网站免费下载。欢迎您进行测试并在论坛中提供反馈。我们希望它可以帮助较小的机构维护内部集群,因为计算方法正变得越来越重要。

资源

LUCI4HPC: http://luci.boku.ac.at

分子建模与模拟研究所: http://www.map.boku.ac.at/en/mms

加载 Disqus 评论