安装Linux高性能计算集群
http://www.chinaunix.net 作者:古道西风响马 发表于:2004-04-24 09:01:07
安装Linux高性能计算集群
By Christopher Stanton, Rizwan Ali, Yung-Chin Fang, and Munira A. Hussain (Issue 4 2001)
将一个新实施集群框架迁移到可用的高性能计算集群的第一个挑战就是像第三方软件包一样安装操作系统。在4到8个点的集群中,可以手动的安装每一个节点。但是,较大规模的,工业化的集群要求更有效的方法。本文描述了不同类型的集群配置,高效的Linux安装方法。和每一种方法的好处。
--------------------------------------------------------------------------------
高性能计算集群的主节点和计算节点的配置使用三种主要的类型:松散结合型、适度结合型、和紧密结合型。每一个配置描述计算节点与主节点的依存关系(参见图一)。尽管所有三种类型都要求主节点的可用性来保证任务的运行,但是主节点状态对计算节点的可用性并不是必须的。
[img:4635bd5afa]http://shanyou.sti.gd.cn/linux/images/ps4q01-linuxhpc1.jpg[/img:4635bd5afa]
图一:主集群的计算节点配置
从操作系统的视点来看,在松散结合型集群中计算节点是完全自主的机器。每节点都有一份操作系统(OS)的拷贝,这个操作系统允许任何人引导系统并登录节点而不需要与与主节点联系――除非网络使用动态Internet协议(IP)地址。获得动态IP地址失败不会抑制一个节点的成功启动,但是它会只能通过本地控制台访问。
集群适度的结合将计算节点跟紧密的与主节点结合。在这配置,计算节点的引导过程中需要主节点的介入,在最简模式,程序和信息需要在引导过程中定位主节点。一旦计算节点已经从主节点接收到所有需要的文件系统,他就会作为独立的机器运转并可以通过所有被定位的文件系统登录。
紧密结合型系统对主节点的依靠更深入一步。计算节点必须通过网络从主节点上加载操作系统。在紧密结合型集群中的计算节点不在本地存储文件系统,除此以外可能会有交换(swap)或临时(tmp)文件系统。从操作系统的视点出发,在计算节点和柱节点之间没有太大的差别。确实不存在独立登陆计算节点的能力。处理空间是平衡的所以集群看起来更像一个大的单片机而不像一个有小型的计算机组成的基群。
以下的章节解释了建设和安装理想类型集群的可以使用应用和方法。每一种配置都具有独特的优势和缺陷,并且讨论和研究了哪一种配置最能适用于特别的需要。
安装松散结合型集群
在松散结合型集群中,每一个计算节点都有一份操作系统的本地拷贝。最单调和令人厌烦的工作就是每次都使用CD进行安装。自动安装松散型集群的方法包括:
Kickstart文件
The Red Hat& Kickstart的安装方式是让用户创建一个单一的简单的文本文件来让Red Hat Linux许多的安装操作诸如语言选择、网络配置、键盘选择、引导文件加载器的安装(例如Linux Loader(LILO)或GRand Unified Bootloader(GRUB))、磁盘分区、鼠标选择、和X Windows的配置。Kickstart文件包含三个部分:命令、软件包列表、和脚本。
命令. 命令部分包含所有安装选项例如语言和分区特征、网络配置、和安装方法。例如,管理员可以使用网络配置选项来指定节点的IP地址、主机名称、和网关。
Packages.以%packages命令为起始的Kickstart文件部分显示需要安装的软件包的类表。可以将一个组成部分的名称(对于一组相关的包)或独立的软件包名称列入清单。
在Red Hat Linux 光盘(Redhat/base/comps)上的一个comps文件显示了一些预定义的组件。用户也可以建立他们自己的构架和所需要的软件包列表。(注意:为建立一个构架,用户必须建立一个新的含有国际标准化组织的带有他们自己修改过的comps文件的标准化(ISO)镜像CD-ROM。)文件的第一个组成部分显示的是Linux运行所必需的软件包的基本的组成部分。
脚本.管理员可以在Kickstart文件中使用'安装后执行'命令来安装没有包含在CD-ROM中或更进一步协调的软件包,组如定制的主机文件或允许SSH(安全外壳)。
安装后执行的部分通常在Kickstart文件的结尾部分,并且以%post命令开始。要增加的软件包必须是可以从服务器或者网络上可以获得的,通常是在主节点上。%post部分看起来如图2中所示。这些例子命令将从IP地址为10.180.0.2的服务器上安装名为my_driver.rpm的rpm包。
[img:4635bd5afa]http://shanyou.sti.gd.cn/linux/images/ps4q01-linuxhpc2.jpg[/img:4635bd5afa]
图二:Kickstart文件安装后执行命令
Red Hat 7.1包括一个Kickstart配置工具,一个图形化用户界面(GUI)的工具用来建立Kickstart文件(代替键入操作)。在选择Kickstart操作之后,用户可以点击保存文件按钮来生成kickstart文件。配置工具允许用户来选择更多的Kickstat文件需要的操作并为那些需要改变通常的文件来满足他们需要的专业用户提供更多的选择。
Kickstart安装方法
Kickstart文件中的安装方法命令让管理员定制安装方法:使用本地CD-ROM或本地磁盘,或通过网络文件系统(NFS),文件传输协议(FTP),或超文本传输协议(HTTP)。最麻烦的事情就是为每个节点创建Kickstart文件并将文件保存到Red Hat安装引导软盘上。当系统从软盘引导时(Red Hat Linux CD必须在CD-ROM中,并且Kickstart文件必须指定从CD-ROM进行安装),安装进程自动基于软盘上的Kickstart文件所制定的特备选项开始运行。每一个节点拥有不同的网络设置(IP地址和主机名)并且显然需要分别放置在不同的盘上。这种方式对于大规模的集群安装是荣誉乏味的:它要求手动干涉将软盘和CD从一个节点到另一个节点,除非你拥有很大数量的软盘和CD可以在所有节点上同时进行安装。
更有效的方法是通过网络执行安装。同样的,每一个节点必须有自己的软盘,但是不再需要CD。Kickstart文件的'安装方法'部分需要更改为支持FTP或NFS安装。一旦Red Hat使用Kickstart文件引导进行安装,它就会从特定的网络服务器上接收安装镜像文件(通常是主节点)。
在最经常使用的安装方式中,管理员将Kickstart文件与CD镜像文件一起放置在网络中。引导协议/动态主机配置协议(BOOTP/DHCP)服务器和NFS服务器比选安置于本地网络中,通常在集群的主节点中。BOOTP/DHCP服务器必须包含所有要在集群中安装的设备的配置信息。BOOTP/DHCP服务器向网络客户提供网络信息,就象安装引导核心的位置和虚拟磁盘以及Kickstart文件的可能的位置。如果Kickstart文件的位置没有被提供,安装程序会尝试着去读取/kickstart/1.2.3.4-kickstart文件,其中1.2.3.4是在DHCP服务器中被安装设备的IP地址。最终,NFS客户端mount文件路径,拷贝特定的文件到本地硬盘上,并像在Kickstart文件中描述的一样开始对机器进行安装。
使用系统镜像器(Systemlmager)安装集群
是远程系统复制和维护系统,用来减少创建集群中自主系统的重复的步骤。系统镜像器要求管理员在克隆剩余的计算节点前来安装和配置一个样本计算节点。这种方式的一个先进之处就是在安装过程中,管理员不需要写特殊的脚本来安装附加的软件包或配置系统设置。
在系统镜像器方式中,将要被作为源或者样本系统使用的计算节点被称为'黄金客户端'。管理员必须使用传统的方法首先安装和配置所以它对所有计算节点具有代表性。
系统镜像器,是一个安装在主节点的,然后使用getimage命令创建整个黄金客户端机器的系统镜像。这个镜像只包含远程设备的文件而不包含整个分区的镜像,这样可以节约空间。prepareclient命令建立一个分区信息表和被mount的文件系统的列表。这允许分区被建成具有相同数量的mount点和尺寸。
主节点现在包含用来创建黄金客户端副本的信息(参见图3)。在对计算节点的安装过程中,addclient命令允许管理员调整每一个节点系统特定的配置信息。Addclient命令提示主机名基本信息和范围、客户镜像、和IP地址。基本信息表现了主机名的静态部分,范围表现了附加主机名的开始和结束数值。例如,将node作为基本信息并且1-3作为范围,那么安装路由将建立node1,node2,node3。
[img:4635bd5afa]http://shanyou.sti.gd.cn/linux/images/ps4q01-linuxhpc3.jpg[/img:4635bd5afa]
图三:系统镜像器安装方法
当名称转换完成之后,管理员被提示指派安装镜像和IP地址到到这些机器上。主机名和相关的IP地址被加入主机名称列表中,并在安装和引导时被使用。
依赖于在主节点上完成这些步骤之后,必须对计算节点选择引导方法引导方法。系统镜像器核心和虚拟磁盘可以从便携介质诸如软盘和CD-ROM(分别通过makeautoinstallflopy或makeautoinsyalled命令创建)引导。另外,核心和虚拟磁盘可以通过预引导执行环境(PXE)进行网络引导。
信筒镜像器包含对Linux PXE 服务器(PXELinux)预建配置文件,该文件必须运行于主节点上。PXE来说是一种简单的协议,该协议允许计算节点与BOOTP/DHCP服务器联系。BOOTP(和DHCP,对BOOTP的扩展)允许服务器提供一个客户端――通过硬件介质控制(MAC)地址识别――许多初始配置信息例如IP地址、子网掩码、广播地址、网络地址、网关地址、主机名、以及核心和虚拟磁盘下载路径。
一旦节点被引导,它必须重新获得他的IP地址和主机名称。这种操作是通过在主节点上的DHCP服务器指派所有的值或通过安置所有的值在每一个节点的引导软盘上。系统镜像器提供一个DHCP配置-创建协议,makedhcpserver,这些会联系映射主机名和IP地址的DHCP 配置文件。Makedhcpstatic命令会创建一个在机器和主机名/IP地址对之间的静态映射。
通过系统镜像器维护集群
系统管理员也可以使用黄金客户镜像作为一个主管日志和一个单一的管理点来实施集群范围内的修改――从一个文件到一个整体的软件包。首先集群管理员在黄金客户端上做需要的修改。然后,管理员可以从集群的基础中更新现在正在使用的镜像或创建一个新的镜像。
这种方法允许管理员在更该中断集群时来建立版本的历史记录。一旦一个新的镜像被建立,剩余的计算节点被这种改变同步。这通常需要最小的时间,因为只有被修改的文件被拷贝到每一个节点上。如果这种改变确实破坏了集群,它可以从较早已知可以正常工作的镜像中重新同步回来。
安装适度结合型的集群
在一个适度结合型集群中,每一个计算节点可以被作为一个独立的机器来访问,但是每一个节点并不具有操作系统的本地拷贝。管理员可以使用不同的方法来安装适度结合型的系统。下面的章节描述了两种通常的方法:混合模式(存储在本地的临时数据)和完全磁盘无关模式(计算节点没有硬盘驱动器)。所有的方法都使用中心服务器来存储和加载操作系统和其他系统信息。
从网络中引导
计算节点需要通过网络重新更新许多必要的操作系统组件。第一必须可以通过网络引导,需要计算节点支持网络引导协议,例如PXE。所以节点可以联系BOOTP/DHCP服务器来获得配置信息。
每次一个节点引导,它被分配他的网络信息并被给与一个路径指明通过TFTP协议从哪里下载Linux核心和虚拟磁盘。尽管核心和虚拟磁盘可以被定位在同一个作为BOOTP/DHCP服务器的服务器上,但并不是必须的。这个核心必须支持初始化虚拟磁盘这是因为整个root文件系统会被定位在虚拟磁盘上。这允许节点在没有对NFS进行mount时进行引导。
为使用虚拟磁盘作为本地跟文件系统,需要作一些必要的修改。当核心和虚拟磁盘被记载到内存中,核心mount虚拟磁盘作为可读写文件系统。然后他搜寻/linuxrc文件(二进制执行文件或一个以#!开始的脚本)。在这个文件运行完成后,核心umount虚拟磁盘并从磁盘上mount一个传统的根文件系统。因为根文件系统并不存在于本地的的硬盘上,/linuxrc文件必须链接到/sbin/Init。
所以操作系统在这个点上直接运行,这两种方法的实施过程是分离的。
混合模式. 在hybird模式中,更新的可引导核心为本地存储检查已经存在的swap,var,和tmp分区并登录。如果当前设置的分区不包含在本地的介质中,他们被建立和挂接(mount)。混合模式削减了网络负载,存储日志在静态存储设备上,并提供swap空间用于内存交换。存储静态日志允许swap在引导过程中记录日志。
磁盘无关模式. 磁盘无关模式使用定位于任意初始化虚拟磁盘上的var和tmp目录,另外的虚拟磁盘稍后进行下载,或者使用nfs-mounted目录。使用NFS-mounted的var目录通过集群范围内的日志文件提供一个单一的点,并且日志不会因为重新启动而丢失。这种好处可以方便的进行管理:在NFS输出(NFSexporting)设备上运行本地应用允许日志监视如同精简日志报告一样。因为没有本地磁盘存在,内存交换必须通过NFS进行或者根本不需要交换。
内存交换是十分重要的,这是因为如果一个应用的执行需要很大的内存量,程序会发生拥塞或者操作系统会被挂起。尽管内存可以通过网络在非本地硬盘上进行交换,这种操作会严重的损环集群性能。由于这种原因,如果一个需要未知内存数量的任务将在集群中运行,不推荐使用磁盘无关节点。
中等结合度集群所提供的管理优势
在这两种方法中,在最终的目录通过网络或本地驱动器被挂接(mount)后,计算节点会被完全的引导并准备接受任务。从一个外部作为集群的视点,每一个节点作为一个独立的机器运行。
从管理的视点来说,升级每一个计算节点是十分简单的。因为只有一个计算节点的镜像存在,管理员只需要升级一个镜像而不是所有的结点都需要修改或升级就可以使NFS共享目录立即生效。如果改变涉及到需要下载的节点核心,虚拟磁盘,或其他操作系统的片段,管理员必须重新引导每一台机器使更该生效。
紧密结合型集群消除差别
紧密结合型集群试图消除计算节点和集群之间的差别。用户只能看到主节点,这看起来很像一个并行计算机群体。计算节点只是主节点的简单的扩展并且是纯粹的处理平台。Scyld Beowulf ?系统就是创建这种集群。
实施Scyld Beowulf
Scyld 是通用的软件包,可以提供一个简单方便的安装、管理、和维护Beowulf 集群的方法。一个计算节点集从主节点被管理和控制。这种集群和传统集群Beowulf的差异是因为集群运转必须像一个单一的、高能力的并行计算机。计算节点是纯粹的不提供登录外壳的计算节点。系统工具被修改所以管理员可以从主节点上查看整个处理空间,类似于对在独立的机器上的本地处理空间所看到的。
安装主节点是从Scyld Beowulf CD开始的,这是Red Hat Linux 6.2的修改版本。这种修改包括增加集群管理和控制应用、信息传递库、和为计算节点所修改的核心。一旦主节点从CD上安装完成,管理员可以选择从个新的计算节点上安装的方法。一个计算节点安装传送必要的核心,虚拟磁盘,和库,这些分成两步执行。
第一步. 许多介质可以传送第一步的核心和虚拟磁盘到计算节点上:软盘、CD-ROM、基本输入输出系统(BIOS)、硬盘、或者使用诸如PXE的网络引导协议通过网络传输。前四个只要求可引导核心定位于被选择的设备上。从网络引导要求对主节点进行修改。主节点会需要安装和配置一个TFTP服务器和一个DHCP服务器。当一个计算节点第一次被引导,它会收到一个IP地址和通过TFPT协议从什么地方下载第一步所需的核心和虚拟磁盘的定位信息。一旦节点被引导到第一步,它就准备好计入集群。
第一步将计算节点放置在一个循环中,这个循环通过反向地址解析协议(RARP)重复的广播它的MAC地址来表示它是可以使用的。在主节点上,Scyld系统的一个后台进程将探测这种活动并将MAC地址加入到未知设备列表中。一个称为beosetup的图形应用允许管理员将该设备从未知设备迁移到计算节点列表中。计算节点基于他们加入计算节点列表的顺序而被指派一个节点识别符号。
第二步. 这一步在机器被加入到计算节点列表中后开始。主节点首先通过TCP/IP联接传送第二步核心到被选中的计算节点上。当前运行的第一步核心通过双核心转换(monte)技术切换到第二步核心。
在这个核心完成引导之后,它下载所有的需要的共享库,挂接(mount)输出文件系统、下载并开始两个用户进程beostats和beoslave。这些用户进程允许分别的进行节点统计表的传送(例如加载和内存压缩)到主节点和从主节点上对进程进行进程迁移。在计算节点上永远不需要登录控制台,所以所有的控制和监视集中在主节点和通过这两个用户进程的通讯上。
紧密结合型及群的优势和缺点
必须注意到没有信息被永久的存储在计算节点上。如果需要的话,Scyld系统允许创建完整的磁盘无关型计算节点但也提供系统的本地安装能力,例如第一步和第二步以及交换空间(更像中等结合度的方法)。从用户到管理员的角度,集群都是一个很大的机器,这是这种Beowulf集群的主要先进性。紧密完整的的集群管理和集群应用套件提供统一的管理工具集,这可以降低时间需求和协调问题。
不幸的是,这种集群类型也具有和中等结合度集群的某些缺点并且将集群捆绑到一个单一的软件供应商来实现整个解决方案。
平衡管理难度和系统信能
给与集群的配置方法的选择应该基于用户的需要。随着集群结合程度的增加,对于集群管理的负担逐步降低。不幸的是,这种方法会相反的影响系统的性能,这是因为通过网络管理削减了可使用的网络带宽。在结合度非常紧密的集群中,因为集群设计的先天特点,许多通常的应用和功能会操作失败。
Christopher Stanton (christopher_stanton@dell.com) 是Dell的可扩展系统工作组的高级系统工程师。他的HPC集群相关目标包括集群安装、管理和性能基准测试。Christopher毕业于位于奥斯汀的德州大学,并获得计算机B.S.证书和特别荣誉称号。
Rizwan Ali (rizwan_ali@dell.com) 是Dell的可扩展系统工作组的系统工程师。他现在的研究目标是性能基准测试和高速内部连接。Rizwan获得了明尼苏达大学的电子工程B.S证书。
Yung-Chin Fang (Yung-Chin_fang@dell.com) 是Dell的可扩展系统工作组的成员。Yung-Chin拥有尤它州立大学计算机科学 M.S证书。他现在工作于休斯敦大学的计算机科学的 Ph.D。
Munira A. Hussain (munira_hussain@dell.com) 是Dell的可扩展系统工作组的系统工程师。她在Urbana-Champaign的伊利诺斯大学获得了她的电气工程.附加的计算机科学 B.S 证书
更多信息
Kickstart:
http://www.redhat.com/docs/manuals/linux/ RHL-7.1-Manual/custom-guide/ch-kickstart2.html
SystemImager:
http://systemimager.org
Scyld:
http://www.scyld.com |