it你好linux学习文档之集群概述及原理笔记(1) 

  一 前言

   目前,越来越多的网站采用Linux操作系统,提供邮件、Web、文件存储、数据库等服务。也有非常多的公司在企业内部网中利用Linux服务器提供这些服务。随着人们对Linux服务器依赖的加深,对其可靠性、负载能力和计算能力也倍加关注。Linux集群技术应运而生,可以低廉的成本,很好地满足人们的这些需要  

   二 集群概念

   集群一组协同工作的服务实体,用以提供比单一服务实体更具扩展性和可用性的服务平台

   从客户端看来,一个集群就是一个完整不可细分的实体,但事实上一个集群实体是由完成不同任务的服务节点个体所组成的。

   集群实体的可扩展性是指,在集群运行的中新的服务节点可以动态的加入集群实体从而提升集群实体的综合性能。

   集群实体的高可用性是指,集群实体通过其内部的服务节点的冗余使客户端免予OUT OF SERVICE 错误。简单的说,在集群中同一服务可以由多个服务节点提供,当部分服务节点失效后,其它服务节点可以接管服务。

    集群实体地址是指客户端访问集群实体获取服务资源的唯一入口地址。

    

负载均衡是指集群中的分发设备(服务)将用户的请求任务比较均衡(不是平均)分布到集群实体中的服务节点计算、存储和网络资源中

一般我们将提供负载均衡分发的设备叫做负载均衡器。

负载均衡器一般具备如下三个功能:

     1. 维护集群地址

     2. 负责管理各个服务节点的加入和退出

     3. 集群地址向内部服务节点地址的转换

    错误恢复是指集群中某个或某些服务节点(设备)不能正常工作(或提供服务),其它类似服务节点(设备)可以资源透明和持续的完成原有任务。具备错误恢复能力是集群实体高可用性的必要条件。

    负载均衡和错误恢复需要集群实体中各个服务节点中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图必须一致

  三 集群分类

   按照侧重点的不同,可以把Linux集群分为三类。

一类是高可用性集群High Availability

高可用性集群的主要功能就是提供不间断的服务,运行于两个或多个节点上,目的是在系统出现某些故障的情况下,仍能继续对外提供服务。有许多应用程序都必须一天二十四小时地不停运转,如所有的web服务器、工业控制器、ATM、远程通讯转接器、医学与军事监测仪以及股票处理机等。对这些应用程序而言,暂时的停机都会导致数据的丢失和灾难性的后果。

(1)HA集群通过特殊软件把独立的(node)系统连接起来,组成一个能够提供故障切换功能的集群;

(2)HA集群可以保证在多种故障中,关键服务的可用性、可靠性及数据完整性;

(3)HA集群主要用于文件服务、WEB服务,数据库服务等关键应用中。

这类集群中比较著名的有Turbolinux TurboHAHeartbeatKimberlite,keepalived等。

可用性通常指系统的uptime,在7x24x365的工作环境中,99%的可用性指在一年中可以有87小时36分钟的DOWN机时间,通常在关键服务中这种一天多的故障时间是无法接受的,所以提出了前面提到的错误恢复概念,以满足99.999%的可用性需求。包括在RHEL中的HA集群技术和容错(fault tolerance)并不是同义词。

容错系统使用高度专业化的、通常非常昂贵的硬件来实现一个完全冗余的环境。在这个环境中运行的服务能够不被硬件失效中断。 容错系统并不容忍操作员和软件的错误,而HA集群却能够通过服务的冗余性来修正这类错误。此外,由于红帽企业 Linux 是为在通用廉价的硬件上运行而设计的,它所创造的系统高可用性环境的费用只是容错硬件费用的极少的一部分。

高可用性集群和多机热备技术有很大区别,但很多人会将其混淆。多机热备技术是指一台服务器作为主机,其它服务器做为备份机(可以不在加电状态称之为冷备,可以在加电状态称之为热备),当主机失效时,备份机通过人为的参与接管服务。

第二类是负载均衡集群Load Balancing

(1)在LB服务器上使用专门的路由算法,将数据包分散到多个真实服务器中进行从而达到网络服务均衡负载的作用 

(2)Lb服务器可以充分利用现有资源,提高高负载服务的性能,降低高负载服务本

