Condor:在预算上构建Linux集群

2021-04-23 04:26:56

所以你需要很多计算能力,但不想花费数万美元在商业集群上?或者也许你只有很多机器坐着闲着,你想放心使用?您可以仅使用自由软件和现成的组件构建强大且可缩放的Linux群集。就是这样。 Fedora Core 3将是我们的基本分布,因为它是由Drbl和Condor的自由提供,并得到很好的支持。出于本教程的目的,我们假设您已安装在即可成为您服务器的机器上的FC3。服务器计算机将负责存储和服务客户​​机能够工作所需的所有文件。它也将作为集群与外界之间的防火墙。

DRBL自己可以创建一组可以用作瘦客户机的机器,例如,课堂设置。通过添加Condor Clustering软件,我们将这组机器转换为可以大规模执行高吞吐量科学计算的计算集群。您可以在服务器上提交串行或并行计算作业,并且CondOr负责将作业分发到空闲群集计算机(如果有的话)或将它们放入队列,直到所需的资源可用。 Condor还可以在作业上执行定期检查点,如果某些内容导致运行以重新启动的计算机,则重新启动它们。

最终产品非常稳定。您可以在系统中添加和删除计算节点,而无需重新配置任何内容。将机器指定为群集的成员需要在服务器上的硬盘空间中的一个小额损失来存储一些配置文件;在我的群集中,72台机器的配置文件在服务器上使用少于3GB的空间。

在此示例中,我们将假设我们的服务器有三个网络接口:eth0,连接到外部世界,eth1和eth2连接到客户端计算机。我们正在为客户机使用两个不同的子网,以便在两个不同的路由器上传播网络流量。我们的客户机是廉价盒子,只有主板,CPU,RAM和网卡。

在开始安装DRBL之前,应将eth1和eth2配置使用私有IP地址(例如192.168.x.x)并设置客户端的BIASE通过网卡启动。

DRBL作为小型RPM包提供。要将其设置为我们将使用两个安装脚本:DRBLSRV,配置服务器和DRBLPUSH,配置客户端。通过运行开始与Drblsrv开始:

此Perl脚本安装DRBL所需的软件包(例如DHCP和TFTP)如果它们尚未安装,则询问您是否要更新系统。如果选择执行更新,它将运行yum以更新有更新版本的所有包(类似于如果您手动运行Up2date会发生什么)。默认选项适用于大多数情况。您只需记住,如果您从测试或不稳定的目录下载DRBL RPM以选择是,当您想使用测试或不稳定的包时选择是。

drblsrv完成后(可以采取相当多的时间,特别是如果您有速度慢速互联网连接,并且您要求更新系统)是时候运行Drblpush:

第二个Perl脚本是系统的主作主流。它配置并启动群集工作所需的所有服务。它会自动检测分配给它们的私有IP地址的网络接口,并询问您要在每个中设置有多少客户端。为了增加安全性,您可以将引导过程(通过DHCP)绑定到客户端的MAC地址。如果您在打开状态(例如,在课堂内)在未知的情况下,任何人都可以插入新机器,此功能非常有用。我们将假设我们的系统在封闭的门后面,只能通过SSHING到服务器来访问用户,因此我们将为此选项选择n,并且只需告诉DRBL我们在每个网络接口上看需要多少客户端。它们都在启动时首先提供IP地址。

在配置过程的阶段,DRBL将向您呈现您的设置的小图形视图:

NIC NIC IP客户端+ ---------------------------- + | drbl服务器|| || + - [eth0] xxx.xxx.xxx.xxx + - 到wan | || + - [eth1] 192.168.110.254 + - 客户组1 [24个客户,他们的IP | |从192.168.110.1 - 192.168.110.24] | + - [eth2] 192.168.120.254 + - 客户组[客户组[24客户,他们的IP | |从192.168.120.1 - 192.168.120.24] + ---------------------------- +

在这个例子中,我们为每个子网上的24台机器腾出空间。如果您的配置不看出您打算的方式,您可以按Ctrl-C并重新启动刮擦;您的系统中没有任何改变。在此之后,您可能希望从默认值更改的唯一选项是引用引导模式的选项。由于这些机器仅用于编号次处理,因此您可以将引导模式设置为“2”以获取文本模式,因此您不会浪费资源启动永远不会使用的X服务器。您可以在默认值下安全地留下所有其他选项,或修改它们以满足您的特定目标。如果在以后您更改服务器上的内容,并且希望这些更改传播到您需要重新运行Drblpush的客户端。

在这种情况下,您可以选择保留旧客户端设置并仅导出更改或从头开始重做所有内容。 DRBL成功完成后,您可以引导客户端计算机,如果一切按计划进行,您现在应该拥有基本的群集系统并运行。如果您运行到任何问题,您可以使用该项目的支持论坛。我的经验一直在于,您通常在一天内从其中一个开发人员获得回答。

为了使我们的大多数新的Linux集群我们将安装Condor,这是由威斯康星大学开发的批处理系统。下载最新的tarball,解压缩,并运行#./condor_install

安装脚本提供了大量的详细信息,就每个选项方式意味着什么,因此您不应该有很多问题设置它。但是,您必须记住,当它询问文件系统,帐户和密码文件时,请记住服务器和客户端之间的所有内容并相应地回答。此外,如果您希望能够使用Java支持,您需要在安装Condor之前安装Sun的Java虚拟机。 (如果您之后安装它,您可以通过Condor的配置文件或重做CondO安装。)消息传递接口支持需要MPICH安装(LAM的实现不用Condors),并且在安装后可能会在配置文件中滋补配置文件。有关Condor安装及其许多功能的更多详细信息,请参阅Online Online和非常活跃的邮件列表,以便在下载软件时订阅。

此命令应产生所有其他Conden所需的进程。在服务器上,您应该可以看到运行的五个Condor_进程:

#ps -ef | Grep Condorcondor 16418 1 0 14:18? 00:00:00 Condor_Master -Fcondor 16477 16418 0 14:20? 00:00:00 Condor_Collector -Fcondor 16478 16418 0 14:20? 00:00:00 Condor_Negotiator -Fcondor 16479 16418 0 14:20? 00:00:00 Condor_schedd -fcondor 16480 16418 0 14:20? 00:00:00 Condor_Startd -Froot 16503 16382 0 14:20 PTS / 4 00:00:00 Grep Condor#

当您在客户端上启动Condor,您应该看到外部的所有内容除Condor_collector和Condor_negotiator之外。有时安装程序有点混淆,即服务器有多个主机名(eth0,nfsserver_eth1和nfsserver_eth2的常用主机名);在这些情况下,运行服务器上的Condor_master将仅启动客户端计算机使用的服务。您可以通过使用condor_configure轻松解决问题,强制当前计算机(将所有主机名)成为服务器。这将更改相关配置文件,之后您必须告诉Condor重读它们:

之后,当您运行condor_status时,您应该能够将服务器计算机视为Condor群集的一部分。

$ condor_statusname Opsys arch状态活动LoilV Mem ActvteTimeUnderDark Linux Intel Unicuremed Idle 0.240 1518 0 + 00:20:04机器所有者声称无人认领匹配的抢占抢占式英特尔/ Linux 1 0 0 1 0 0总数1 0 0 1 0 0 $

如果您现在运行condor_master,则应在几分钟内看到将客户添加到此列表中(通常在五到10分钟内,但您拥有更多的计算机,所有这些计算机都需要使用服务器完成握手所需的时间越长。

在线提供了许多教程(更不用说官方手册)教导您使用Condor的基础知识,但它的机制是相当简单的,特别是如果您之前使用过其他批处理系统。

要将作业提交到群集中,您需要创建一个提交脚本 - 一个文本文件,应该看起来像这样:

在此示例中,我们的可执行文件称为Hello(传统的“Hello World”程序)。我们正在使用vanilla Universe(只是您的正常磨机可执行文件;检查手册,了解其他宇宙)。输入,输出,错误和日志指令告诉Condor用于STDIN,STDOUT和STDERR的文件,并记录作业的执行。最后,队列指令指定要运行的程序的副本。 $(进程)宏允许每个作业使用不同的文件集,因此作业0将使用Hello。*。0,作业1使用Hello。*。1等。

在您准备好提交文件后,您可以通过运行condor_submit hello.sub将其提交给Condor。您可以使用condor_q检查您的作业状态,这将告诉您队列中有多少作业,其ID以及它们是运行还是空闲,以及一些统计数据。

Condor有许多其他特征;我在这里表现出的是如何将其提升和运行的基础知识。在阅读手册时,您应该特别注意标准宇宙,这允许您检查您的工作(以特殊链接的成本)和Java Universe,它允许您无缝运行Java作业。

您还可以将Condor添加到服务器和客户端的引导顺序(按照手动和Rerun Drblpush中的说明进行操作。通过执行此操作并将DHCP服务器设置为允许更多的计算机,可以通过简单地将它们连接到一个子网并引导它们来轻松地将计算机添加到群集。他们将自己开始秃鹰,连接到中央经理,只需几分钟就可以运行工作岗位。

您可以关闭集群机器,他们的工作将继续(在标准宇宙中)或在不同的机器上重新启动(在vanilla Universe)。这允许管理系统的许多灵活性。此外,通过在给定的时间开始和停止DHCP服务器,您可以更改客户端的引导过程。如果您有一个充满了需要运行Windows的计算机实验室,则非常有用,但在晚上可以自由地添加到群集中。只需修改客户端BIOS的引导设备序列以首先从网络启动,然后只能从硬盘驱动器启动。如果DHCP服务器在它们上,它们将从它引导并加入群集;如果不是(例如,在早上),从网络启动的尝试将失败,它们只会从硬盘驱动器启动。这将允许您将所有这些Windows计算机放入良好的使用,而无需更改其设置(其他)比BIOS和可能是调度程序作业,让他们在晚上靴子出来)。