目前,越来越多的网站采用Linux操作系统,提供邮件、Web、文件存储、数据库等服务。也有非常多的公司在企业内部网中利用Linux服务器提供这些服务。随着人们对Linux服务器依赖的加深,对其可靠性、负载能力和计算能力也倍加关注。Linux集群技术应运而生,可以以低廉的成本,很好地满闳嗣堑恼庑┬枰?     Linux竞争力很强的原因之一,是它可以运行于极为普及的PC机上,不需要购买昂贵的专用硬件设备。在几台运行Linux的PC机上,只要加入相应的集群软件,就可以组成具有超强可靠性、负载能力和计算能力的Linux集群。集群中的每台服务器称为一个节点。     按照侧重点的不同,可以把Linux集群分为三类。一类是高可用性集群,运行于两个或多个节点上,目的是在系统出现某些故障的情况下,仍能继续对外提供服务。高可用性集群的设计思想就是要最大限度地减少服务中断时间。这类集群中比较著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。第二类是负载均衡集群,目的是提供和节点个数成正比的负载能力,这种集群很适合提供大访问量的Web服务。负载均衡集群往往也具有一定的高可用性特点。Turbolinux Cluster Server、Linux Virtual Server都属于负载均衡集群。另一类是超级计算集群,按照计算关联程度的不同,又可以分为两种。一种是任务片方式,要把计算任务分成任务片,再把任务片分配给各节点,在各节点上分别计算后再把结果汇总,生成最终计算结果。另一种是并行计算方式,节点之间在计算过程中大量地交换数据,可以进行具有强耦合关系的计算。这两种超级计算集群分别适用于不同类型的数据处理工作。有了超级计算集群软件,企业利用若干台PC机就可以完成通常只有超级计算机才能完成的计算任务。这类软件有Turbolinux EnFusion、SCore等。     高可用性集群与负载均衡集群的工作原理不同,适用于不同类型的服务。通常,负载均衡集群适用于提供静态数据的服务,如HTTP服务;而高可用性集群既适用于提供静态数据的服务,如HTTP服务,又适用于提供动态数据的服务,如数据库等。高可用性集群之所以能适用于提供动态数据的服务,是由于节点共享同一存储介质,如RAIDBox.也就是说,在高可用性集群内,每种服务的用户数据只有一份,存储在共用存储设备上,在任一时刻只有一个节点能读写这份数据。     以Turbolinux TurboHA为例,集群中有两个节点A和B,设这个集群只提供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上,因此用户仍可访问此服务。     由以上分析可以看出,高可用性集群对一种服务而言不具有负载均衡功能,它可以提高整个系统的可靠性,但不能增加负载的能力。当然,高可用性集群可以运行多种服务,并适当分配在不同节点上,比如节点A提供Oracle服务,同时节点B提供Sybase服务,这也可以看成是某种意义上的负载均衡,不过这是对多种服务的分配而言。     负载均衡集群适用于提供相对静态的数据的服务,比如HTTP服务。因为通常负载均衡集群的各节点间通常没有共用的存储介质,用户数据被复制成多份,存放于每一个提供该项服务的节点上。     下面以Turbolinux Cluster Server为例简要介绍一下负载均衡集群的工作机制。在集群中有一个主控节点,称为高级流量管理器(ATM)。假设这一集群仅被用来提供一项HTTP服务,其余各节点均被设定为HTTP的服务节点。用户对于页面的请求全部发送到ATM上,因为ATM上绑定了这项服务对外的IP地址。ATM把接受到的请求再平均发送到各服务节点上,服务节点接收到请求之后,直接把相应的Web页面发送给用户。这样一来,假如在1秒内有1000个HTTP页面请求,而集群中有10个服务节点,则每个节点将处理100个请求。这样,在外界看来,好象有一台10倍速度的高速计算机在处理用户的访问。这也就是真正意义上的负载均衡。     但是ATM要处理所有1000个页面请求,它会不会成为集群处理速度的瓶颈呢?由于对于页面的请求的数据量相对较少,返回页面内容的数据量相对较大,因此这种方式还是很有效率的。ATM发生故障,也不会导致整个系统无法工作。Turbolinux Cluster Server可以设置一台或多台计算机为后备ATM节点,当主ATM节点故障时,在后备ATM中会产生出一个新的主ATM,接替它的工作。可以看出,这种负载均衡集群也具有一定的高可用性。     HTTP页面相对是静态的,但有时也需要改动。Turbolinux Cluster Server提供了数据同步工具,可以很方便的把对页面的改动同步到所有提供该项服务的节点上。     下面介绍一下对于高可用性集群与负载均衡集群的组合使用。如果用户有一个由两个节点组成的最小集群,是否可以同时获得高可用性集群和负载均衡集群的效益呢?答案是肯定的。由于高可用性集群适用于提供动态数据的服务,而负载均衡集群适用于提供静态数据的服务,所以我们不妨假设要同时提供Oracle和HTTP服务。用户要在节点A和B上安装TurbolinuxTurboHA和TurbolinuxClusterServer软件。把节点A作为Oracle正常工作的节点,节点B作为Oracle服务的后备节点,这是对TurboHA软件而言。对于ClusterServer软件而言,要设置节点B为主ATM节点,节点A为后备ATM节点,而节点A和节点B同时又都是HTTP的服务节点。     这样一来,节点A和节点B都是身兼两职,而用户同时得到了一个具有高可用性的Oracle服务和一个具有负载均衡功能的HTTP服务。即使有一个节点发生故障,Oracle服务和HTTP服务都不会因此而中断。     但对于同一种服务,是不能同时获得高可用性与负载均衡能力的。对一种服务,要么是只有一份数据,放在共用存储设备上,一次被一个节点访问,获得高可用性;要么是把数据复制为多份,存储于每个节点的本地硬盘上,用户的请求同时发送到多个节点上,获得负载均衡能力。     对于高可用性集群,由于它在设计时的目的就是为了最大可能地减少服务中断时间,因此服务的切换受到很大的关注。当一个节点上的服务故障时,会被很快地检测到并被切换到其他节点上。但在切换时,不能忽略对数据完整性的保护。     在什么情况下数据完整性会被破坏呢?由于高可用性集群中至少有两个节点,连接在一个共用的存储设备上,对于非裸分区而言,如果被两个节点同时读写,就会造成文件系统被破坏。因此就需要利用I/O屏障来防止这一事件的发生。     I/O屏障的目的是为了保证故障节点不能再继续读写某一服务的共用分区,实现的方式有多种。Kimberlite使用硬件开关来实现,当一个节点发生故障时,另一节点如果能侦测到,就会通过串行口发出命令,控制连接在故障节点电源上的硬件开关,通过暂时断电,而后又上电的方式使得故障节点被重启动。     I/O屏障有多种形式。对于支持SCSI Reserve/Release命令的存储设备,也可以用SG命令实现I/O屏障。正常节点应使用SCSI Reserve命令“锁住”共用存储设备,保证其不被故障节点读写。如果故障节点上的集群软件仍在运行,如发现共用存储设备已被对方锁住,就应把自己重启动,以恢复正常工作状态。     以上介绍了Linux集群技术的基本原理,也介绍了几种著名的软件。总之,Linux集群技术最大的发挥了PC机和网络的优势,可以带来可观的性能,是一种大有前途的技术。

