集群技术综述

来源:百度文库 编辑:神马文学网 时间:2024/04/30 20:45:49
2002集群技术综述
(496 本文字数)
(1930 阅读)   
2002集群技术综述
在本文,把在freshmeat.net网站上已有的Clustering/Distributed Networks工具做一个综述。为了更清楚地描述,将按以下分类来说明:
构建和使用集群的软件:
高性能科学计算集群软件(Beowulf/Scyld, OSCAR, OpenMosix...),包括象SSI(Single System Image systems)这样的特殊集群系统
高可用性集群软件(Kimberlite, Heartbeat...)
负载均衡型集群软件(Linux Virtual Server, Ultra Monkey...)
常用的管理集群软件:
文件系统(Intermezzo, ClusterNFS, DRBD...)
安装和配置(FAI, System Installation Suite...)
监视和管理(Ganglia, MOSIXVIEW, Performance Co-Pilot...)
编程开发与集群计算环境(MPI, PVM, spread...)
辅助小程序
构建和使用集群的软件
在本节中,将介绍一些完全的集群解决方案(从安装、管理、监视到编程开发环境)。要注意的是这些解决是针对不同类型集群的,比如是专门为高性能科学计算集群,它并不适合高可用性集群。
高性能科学计算集群
高性能科学计算集群是当前的热点。其目的是对任何类型的任务提供一个可任意分配多结点机器的系统资源环境,以充分利用机器的能力。比如环境模拟和动画渲
染等应用。
下面是一些较成功的项目:
首先是众所周知的Beowulf项目,在Scyld网站保留着很多相关的内核和工具来构建一个“单一映像系统”。目的是在一台主控机器上控制集群内部众多的结点,达到集群对外表现为单一的主机形式(从系统资源管理到应用程序运行)。
对单一映像系统最重要的一点是它们通常要在内核空间运行,因此要注意应用中需要特殊的内核。内核版本和补丁是这些应用常见的安装方法。应用单一映像系统来构建集群的项目有Compaq的NonStop Clusters for Unixware软件,现在它成为Single System Image Clusters的一部分。而OpenMosix是对标准内核做了相应的扩展开发,并提供了相当多的用户程序以提高集群的使用效率。还有SCE(Scalable Cluster Environment),也提供了相当多的构建和管理集群的工具。
Bproc是Beowulf项目的核心功能,现在以Clubmask形式出现。其它有用的项目有Kickstart, cfengine, the Maui scheduler, LAM/MPI, 等等。
另外也有不需要改变内核的解决方案。它们通常是对用户任务直接进行调度、分发,比如Cplant, the Ka Clustering Toolkit, and OSCAR都可以让你用这种方式构建、使用集群系统。
现在也有一些针对高性能科学计算的集群系统分行版本出现,主要是对一些常用的程序进行收集、整理后发布。比如Warewulf是一种发行版本,配置并生成一张安装光盘后,在各结点机上直接安装后,就直接得到了一个可用的集群系统。
ClumpOS是针对MOSIX的一个发行版本,它提供一张光盘,用户可以迅速地将任一机器自动变成集群的结点机。最好的是它不用安装,其集群系统全部是基于光盘的,即从光盘启动该机就是集群的一个结点,而不从光盘启动,该机依然可以使用它原有的系统。MSC.Linux则提供了从内核功能扩展、引擎工具、Beowulf工具、桌面环境等适合集群计算的一个发行版本。
高可用性集群
现在维持系统的可用性对每个人都是非常重要的。没有人希望重要的服务有停顿的时候,如mail、web、database或其它的服务。过去,有很多项目为解决这个目标而努力,最终有些项目成功并成为成熟的系统,如AIX和Solaris。
高可用性的实现思想很简单,一台机器正常工作,另一台机器在待机。当主工作机出现故障时,待机者接管相应的服务。通常采用的办法是共享文件系统、硬件/IP地址抢夺,自动侦测对方系统状态,等等。几乎每个项目都采用类似的办法。
Kimberlite利用共享的存储设备和数据一致性保证实现。Piranha (a.k.a. the Red Hat High Availability Server Project),实现了两种解决方案——双机热备和多机负载均衡。最有名的项目是High Availability Linux Project,即Linux-HA。其核心组件是Heartbeat,提供了心跳机制、监视功能和IP抢夺程序。
它可用串口设备、UDP广播/组播实现心跳检测,并可在一个结点机宕机时重新分配IP地址和其它资源给集群内部的各结点,而宕机结点恢复时又将集群系统恢复到原来的样子。一个引起广泛关注的项目是peerd,它提供简单的监视和灾难恢复。它并不提供秒级的监视,但提供了在服务器失效几分钟后完全恢复服务功能(包括硬件上的恢复,如同样配置的服务器)的解决方案。另一个值得关注的项目是Poor Man‘s High Availability项目,其使用动dnsart.com网站提供的态DNS分配服务来实现网站服务的高可用性。
下面要介绍另一类型的高可用性:
负载均衡集群系统
负载均衡是一种特殊的高可用性功能,它既提供了高可用性项目的结点监测、恢复功能,还能将服务请求均衡分布到各结点,这可提高服务的响应和减轻服务器的
负载。
负载均衡技术一般有一个前端分配机和两个以上的服务机,前端机把用户请求分发给服务机,如果服务机的服务是可用的,就由它们处理用户请求并返回结果。
最有名的负载均衡项目是Linux Virtual Server Project。它可以将用户请求均衡地分发给各服务器,任何基于TCP或UDP协议的服务都适用,如HTTP(S), DNS, ssh, POP, IMAP, SMTP, and FTP。很多负载均衡项目都是基于LVS的。Ultra Monkey扩展了LVS项目,提供心跳检测、结点监视功能,为负载均衡型集群提供了高可用性。而原来的Piranha是完全基于LVS的。Keepalived为LVS增加了健壮、自动的灾难恢复功能。它监测各结点,当结点宕机时,它通知内核把宕机服务器删除,保证用户请求不会被错误分发。Zeus Load Balancer不基于LVS,但提供了相似的功能。它包括了保证网站服务的流量控制、站点状态监视、灾难恢复功能。另一个不基于LVS的项目是Pen,一个简单的适用于象HTTP/SMTP这样的TCP协议应用的解决方案。Turbolinux Cluster Server要介绍的最后一个负载均衡项目。它提供了从应用服务到硬件安全的灾难恢复解决方案。
常用的管理集群软件
本节将介绍常用的集群软件,包括执行环境、编程接口、监视/管理软件、文件系统等等。
文件系统
首先介绍文件系统和集群文件系统项目。现在有很多文件系统,其中很多都包括了日志功能,还有一些是专门为集群系统设计的分布式文件系统。因为有太多的文
件系统,这里只介绍比较常用的集群文件系统。
OpenAFS (an open version of the Andrew Filesystem originally developed at Carnegie Mellon University), GFS (the Global Filesystem), Coda, and InterMezzo是常见的集群文件系统。
另外要介绍一些对文件系统的扩展项目。ClusterNFS项目,提供了对Universal NFS Daemon的一些补丁,使得不同的结点机可以共享主控机上提供的一个根分区。它对不同的结点机提供了相应的“标志”信息。这对于构建NFS挂接根分区或是无盘集群是非常有用的。
另一个项目是ENBD,the Enhanced Network Block Device,通过DRBD项目可以允许远程磁盘变成本地的硬件块设备。这对建立一个镜像RAID很有帮助,不同机器上的数据可以实时地更新,提高了可用性。
安装配置
如果要安装数百台服务器,并一一配置,这将是个很难的过程。现在有一些项目可以帮助我们解决这样问题。
FAI(Fully Automatic Installation)自动安装项目。这是一个不需要交互的
Debian GNU/Linux系统安装软件。多结点的安装是自动进行的,当安装完成时,系
统已经正确配置并可正常运行,过程不需要与用户交互。要注意的是FAI只适用于
Debian GNU/Linux系统。
要安装机器,请使用System Installation Suite,这就是答案。
System Installation Suite项目是基于磁盘映像技术的工具。对已经配置好的结点生成磁盘映像,映像文件存放在映像服务器上,结点机从安装盘启动后会自动根据映像的内容生成与旧结点机一样的系统。现在它适用于Red Hat, Mandrake, SuSE, Conectiva, and Turbolinux。SIS不久也可以适用于Debian系统。SIS由三个项目组成:SystemImager, System Installer, and System Configurator。
监视管理
当管理上百台结点的集群服务器时,能够在单一的机器上管理这么多的结点是个有用的功能。在这方面有很多项目在进行,它们分别解决了不同的这方面的常见问题。ClusterIt仅用于维护和管理过大数目的系统。Ganglia是一个可扩展、有名的、大量测试过的、实时监视和远程执行环境。它在各地的大学、政府实验室、集群主机使用者中广泛使用,并得到一致好评。Performance Co-Pilot由SGI公司发布的一个监视和管理软件。原来是为IRIX系统编写的,SGI公司将它改为在Linux上运行并改为开源版本。经过多年的开发,SGI应该能够将它的技术和经验转为项目稳定、可用的保证。
以上项目可运行在任何系统上。除此之外,有些项目是为另一些专门的项目开发的,如MOSIXVIEW是MOSIX集群系统管理的一个GUI界面。它支持MOSIX和OpenMosix,做为一个可执行命令的前端界面。LVSmon是为LVS项目开发的维护LVS连接表的监视管理工具。
在这么多的项目中,很多项目是相似的。下面只介绍一些常用的:Syncopt是解决在多结点上保持软件一致性的问题。利用Syncopt,软件自动从一个中心服务器安装,保持各结点上的软件版本一致。
Fsync与rsync和CVS类似。它使得在不同的机器间的文件保持一致,有消除文件差异的功能和保持目录树结构的程序。它只是个Perl脚本,设计在以Modem网络连接速度上运行。Ghosts(global hosts)是个可对机器分组定义,生成宏定义的系统,利用这些宏,gsh,一个并行执行环境可以对不同的组执行相应的命令。最后,有一个项目是pconsole,它和Ghosts类似。但它是个运行界面,实际提供的是一个管理shell环境。用户可以通过它同时连接到多台结点机上,用户执行的命令将同时送到这些结点上运行。
编程开发与执行环境
当你建立起一个集群系统后,你怎么使用它?你如何编写程序以利用集群的优点?什么开发库和编程工具可以利用?有什么软件帮助你在集群上运行程序或对程序
的运行进行调度?这些问题在本小节将得到回答。
PVM意指Parallel Virtual Machine。它利用消息传递功能将多台机器形成集群形式。可以使用它的应用程序可用C,C++或Fortran编写,也可以编译为单独分开的进程。PVM++试图提供为PVM在C++开发时一个好用的开发库。pvmpov 或 PVM Gmake工具都使用了PVM接口。Pvmpov是为POV-Ray编写的一个补丁,它允许该渲染程序在基于PVM编程的程序可以在集群上运行。PVM Gmake是一个GNU make程序的扩展,其允许编译过程在多台结点上进行,缩短编译时间。
另一类的消息传递开发接口是MPI,指"The Message Passing Interface"。MPI有几种发行版本:LAM/MPI 和 MPICH是其中的两种。而Object-Oriented MPI是标准MPI在更高层次C++开发时使用的面向对象开发库。PETSc是为并行程序用MPI开发时可重用的数据结构和运行库。
另一个消息传递系统是Spread。Sprea是一个开发库,提供了消息传递接口,可以开发高可用性程序,如集群消息总线、高可靠数据库、灾难恢复程序。
现在你可能要问,如何跟踪在集群各结点机运行的程序。为此,你需要一个调度程序。这里有很多不同的调度程序,但在Linux集群上,只有两个最主要的,Condor and Maui。这两个调度程序可以处理调度优先级、跟踪资源分配、动态改变优先级/资源等等。
辅助工具
一个是IBM的Distributed Lock Manager项目。DLM是为VAX集群锁机制开发的。这是个特别的工具,并不是集群环境。在共享库里内含了相应的API接口。
Linux Terminal Server Project是构建无盘系统的有力工具(工作站、集群结点或其它类型的无盘系统)。LTSP提供利用远程系统资源的工具。
摘自 南大小百合(鸽子王)