(3)Lb集群主要用于公共WEB服务、FTP服务、数据库服务等高负载服务中

LB的目的是提供和节点个数成正比的负载能力,这种集群很适合提供大访问量的Web服务。负载均衡集群往往也具有一定的高可用性特点。Turbolinux Cluster Server、Linux Virtual Server都属于负载均衡集群。

对于使用服务的用户(如网站)来说,Linux 虚拟服务器(LVS)集群看起来是一个服务器。事实上,该用户使用的是一对冗余 LVS 路由器之后的两个或多个服务器的集群。这对路由器把客户请求均衡地分配给集群系统。负载均衡集群的系统允许管理员使用常见廉价的硬件和 Linux 在满足可用性需求的同时还提供服务的连续持久的访问。

LB集群的开源项目:LVS 详情见官方网站:http://www.linuxvirtualserver.org

第三类是高性能计算集群High performance Computing

    高性能计算集群通过将多台机器连接起来同时处理复杂的计算问题。模拟星球附近的磁场、预测龙卷风的出现、定位石油资源的储藏地等情况都需要对大量的数据进行处理。传统的处理方法是使用超级计算机来完成计算工作,但是超级计算机的价格比较昂贵,而且可用性和可扩展性不够强,因此集群成为了高性能计算领域瞩目的焦点。

    按照计算关联程度的不同,又可以分为两种。

一种是任务片方式 DC Distributed Computing,要把计算任务分成任务片,再把任务片分配给各节点,在各节点上分别计算后再把结果汇总,生成最终计算结果,例如

OpenMosix  OpenSSI。

另一种是并行计算方式 PC Parallel Computing,节点之间在计算过程中大量地交换数据,可以进行具有强耦合关系的计算。这两种超级计算集群分别适用于不同类型的数据处理工作。有了超级计算集群软件,企业利用若干台PC机就可以完成通常只有超级计算机才能完成的计算任务。这类软件有Turbolinux EnFusion、SCore等。  

四,高可用性集群与负载均衡集群的工作原理不同,适用于不同类型的服务。

通常,负载均衡集群适用于提供静态数据的服务,如HTTP服务;

    高可用性集群既适用于提供静态数据的服务,如HTTP服务,又适用于提供动态数据的服务,如数据库等。高可用性集群之所以能适用于提供动态数据的服务,是由于节点共享同一存储介质,如RAIDBox。也就是说,在高可用性集群内,每种服务的用户数据只有一份,存储在共用存储设备上,在任一时刻只有一个节点能读写这份数据。     
   以Turbolinux TurboHA为例,集群中有两个节点AB,架设这个集群只提供Oracle服务,用户数据存放于共用存储设备的分区/dev/sdb3上。在正常状态下,节点A提供Oracle数据库服务,分区/dev/sdb3被节点A加载在/mnt/oracle上。当系统出现某种故障并被TurboHA软件检测到时,TurboHA会将Oracle服务停止,并把分区/dev/sdb3卸载。之后,节点B上的TurboHA软件将在节点B上加载该分区,并启动Oracle服务。对于Oracle服务有一个虚拟的IP地址,当Oracle服务从节点A切换到节点B上时,虚拟的IP地址也会随之绑定到节点B上,因此用户仍可访问此服务。

    虽然集群系统并不能解决所有的系统问题,但是它能够帮助系统管理员最大限度地利用

现有的资源。并不是所有的程序都适用于集群系统,但是常见的系统应用如HTTP服务,

FTP服务,数据库服务都可以利用集群系统来增强它们的功能。

五 集群的架构