原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/17/12325017.shtml

Linux服务器集群技术的概述的更多相关文章

  1. 浅析Linux服务器集群系统技术

    浅析Linux服务器集群系统技术 目录 前言 常用的服务器集群 集群系统的优势 LVS集群的通用体系结构 为什么使用层次的体系结构 为什么是共享存储 可伸缩Web服务 前言 总结两篇技术文章,努力学习 ...

  2. Linux服务器集群系统(一)--转

    引用地址:http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介 ...

  3. Linux服务器集群系统(一)(转)

    add by zhj:虽然是2002年的文章,但读来还是收益良多.在 章文嵩:谈LVS及阿里开源背后的精彩故事 中LVS发起人及主要贡献者谈了LVS的开发过程及阿里开源的一些故事 原文:http:// ...

  4. 【原创】Linux服务器集群通过SSH无密码登录

    SSH 无密码授权访问slave集群机器 1. 安装SSH,所有集群机器,都要安装SSH环境介绍:  Master : CNT06BIG01 192.168.3.61 SLAVE 1: CNT06BI ...

  5. Linux服务器集群系统(LVS)

    from:http://www.linuxvirtualserver.org/zh/lvs1.html#5 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目 ...

  6. Linux服务器集群系统(一)

    Reference: http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 ...

  7. 官方文档-Linux服务器集群系统(一)

    转载-Linux服务器集群系统(一) LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介绍了Linux服务器集群系统--LVS(Linux Virtual ...

  8. 转载-lvs官方文档-Linux服务器集群系统(二)

    Linux服务器集群系统(二) LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并 ...

  9. 【整理学习Hadoop】Hadoop学习基础之一:服务器集群技术

            服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任 ...

随机推荐

  1. Java做界面的感想。。

    我用Swing做出的例子: JavaFX做出的界面: 后来又做出了自己编写的一套基于Synth的L&F,其与直接在代码中重绘某个组件不同,最大优点是具有可插拔性,即在不改变原有程序代码的情况下 ...

  2. eclipse运行项目特别慢,出现Java heap space溢出

    在eclipse中可用为JVM设置参数:Window-->Preferences-->Java-->Installed JREs然后选中你安装的jre-->Edit--> ...

  3. SpringMVC ModelAndView方法与模板传参接收不到问题

    最近在使用Spring MVC做项目时,碰到一个问题,就是通过ModelAndView与前端模板页面通信时,一直无法在模板中显示出来传过去的参数值. 在网上也查了好久,就是不知道是啥问题,很是郁闷. ...

  4. OpenCV 2.4.9

    2014.4.25 感谢那些參加开发.发送错误报告以及通过其它方式帮助我们的全部人和公司. 源代码如今已经可以从SourceForge和Github上下载了. 2.4.9版本号的帮助文章也更新到如今的 ...

  5. python re

    >>> url="http://apk.gfan.com/Product/App45021.html" >>> result=html.cont ...

  6. $HTTP_RAW_POST_DATA

    这是手册里写的 总是产生变量包含有原始的 POST 数据.否则,此变量仅在碰到未识别 MIME 类型的数据时产生.不过,访问原始 POST 数据的更好方法是 php://input.$HTTP_RAW ...

  7. 基于事件的异步模式——BackgroundWorker

    实现异步处理的方法很多,经常用的有基于委托的方式,今天记录的是基于事件的异步模式.利用BackgroundWorker组件可以很轻松的实现异步处理,并且该组件还支持事件的取消.进度报告等功能.本文以计 ...

  8. 硬编码写RadioGroup的时候要注意设置RadioButton的Id

    硬编码写RadioGroup的时候要注意RadioButton的id重复问题,导致选择的时候出现能够多选的情况发生,如下代码,注意Id的设置,这样避免Radiobutton的id重复. /** * 生 ...

  9. c#正则表达式采集数据

    protected void Page_Load(object sender, EventArgs e){ StringBuilder MyStringBuilder = new StringBuil ...

  10. startActivityForResult和setResult详解

    http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html startActivityForResult与startActivi ...