Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103724491
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-26 21:08:38

developerWorks
 

级别: 初级

林凡 (), 辰讯软件工作室研发部经理

2004 年 6 月 01 日

这篇文章是《集群的可扩展性及其分布式体系结构》的第三篇。主要介绍集群的软硬件结构的层次结构模型、主要的分类方法和决定集群设计的四大要素:HA、SSI、作业管理和通信。笔者旨在通过几个不同切入点的分析,构筑集群的抽象模型,使读者在现实中分析、设计集群时有所参考。

首先,我们先来看一下组成集群计算机系统主要部件有哪些:

  • 多个高性能的计算机(PC、工作站或者SMP服务器)
  • 优秀的操作系统(分层结构或者基于微内核)
  • 高性能网络开关(千兆位以太网或者类似Myrinet的专有开关网络)
  • 网络接口卡NIC
  • 快速通讯协议和服务(如活动消息和快速消息)
  • 集群中间件(单一系统映象和可用性支持)
    • 硬件,如DEC的内存通道、硬件DSM和SMP技术
    • 操作系统内核或者粘合层,如MC和GLUnix
    • 应用程序和子系统
      • 应用程序,系统管理工具和电子表格
      • 实时系统,软件DSM和并行文件系统
      • 资源管理器和调度软件,如LSF负载均衡和CODINE分布式网络环境的计算
  • 并行编程环境和工具,编译器、PVM、MPI
  • 应用程序:串行和并行

这些组成部件并非在每一类集群系统中都是必须的,多数系统往往只实现其中的几种,主要是根据具体的需求来定。但如果以参考模型的角度来看,对于理解各个部件所处的位置及其作用来说,建立层次结构描述有助于从整体了解集群。



这里我们发现,集群的组成涵盖了软件到硬件的几乎每一个方面。如果把集群想象成类似OSI互联参考模型一样具有层次结构的话,那么从底层到顶层,覆盖了现有的硬件构造、网络设计、操作系统、中间件以及应用环境等所有层次的技术面。那么,在每一层选择什么样的技术就异显重要。采用现有的成熟的产品技术,可以大大降低构造集群的技术和资金风险,而选择适当的层次和技术点作为突破,又往往是解决性能、安全或者其他特殊需求的关键。

关于集群的设计目的,好处我们在前面已经详尽叙述过,这里不再讨论。简单的说,相对于较低的费用,集群要具备以下的特点:

  • 高性能
  • 可扩展性
  • 高吞吐量
  • 易用性
  • 高可用性




回页首


其实,往往现实中的产品会是某几个特性的综合。对于这些特性,从不同的参考因素来考虑,集群可以有以下的集中分类方式:



集群的分类

应用目的

我在集群的研究分类时,根据集群的用途通常把集群分为三种:

  • 强调计算能力的高性能计算(HP)集群,大名鼎鼎的Beawulf集群就是极好的例子。
  • 强调可用性的HA商用集群,开放源码社区中的Mon项目和REDHAT的PIRANAHA都是价廉物美的HA集群方案。当然,也别忘了SP2、Trucluster、Solaris MC这些老字号。
  • 既有HA的能力,又可以实现HP的集群,强调高吞吐量的综合型集群,比如MOSIX,LVS。

应用总是在变化的。最早集群只为解决计算问题而诞生,随着需求的发展才出现HA商用机群,以及后来的综合性质较强的高吞吐系统,而将来也一定会有更新种类的集群出现。

节点归属

如果从节点的归属情况看,可以分为:专用集群和"兼职"集群(也有叫做独用型和企业型)。

专用型集群往往用于超级计算任务或者用廉价PC组合成大型工作站,具有以下特点:

  • 一般安装在机房的机架上
  • 多数由同类型结点同构地组合而成
  • 一般通过一个前端进行访问

该集群主要是为了取代传统的主机或者超级计算机。可以把专用型集群当作单个计算机那样来安装、使用和管理。允许多用户登录到集群上进行交互式作业或批作业。可以大大提高吞吐量,以及缩短响应时间。

构造"兼职"集群主要是为了节省成本并充分利用结点的空闲资源,特点如下:

  • 结点必须是完整的SMP、工作站或者PC,连接着所有必须的外围设备
  • 地理上结点是分布的,不必处在同一个空间内
  • 结点可以有多个"属主"(也就是拥有者)。集群管理者对结点的管理权限是有限的。而且,所有者的本地任务优先级往往高于集群的任务
  • 集群大多是异构的,互联方式以标准通信网络为基础。

从上面的比较我们不难发现,使用节点资源的方式导致了两种不同归属集群的出现。专有集群中,特定个体并不拥有一个工作站,或者是一个节点,资源是集群范围内共享的,并行计算可以在整个集群上执行。"兼职"集群中个人拥有工作站,应用程序靠"窃取"CPU时间来进行运算。导致这种情况得主要原因是,大多数的工作站的CPU时间都是闲置,即使在高峰期也很少超过50%。我们也把在这种非专用的动态变化的集群上运行的并行程序叫做自适应并行计算。有些文章中的高吞吐集群也属于这一类。

组装方式