1.前端的负载均衡层(locad balancer

2.间层服务器群组层(server array

3.底端数据共享存储层(share storage

   在用户看来,整个集群系统的所有内部应用结构都是透明的,最终用户只是在使用一个虚拟服务器提供的高性能服务

linux集群的优势和劣势

集群技术的优势()

1. 低成                                       

2. 高可用                                     

3. 高扩展                                     

4. 高资源利用率                               

    集群技术相对传统的大型机技术具有低成本的优势,购买与维护一个大型机的费用往往数倍于一个相同性能的集群系统。 

    通过高可用集群,我们可以构建可用度达到99.999%的高可用服务,也就是在极端环境下,正常配置的高用服务可能达到每年DownTime不超过6分钟。 

    由于集群系统由多台计算机构成,一般情况况下我们可以在不影响系统现有服务的情况下对系统进行扩充、升级、或是进行各种维护操作。同时其它扩展技术,通常仅仅支持几十个CPU的扩展,扩展能力有限。而采取集群技术的集群实体则可以扩展成百上千的服务节点,每个服务节点有可以扩展多个CPU,其扩展能力有明显优势。

    在大型企业中经常会有大批的机器被淘汰,利用集群系统,我们可以将老旧的计算机连接在一起并行运做以提供高性能的服务。 

Linux集群的优势(二)

1. 稳定                             

2. 高性能                           

3. 兼容UNIX系统                    

4. 开源的发展模式                   

5. 兼容多种硬件平台                 

6. 利于分发的纯文本配置文件         

7. 方便快捷的文本化管理界面        

   Linux是目前兼容硬件平台及各种文件系统最为完备的操作系统,良好的软硬件兼容性保证了LINUX系统能够适用于异构集群,同时开放源码的发展模式也保证了现有的集群软件能够方便地迁移至LINUX下运行。LINUX强大的终端管理能力及纯文本配置方式使得大规模的集群系统更加易于管理、配置。 

   LINUX系统的度可配置性可以保证系统能够为各种应用提供最大限度的优化能力,同时亦可保证整个系统的稳定性。对UNIX系统的兼容使得目前基于UNIX的集群系统可以在很小的修改下就能够成功运行于LINUX

Linux 集群的劣势(三)

1. Linux 集群系统多为文本控制方式,使用复杂。           

2. Linux集群软件大多基于GPL协议,用户担心无法得到完备的商业支持      

3. Linux集群的相关人才稀少,培训成本大        

   Linux系统的开发起源于1992年,比起历史攸久的UNIX系统或WINDOWS系统来说,在专业人员中的认可程度及了解程度还很不足。在GPL协议下发行的Linux除特定厂商外,其它发行版不能提供完整的商业支持,基于Linux集群解决方案往往基于系统管理员对LINUX系统的认知程度

Linux集群目前活跃的解决套件

1. 高可用性集群(HA

○ RedHat Cluster SuiteRHCS

○ Linux-HAHeartbeat) 

○ Keeplived

2. 负载均衡集群(LB

○ Linux Virtual Server(LVS)

○ haproxy

○ nginx

3. 分布式高性能计算(DC)

○ OpenMosix

○ OpenSSI

4. 并行式高性能计算(PC

○ Beowulf

    RHCS是由RedHat的集群套件系统,除了完成高可用性功能之外,它还具备负载均衡功能。

Heartbeat是一个免费的开放源代码的高可用集群系统,目前已经被NovellSuSE Linux)、Mandriva Linux、 Debian GNU/LinuxUbuntu Linux等广泛使用,基于心跳检测。

Keepalived是一个基于实现lvs高可用开发扩展的程序,目的是提供高可用,基于vrrp路由检测。

LVSLinux Virtual Serverlinux虚拟服务器),采用基于ip的四层负载均衡,有多种调度算法。

haproxy提供高可用性、负载均衡以及基于TCPHTTP应用的代理,支持4-7层的负载均衡,同时支持虚拟主机, 国内大型网站均有使用,提供多种调度算法。

Nginx是一个web服务器,工作于tcp七层,具有灵活的配置功能,一般用于流量不是很大的场合。

    高性能计算集群系统主要用于大规模科学计算环境,在企业中应用较少,搭建高性能计算集群往往会针对具体计算内容专门设计系统结构及应用软件。

    虽然拥有很大的 Linux 集群用户基础,openMosix 项目仍被关闭。主要的开发者已经离开,他们缺乏继续下去的促动或者说能得到什么的回报。其官方声称多核 CPU 使得集群是多余的,夹杂在非常不可能和完全的不合理之中。从技术的角度看,开源的 bproc (the Beowulf process migration module/Beowulf 进程迁移模块是陈旧的,除非你是一个研究者,否则MOSIX 是非常难得获得的,而 kerrighed 仍是不成熟的。从用户的角度看,openMosix 是开源集群世界中迄今为止最好的管理工具,但是它已经成为过去时了!