`
76052186
  • 浏览: 35446 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

集群的可扩展性及其分布式体系结构(3)--上

阅读更多

集群的可扩展性及其分布式体系结构(3)--上

developerWorks
文档选项
<noscript></noscript>
将此页作为电子邮件发送

将此页作为电子邮件发送

<!----><!---->
<!---->

级别: 初级

林凡 (iamafan@21cn.com), 辰讯软件工作室研发部经理

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相关的科研工作。于集群技术由很大的兴趣,希望能与志同道合的朋友一起交流。您可以通过电子邮件 iamafan@21cn.com和他联系。

分享到:
评论

相关推荐

    集群系统的可扩展性及其分布式体系结构

    这个资料非常有价值。linux集群资料市面上很少,有价值的也很少。这个也是网上找来的。版权归原作者。大家共享学习。感谢作者。

    集群的可扩展性及其分布式体系结构(2)-下

    本文内容包括:可扩展的并行计算体系结构可扩展与单一系统映象集群的重要指标结束语参考资料这篇文章是《集群的可扩展性及其分布式体系结构》第二篇的下半部分,将继续介绍常见的几类并行计算体系结构、可扩展与单一...

    集群的可扩展性及其分布式体系结构(1)介绍

    作者将侧重就集群的可扩展性及体系结构分析、原理论、集群的考量、具体的分析案例(LVS、beowulf、MOSIX)、集群高可用技术、分布式文件系统等等各个方面为您更加深入的介绍集群系统。本文是第一篇。主要阐述集群...

    论文研究-基于FastCGI的分布式集群WebGIS研究.pdf

    针对当前网络地理信息系统(WebGIS)中存在的效率问题和服务器端压力过大的问题,...结果表明,相比于当前其他模式的WebGIS,基于FastCGI多进程、分布式集群构建的WebGIS具有效率更高、可扩展性更强、稳定性更好的特点。

    websphere application server 7 集群安装

    通过集群可以实现可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)。WAS ND提供水平集群和垂直集群两种形式...

    大型分布式网站架构设计与实践.带目录书签.完整版.rar

    在大型网站架构的演变过程中,集中式的架构设计出于对系统的可扩展性、可维护性以及成本等多方面因素的考虑,逐渐被放弃,转而采用分布式的架构设计。分布式架构的核心思想是采用大量廉价的PC Server,构建一个低...

    用于嵌入式向量高效相似性搜索的分布式系统-Golang开发

    体系结构数据模型空间,文档,向量,标量组件M概述Vearch是一个可扩展的分布式系统,用于深度学习向量的高效相似性搜索。 体系结构数据模型空间,文档,向量,标量组件主服务器,路由器和PartitionServer主服务器...

    详解Linux服务器集群.docx

    图:集群的体系结构 为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,集群采用三层结构,其体系结构如图所示,三层主要组成部分为: 负载调度器( ),它是整个集群对外面的前端机,...

    sxapi-demo-openshift-couchbase:由在openshift PAAS上后端支持长沙发集群的多个sxapi微服务组成的示例应用程序

    使用,通过管理并与内嵌CI / CD +安全和管理功能超层,您将学习如何使用最新的技术,在智能和分布式架构上运行可扩展性,弹性和安全应用。 您还将发现一个对于使用微服务体系结构创建简单和可扩展的API很有用。 ...

    autodist:在TensorFlow上进行简单的分布式深度学习

    AutoDist提供了一个用户友好的界面,以可扩展性和最少的代码更改在许多GPU上分布各种深度学习模型的培训。 介绍 与专用的分布式ML系统不同,AutoDist的创建是为了以优异的全面性能加快各种DL模型的速度。 AutoDist...

    json-scada:以MongoDB数据库服务器为中心的便携式可扩展SCADAIoT平台

    {json:scada} 以MongoDB数据库服务器为中心的便携式可扩展SCADA / IoT平台。使命宣言通过利用主流开源IT工具提供易于使用,功能齐全,可扩展的便携式SCADA / IoT... 模块化分布式体系结构。 轻量级冗余数据采集节点

    matlab导入excel代码-StockSharpMono:[StockSharp]交易所交易自动化的体系结构

    [Voltdb]内存中的数据存储体系结构具有分布式的概念 VoltDB 3.0数据库是在Ingres和PostgreSQL项目的创始人之一Mike Stonebraker的领导下开发的。 VoltDB具有水平可伸缩性,并且专注于实时事务处理(OLTP)。 在一个...

    可扩展的Bootstrap集群以处理海量数据

    此外,BLBC适用于在经常用于处理大型数据集的现代并行和分布式计算体系结构上的实现。我们通过实证研究BLBC的性能特征,并通过对模拟数据和真实数据的实验与现有方法的性能进行比较。 结果表明,BLBC在保持良好统计...

    大数据学习计划.pdf

    2、 搭建多节点、可扩展集群; 部署 HDFS HA 架构; 理解并实现 Hadoop YARN 的多 租户架构 掌握 Zookeeper 组件原理; 掌握 Hadoop 集群优化路径; 3 传统数据仓库在⾯对更⼤规模数据时显得⼒不从⼼,在寄希望于⼤数据...

    nms-aware-onos:支持NMS的ONOS实施

    性能对于第一个发行版来说是好的,并且具有将继续支持改进的体系结构。 全局网络视图,网络图和应用程序意图的北向抽象。 向南可插拔,以支持OpenFlow和新协议或旧协议。 图形用户界面,用于查看多层拓扑并检查...

    onos:用于分析的ONOS源代码

    通过群集和网络设备控制分片的可扩展性。 性能对于第一个发行版来说是好的,并且具有将继续支持改进的体系结构。 全局网络视图,网络图和应用程序意图的北向抽象。 向南可插拔,以支持OpenFlow和新协议或旧协议...

    数据库系统服务器解决方案.doc

    可扩展性 11 2.3.4. 可管理性 12 2.3.5. 可靠性、稳定性 12 3. 数据库系统案例 12 3.1. 小规模数据库解决方案:电子图书馆 12 3.1.1. 背景 12 3.1.2. 分析 13 3.1.3. 方案设计 13 3.2. 中等规模数据库解决方案(某...

    onos:开放网络操作系统

    通过群集和网络设备控制分片的可扩展性。 性能对于第一个发行版来说是好的,并且具有将继续支持改进的体系结构。 全局网络视图,网络图和应用程序意图的北向抽象。 可插拔的南行,用于支持OpenFlow,P4Runtime...

Global site tag (gtag.js) - Google Analytics