组装方式主要取决于互联技术和计算机空间技术。在松耦合的集群中,节点一般是相对独立的PC或者工作站,拥有完整的外围设备:键盘、鼠标、显示器。彼此通过LAN连接,距离上可以是在一个机房,也可以跨楼宇,甚至可以扩展到一个园区(比如校园网)的范围。随着带宽技术的发展,现在的松耦合集群已经可以跨地域范围进行资源整合。例如在网络负载均衡的集群环境中,就有不少解决方案是跨越几个城市进行集群流量平衡的,像网易的站点服务器,263的邮件服务器,可以在不同的城市之间做负载均衡。而对外却能表现出严格的"一致"性,形成统一的资源。

紧耦合集群往往从空间利用率、有效带宽等角度考虑集群的互联。大家都知道,某种程度上,网路的距离和带宽是成反比的。越是短距离的技术越能实现更高的带宽。因此,就有专用集群往往采用了高带宽、低延时的通信网络,并将节点不必要的外围设备去掉,仅仅保留必要的主机(CPU、内存、硬盘),安置在一个或者彼此靠近的机架中。这样,不仅可以充分利用短距离通讯的有效带宽,例如千兆位以太网,甚至是万兆位以太网;还可以大大节省节点占用的空间,同时也方便集中管理。在紧耦合技术发展中,甚至出现了在一个机箱内作集群的产品――Blade Cluster Server 又称 刀片服务器

刀片服务器是一种HAHD(High Availability High Density,高可用高密度)的低成本服务器平台,是专门为特殊应用行业和高密度计算机环境设计的。其中每一块"刀片"实际上就是一块增强的系统主板。它们可以通过本地硬盘启动自己的操作系统,如Windows NT/2000、Linux、Solaris等等,类似于一个个独立的服务器节点。在这种模式下,每一个主板运行自己的系统,服务于指定的不同用户群,相互之间没有关联。不过可以用SSI软件将这些主板集合成一个单一的集群映像。

在集群模式下,所有的主板可以连接起来提供高速的背板带宽,可以共享资源,为相同的用户群服务。在集群中插入新的"刀片",可以提高整体性能。而由于每块"刀片"都是热插拔的,就像拔插显卡一样方便,所以系统可以轻松地进行替换,并且将维护时间减少到最小。这种集群在方便管理的同时,也节约了机房机架的宝贵空间,还能充分利用短距离的高性能通信技术,可谓一举多得。

这是两种典型的集群组装方式。左边的松耦合集群安装在一个局域网范围内,通常由一个GB级以太网覆盖;右边的属于紧耦合集群,安装在一个机架中,能够使用更高带宽的通信技术,而且有很高的电气结合度,至于刀片服务器恐怕就要更紧凑一些了。另外我们可以看出,这两个集群应该都是专用型集群。



控制方式

控制分为集中控制和分散控制两种。采用集中控制的集群大多是紧耦合集群,出于空间和管理便利的考虑,允许管理员集中控制所有的结点,其控制界面可以是字符终端也可以是图形GUI。用于并行计算的Beowulf集群采用的就是集中控制的方式,管理员通过shell工具或者X接口操纵主服务器,而具体的计算结点是不可直接访问的。

对于松耦合的集群,采用分散和集中控制混合的方法。由于在松耦合结构上集中控制需要特殊的系统中间层支持,因此实现的难度较大。而成熟的管理协议如SNMP等就可用于改环境下的资源分配和调度。另外,在松耦合的非专用集群("兼职"集群)中,日常的控制仍由各自的"属主"进行,而闲余的计算时间则交给控制器。

同构性

同构是相对的,完全的同构只是理论模型的理想。上一章节我们提到,各类分布式系统中,SMP的同构性最好,直接反映在单一系统映像这个重要的指标上。大多数情况是,集群结点采用相同的操作系统或者兼容的硬件平台,以尽可能保证二进制代码的可移植性。比如Beowulf集群中,集群结点和服务器采用的都是Linux核心操作系统,配合标准的PVM和MPI2接口,使得计算任务能够跨越各结点的地址空间,代码和数据表达的一致使之在结点之间能够平滑迁移。

异构特性在集群的发展中日益重要。通过增强的OS扩展API或者中间件层软件,任务可以在异构的结点之间自由移动,实现某种层次上的SSI能力。在负载均衡环境和可用性支持中,一定程度的SSI是必须的。但是,由于无法对二进制的代码和数据结构兼容,必然采用性能更低的中间代码、解释程序或者是扩展动态链接库来实现异构上的"同构",JAVA语言,PVM并行库都在这一领域有着很好的应用。随着WebService和XML技术的发展,将来还有可能在多种不同的编程语言、运行环境中实现令人满意的SSI能力。

安全性

安全性取决于集群结点与外界的互联程度。如果集群的结点不论是物理连接还是IP地址,都是暴露在外的,集群内部的通信完全没有经过保护,我们认为这样的集群系统不具备安全性。黑客或者恶意用户的破坏都会造成集群的不可用。不过这样的集群由于在规划上不需考虑过多,比较容易实施。

如果将集群结点通过防火墙等保护技术隐蔽起来,使集群内部的结点无法从外部非法访问,或者加强结点操作系统本身的安全能力,那么集群系统就具备一定的安全性。因为要考虑安全环境的诸多因素,也必然要增加构造系统的难度。目前,大多数商业集群产品要么使用专有的内部通信协议来实现高效性和安全性,要么与现有的安全产品进行集成,在系统或者网络协议一层扩展安全功能。



林凡,现于厦门大学从事Linux相关的科研工作。于集群技术由很大的兴趣,希望能与志同道合的朋友一起交流。您可以通过电子邮件 和他联系。

阅读(142) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~