[size=medium][b]学习一、[/b][/size]

说到负载均衡,先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。例如一个提供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。

集群的概念容易和一些概念(SMP 、NUMA、MPP、分布处理)相混淆,其主要区别在资源被共享和复制的级别不同。它们是按SMP、NUMA、MPP、集群、分布处理从最紧密到最松散的排列。

SMP(多处理系统):这种系统是在一台计算机里有多个CPU,CPU之间的地位是平等的,它们共享内存空间和I/O设备。其工作方法是由操作系统负责将任务分解成多个并发进程,然后让其在不同的CPU上运行。

NUMA(非统一内存存取):这种系统可以让多处理计算机的CPU比SMP更高效地共享本地内存,CPU可以更快速地存取单一的内存区域,不过如需要也可以用间接方式存取其他区域的内存,这种方法是让某些CPU在给定范围的物理内存中有更大的优先使用权。

MPP(巨型并行处理):这种系统的节点都有自己的CPU,并有自己的专有资源。此种结构相对独立,但各个节点一般没有完全存取I/O的能力。

集群:集群系统是由独立的计算机组成,但有控制管理工具统一管理。

分布处理:它是比我们要构筑的集群系统更松散的连接,一般是任务在不同的地方完成,没有可以作为整体管理的单一实体。

以上的聚合方式有紧有疏,它们都有自己的适用范围,这里就不多说了,有兴趣可自己找些资料看,这里只是想让大家了解它所处的位置。

实现负载均衡的方法
集群的目的是共享和高效地利用资源,提供大型运算,提供负载均衡分配请求压力以及出现故障时能够进行切换实现高可用性。

限于篇幅,本文只对负载均衡的实现做些介绍(针对TurboLinux Cluster Server)。通过对相关软件的分析,实现集群负载的功能是通过流量管理实现的,具体有这样几种实现方法:直接路由(Direct forwarding)、网络地址转换(NAT)、隧道技术(Tunneling)。

·直接路由(Direct forwarding)

当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。

·网络地址转换(NAT)

这种方法可能大家较熟悉,地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址,外界看起来包是来自地址转换器本身,当外界包送 到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP地址,能对内部进行伪装;缺点是 效率低,因为返回给请求方的流量经过转换器。

·隧道技术(Tunneling)

这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法,为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。

集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等,下面我们将就具体的产品TurboLinux Cluster Server 来实现一个进行负载均衡集群系统,用于提供Web和FTP的服务。

四台服务器的负载均衡实例
所提供的服务:Web、FTP。

系统的实现目的:做一个较完善负载均衡的系统,以便能用到其中的较多的功能。

采用设备状况:使用四台服务器,其中3台装TurboLinux Cluster Server,1台安装Windows 2000 Sever。

·系统安装

1.在两台服务器上安装TurboLinux, apache和wu-ftpd也要安装,因为集群要提供这种服务,安装完后重启,挂接光驱在目录/mnt/cdrom下,执 行./TLCS-install,然后按提示完全安装。

2.在一台服务器上安装Windows 2000 Server,要安装Internet Information Server 5.0。

·系统配置

1.设置各台服务器的IP地址、子网掩码、路由等,调通网络,将一台TurboLinux服务器设置 成DNS服务器,使其能够正向解析和反向解析。服务器名此例为 pc1,域为test.com。

2.配置Cluster Server。执行Turbolinux clusteradmin,设置情况如下(注:箭头连接的是选单选项,箭头所指为下级选单,最后冒号后为设置情况)。

ClusterServer Configuration→Cluster Services→Application Stability Agents:

(1)http为默认的服务,不用设置

(2)ftp—-/usr/lib/ftpAgent

ClusterServer Configuration→Cluster Services→Service Settings:

(1)http,80:TCP,sticky

(2)ftp,21:TCP,ftp

ClusterServer Configuration→Servers Configuration:

(1) pc1 (pc1.test.com),direct,ping

(2) pc2 (pc2.test.com),direct,ping

(3) pc3 (pc3.test.com),direct,ping

(4) pc4 (pc4.test.com),direct,ping

ClusterServer Configuration→Advance Traffic Managers:

(1)Advance Traffic Manager System: pc1.test.com

(2)Advance Traffic Manager Setting: 默认值

ClusterServer Configuration→Virtual Severs:

(1)主机为:pc1.test.com

(2)sendmail:master@pc1.test.com

(3)Server pool name: ServerGroup1

ClusterServer Configuration→Globle Settings:

网络设置:netmask 255.255.255.0

·配置集群各接点

因为TurboLinux Cluster Server 本身能被工具自动同步,所以只需配置Windows 2000 Server:

开始→设置→控制面板→添加新硬件→下一步→添加/排除设备故障→添加新设备→否,我想从列表选择硬件→其他设备→Microsoft:Microsoft Loopback Adapter→完成。

桌面上右键单击"网上邻居"→属性→TCP/IP→设置IP地址、缺省网关,子网掩码(注:先设成:255.255.255.0)。

开始→运行→regedit→找到注册表中跟Microsoft Loopback Adapter相关的项,将子网掩码改成:255.255.255.255。

配置系统以便运行合适的服务、并配置适合控制管理器管理的配置,以便可在控制管理器中使用。

·在管理选单中执行内容同步

选tlcs_content_sync,输入密码,将复制控制管理计算机中的服务内容。

·在管理选单中执行设置同步

选tlcs_config_sync,输入密码,将复制控制管理计算机中的设置。

现在已经可以进入运行状态,可将客户端连接在服务器的交换机上,客户端可以请求Web和FTP服务,需要查看运行情况可以用控制台从https://pc1.test.com:910管理。

在计算机技术中集群负载平衡是自成体系的,目前它是一个热门技术也是一个高端应用,Internet/Intranet中使用集群负载平衡方案的地方十分 广泛,尤其是大中型网站都难脱离这种技术,直接路由(Direct forwarding)、网络地址转换(NAT)、隧道技术(Tunneling)都会因需要而被采用。它在网络中的作用和被人们重视程度都是很高的,如 果你也感兴趣的话,不妨也来试试。


[size=medium][b]学习二、[/b][/size]

前言
  
  当前,无论在企业网、园区网还是在广域网如Internet上,业务量的发展都超出了过去最乐观的估计,上网热潮风起云涌,新的应 用层出不穷,即使按照当时最优配置建设的网络,也很快会感到吃不消。尤其是各个网络的核心部分,其数据流量和计算强度之大, 使得单一设备根本无法承担,而如何在完成同样功能的多个网络设备之间实现合理的业务量分配,使之不致于出现一台设备过忙、而 别的设备却未充分发挥处理能力的情况,就成了一个问题,负载均衡机制也因此应运而生。
  
  负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高 网络的灵活性和可用性。它主要完成以下任务:解决网络拥塞问题,服务就近提供,实现地理位置无关性 ;为用户提供更好的访问质 量;提高服务器响应速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。
  
  定义
  
  其实,负载均衡并非传统意义上的“均衡”,一般来说,它只是把有可能拥塞于一个地方的负载交给多个地方分担。如果将其改 称为“负载分担”,也许更好懂一些。说得通俗一点,负载均衡在网络中的作用就像轮流值日制度,把任务分给大家来完成,以免让 一个人累死累活。不过,这种意义上的均衡一般是静态的,也就是事先确定的“轮值”策略 。
  
  与轮流值日制度不同的是,动态负载均衡通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理分配出去。 结构上分为本地负载均衡和地域负载均衡(全局负载均衡),前一种是指对本地的服务器集群做负载均衡,后一种是指对分别放置在不 同的地理位置、在不同的网络及服务器群集之间作负载均衡。
  
  服务器群集中每个服务结点运行一个所需服务器程序的独立拷贝,诸如Web、FTP、Telnet或e-mail服务器程序。对于某些服务(如 运行在Web服务器上的那些服务)而言,程序的一个拷贝运行在群集内所有的主机上,而网络负载均衡则将工作负载在这些主机间进 行分配。对于其他服务(例如e-mail),只有一台主机处理工作负载,针对这些服务,网络负载均衡允许网络通讯量流到一个主机 上,并在该主机发生故障时将通讯量移至其他主机。
  
  负载均衡技术实现结构
  
  在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的 灵活性和可用性。它主要完成以下任务:
  
  ◆解决网络拥塞问题,服务就近提供,实现地理位置无关性
  ◆为用户提供更好的访问质量
  ◆提高服务器响应速度
  ◆提高服务器及其他资源的利用效率
  ◆避免了网络关键部位出现单点失效
  
  广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。对一个网络的负载均衡应用, 从网络的不同层次入手,根据网络瓶颈所在进行具体分析。从客户端应用为起点纵向分析,参考OSI的分层模型,我们把负载均衡技 术的实现分为客户端负载均衡技术、应用服务器技术、高层协议交换、网络接入协议交换等几种方式。
  
  
  负载均衡的层次
  
  
  
  ◆基于客户端的负载均衡
  
  这种模式指的是在网络的客户端运行特定的程序,该程序通过定期或不定期的收集服务器群的运行参数:CPU占用情况、磁盘 IO、内存等动态信息,再根据某种选择策略,找到可以提供服务的最佳服务器,将本地的应用请求发向它。如果负载信息采集程序发 现服务器失效,则找到其他可替代的服务器作为服务选择。整个过程对于应用程序来说是完全透明的,所有的工作都在运行时处理。 因此这也是一种动态的负载均衡技术。
  
  但这种技术存在通用性的问题。因为每一个客户端都要安装这个特殊的采集程序;并且,为了保证应用层的透明运行,需要针对 每一个应用程序加以修改,通过动态链接库或者嵌入的方法,将客户端的访问请求能够先经过采集程序再发往服务器,以重定向的过 程进行。对于每一个应用几乎要对代码进行重新开发,工作量比较大。
  
  所以,这种技术仅在特殊的应用场合才使用到,比如在执行某些专有任务的时候,比较需要分布式的计算能力,对应用的开发没 有太多要求。另外,在采用JAVA构架模型中,常常使用这种模式实现分布式的负载均衡,因为java应用都基于虚拟机进行,可以在应 用层和虚拟机之间设计一个中间层,处理负载均衡的工作。
  
  ◆应用服务器的负载均衡技术
  
  如果将客户端的负载均衡层移植到某一个中间平台,形成三层结构,则客户端应用可以不需要做特殊的修改,透明的通过中间层 应用服务器将请求均衡到相应的服务结点。比较常见的实现手段就是反向代理技术。使用反向代理服务器,可以将请求均匀转发给多 台服务器,或者直接将缓存的数据返回客户端,这样的加速模式在一定程度上可以提升静态网页的访问速度,从而达到负载均衡的目 的。
  
  使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能。然而它本身也存在一些问 题,首先就是必须为每一种服务都专门开发一个反向代理服务器,这就不是一个轻松的任务。
  
  反向代理服务器本身虽然可以达到很高效率,但是针对每一次代理,代理服务器就必须维护两个连接,一个对外的连接,一个对 内的连接,因此对于特别高的连接请求,代理服务器的负载也就非常之大。反向代理能够执行针对应用协议而优化的负载均衡策略, 每次仅访问最空闲的内部服务器来提供服务。但是随着并发连接数量的增加,代理服务器本身的负载也变得非常大,最后反向代理服 务器本身会成为服务的瓶颈。
  
  ◆基于域名系统的负载均衡
  
  NCSA的可扩展Web是最早使用动态DNS轮询技术的web系统。在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将 得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。在很多知名的web站点都使用了这个技术:包括 早期的yahoo站点、163等。动态DNS轮询实现起来简单,无需复杂的配置和管理,一般支持bind8.2以上的类unix系统都能够运行,因 此广为使用。
  
  DNS负载均衡是一种简单而有效的方法,但是存在不少问题。
  
  首先域名服务器无法知道服务结点是否有效,如果服务结点失效,余名系统依然会将域名解析到该节点上,造成用户访问失效。
  
  其次,由于DNS的数据刷新时间TTL(Time to LIVE)标志,一旦超过这个TTL,其他DNS服务器就需要和这个服务器交互,以重 新获得地址数据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使TTL尽量短,不同地方的DNS服务器能更新对应的 地址,达到随机获得地址。然而将TTL设置得过短,将使DNS流量大增,而造成额外的网络问题。
  
  最后,它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的客户计 算机能均匀获得不同的地址。例如,用户A可能只是浏览几个网页,而用户B可能进行着大量的下载,由于域名系统没有合适的负载策 略,仅仅是简单的轮流均衡,很容易将用户A的请求发往负载轻的站点,而将B的请求发往负载已经很重的站点。因此,在动态平衡特 性上,动态DNS轮询的效果并不理想。
  
  ◆高层协议内容交换技术
  
  除了上述的几种负载均衡方式之外,还有在协议内部支持负载均衡能力的技术,即URL交换或七层交换,提供了一种对访问流量 的高层控制方式。Web内容交换技术检查所有的HTTP报头,根据报头内的信息来执行负载均衡的决策。例如可以根据这些信息来确定 如何为个人主页和图像数据等内容提供服务,常见的有HTTP协议中的重定向能力等。
  
  HTTP运行于TCP连接的最高层。客户端通过恒定的端口号80的TCP服务直接连接到服务器,然后通过TCP连接向服务器端发送一个 HTTP请求。协议交换根据内容策略来控制负载,而不是根据TCP端口号,所以不会造成访问流量的滞留。
  
  由于负载平衡设备要把进入的请求分配给多个服务器,因此,它只能在TCP连接时建立,且HTTP请求通过后才能确定如何进行负 载的平衡。当一个网站的点击率达到每秒上百甚至上千次时,TCP连接、HTTP报头信息的分析以及进程的时延已经变得很重要了,要 尽一切可能提高这几各部份的性能。
  
  在HTTP请求和报头中有很多对负载平衡有用的信息。我们可以从这些信息中获知客户端所请求的URL和网页,利用这个信息,负 载平衡设备就可以将所有的图像请求引导到一个图像服务器,或者根据URL的数据库查询内容调用CGI程序,将请求引导到一个专用 的高性能数据库服务器。
  
  如果网络管理员熟悉内容交换技术,他可以根据HTTP报头的cookie字段来使用Web内容交换技术改善对特定客户的服务,如果能 从HTTP请求中找到一些规律,还可以充分利用它作出各种决策。除了TCP连接表的问题外,如何查找合适的HTTP报头信息以及作出 负载平衡决策的过程,是影响Web内容交换技术性能的重要问题。如果Web服务器已经为图像服务、SSL对话、数据库事务服务之类的 特殊功能进行了优化,那么,采用这个层次的流量控制将可以提高网络的性能。
  
  ◆网络接入协议交换
  
  大型的网络一般都是由大量专用技术设备组成的,如包括防火墙、路由器、第3、4层交换机、负载均衡设备、缓冲服务器和Web 服务器等。如何将这些技术设备有机地组合在一起,是一个直接影响到网络性能的关键性问题。现在许多交换机提供第四层交换功 能,对外提供一个一致的IP地址,并映射为多个内部IP地址,对每次TCP和UDP连接请求,根据其端口号,按照即定的策略动态选择 一个内部地址,将数据包转发到该地址上,达到负载均衡的目的。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层 交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。由于地址转 换相对来讲比较接近网络的低层,因此就有可能将它集成在硬件设备中,通常这样的硬件设备是局域网交换机。
  
  当前局域网交换机所谓的第四层交换技术,就是按照IP地址和TCP端口进行虚拟连接的交换,直接将数据包发送到目的计算机的 相应端口。通过交换机将来自外部的初始连接请求,分别与内部的多个地址相联系,此后就能对这些已经建立的虚拟连接进行交换。 因此,一些具备第四层交换能力的局域网交换机,就能作为一个硬件负载均衡器,完成服务器的负载均衡。
  
  由于第四层交换基于硬件芯片,因此其性能非常优秀,尤其是对于网络传输速度和交换速度远远超过普通的数据包转发。然而, 正因为它是使用硬件实现的,因此也不够灵活,仅仅能够处理几种最标准的应用协议的负载均衡,如HTTP 。当前负载均衡主要用于 解决服务器的处理能力不足的问题,因此并不能充分发挥交换机带来的高网络带宽的优点。
  
  使用基于操作系统的第四层交换技术因此孕育而生。通过开放源码的Linux,将第四层交换的核心功能做在系统的核心层,能够在 相对高效稳定的核心空间进行IP包的数据处理工作,其效率不比采用专有OS的硬件交换机差多少。同时又可以在核心层或者用户层增 加基于交换核心的负载均衡策略支持,因此在灵活性上远远高于硬件系统,而且造价方面有更好的优势。
  
  ◆传输链路聚合
  
  为了支持与日俱增的高带宽应用,越来越多的PC机使用更加快速的链路连入网络。而网络中的业务量分布是不平衡的,核心高、 边缘低,关键部门高、一般部门低。伴随计算机处理能力的大幅度提高,人们对多工作组局域网的处理能力有了更高的要求。当企业 内部对高带宽应用需求不断增大时(例如Web访问、文档传输及内部网连接),局域网核心部位的数据接口将产生瓶颈问题,瓶颈延 长了客户应用请求的响应时间。并且局域网具有分散特性,网络本身并没有针对服务器的保护措施,一个无意的动作(像一脚踢掉网 线的插头)就会让服务器与网络断开。
  
  通常,解决瓶颈问题采用的对策是提高服务器链路的容量,使其超出目前的需求。例如可以由快速以太网升级到千兆以太网。对 于大型企业来说,采用升级技术是一种长远的、有前景的解决方案。然而对于许多企业,当需求还没有大到非得花费大量的金钱和时 间进行升级时,使用升级技术就显得大材小用了。在这种情况下,链路聚合技术为消除传输链路上的瓶颈与不安全因素提供了成本低 廉的解决方案。
  
  链路聚合技术,将多个线路的传输容量融合成一个单一的逻辑连接。当原有的线路满足不了需求,而单一线路的升级又太昂贵或 难以实现时,就要采用多线路的解决方案了。目前有5种链路聚合技术可以将多条线路“捆绑”起来。
  
  同步IMUX系统工作在T1/E1的比特层,利用多个同步的DS1信道传输数据,来实现负载均衡。
  
  IMA是另外一种多线路的反向多路复用技术,工作在信元级,能够运行在使用ATM路由器的平台上。
  
  用路由器来实现多线路是一种流行的链路聚合技术,路由器可以根据已知的目的地址的缓冲(cache)大小,将分组分配给各个平 行的链路,也可以采用循环分配的方法来向线路分发分组。
  
  多重链路PPP,又称MP或MLP,是应用于使用PPP封装数据链路的路由器负载平衡技术。MP可以将大的PPP数据包分解成小的数据 段,再将其分发给平行的多个线路,还可以根据当前的链路利用率来动态地分配拨号线路。这样做尽管速度很慢,因为数据包分段和 附加的缓冲都增加时延,但可以在低速的线路上运行得很好。
  
  还有一种链路聚合发生在服务器或者网桥的接口卡上,通过同一块接口卡的多个端口映射到相同的IP地址,均衡本地的以太网流 量以实现在服务器上经过的流量成倍增加。目前市面上的产品有intel和dlink的多端口网卡,,一般在一块网卡上绑定4个100M以太端 口,大大提高了服务器的网络吞吐量。不过这项技术由于需要操作系统驱动层的支持,只能在win2000和linux下实现。
  
  链路聚合系统增加了网络的复杂性,但也提高了网络的可靠性,使人们可以在服务器等关键LAN段的线路上采用冗余路由。对于 IP系统,可以考虑采用VRRP(虚拟路由冗余协议)。VRRP可以生成一个虚拟缺省的网关地址,当主路由器无法接通时,备用路由器就 会采用这个地址,使LAN通信得以继续。总之,当主要线路的性能必需提高而单条线路的升级又不可行时,可以采用链路聚合技术。
  
  ◆带均衡策略的服务器群集
  
  如今,服务器必须具备提供大量并发访问服务的能力,其处理能力和I/O能力已经成为提供服务的瓶颈。如果客户的增多导致通信 量超出了服务器能承受的范围,那么其结果必然是——宕机。显然,单台服务器有限的性能不可能解决这个问题,一台普通服务器的 处理能力只能达到每秒几万个到几十万个请求,无法在一秒钟内处理上百万个甚至更多的请求。但若能将10台这样的服务器组成一个 系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全拥有每秒钟处理几百万个甚至更多请求的能力。这就 是利用服务器群集实现负载均衡的最初基本设计思想。
  
  早期的服务器群集通常以光纤镜像卡进行主从方式备份。令服务运营商头疼的是关键性服务器或应用较多、数据流量较大的服务 器一般档次不会太低,而服务运营商花了两台服务器的钱却常常只得到一台服务器的性能。通过地址转换将多台服务器网卡的不同IP 地址翻译成一个VIP(Virtual IP)地址,使得每台服务器均时时处于工作状态。原来需要用小型机来完成的工作改由多台PC服务器完成, 这种弹性解决方案对投资保护的作用是相当明显的——既避免了小型机刚性升级所带来的巨大设备投资,又避免了人员培训的重复投 资。同时,服务运营商可以依据业务的需要随时调整服务器的数量。
  网络负载均衡提高了诸如Web服务器、FTP服务器和其他关键任务服务器上的因特网服务器程序的可用性和可伸缩性。单一计算 机可以提供有限级别的服务器可靠性和可伸缩性。但是,通过将两个或两个以上高级服务器的主机连成群集,网络负载均衡就能够提 供关键任务服务器所需的可靠性和性能。
  为了建立一个高负载的Web站点,必须使用多服务器的分布式结构。上面提到的使用代理服务器和Web服务器相结合,或者两台 Web服务器相互协作的方式也属于多服务器的结构,但在这些多服务器的结构中,每台服务器所起到的作用是不同的,属于非对称的 体系结构。非对称的服务器结构中每个服务器起到的作用是不同的,例如一台服务器用于提供静态网页,而另一台用于提供动态网页 等等。这样就使得网页设计时就需要考虑不同服务器之间的关系,一旦要改变服务器之间的关系,就会使得某些网页出现连接错误, 不利于维护,可扩展性也较差。
  能进行负载均衡的网络设计结构为对称结构,在对称结构中每台服务器都具备等价的地位,都可以单独对外提供服务而无须其他 服务器的辅助。然后,可以通过某种技术,将外部发送来的请求均匀分配到对称结构中的每台服务器上,接收到连接请求的服务器都 独立回应客户的请求。在这种结构中,由于建立内容完全一致的Web服务器并不困难,因此负载均衡技术就成为建立一个高负载Web 站点的关键性技术。
  总之,负载均衡是一种策略,它能让多台服务器或多条链路共同承担一些繁重的计算或I/O任务,从而以较低成本消除网络瓶颈, 提高网络的灵活性和可靠性。


[size=medium][b]学习三、[/b][/size]

服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就象是只有一个服务器 集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行

目录

服务器集群
创建群集
形成群集
优势
缺点
加入群集
脱离群集
方法
编辑本段
服务器集群

  一旦在服务器上安装并运行了群集服务,该服务器即可加入群集。群集化操作可以减少单点故障数量,并且实现了群集化资源的高可用性。下述各节简要介绍了群集创建和群集操作中的节点行为。
  注意:有关安装群集服务器的信息,请参阅 Windows server 2003 产品家族的帮助和部署指南。
编辑本段
创建群集

  在服务器群集产品中含有用来在服务器上安装群集软件和创建新群集的群集安装实用工具。创建新群集时,首先在选择作为群集的第一个成员的计算机上运行该实用工具。第一步是确定群集名称并创建群集数据库和初始的群集成员列表来定义新群集。 Windows server 2003 群集新增了一个群集管理设置向导以及使用 cluster.exe 命令行界面创建( 包括从远程创建 )群集的功能。
  创建群集的第二步是,添加可供所有群集成员使用的共用数据存储设备。这样,创建的新群集将带有一个节点、自己的本地数据存储设备以及群集共用资源 —— 通常是磁盘或数据存储和连接介质资源。
  创建群集的最后一步是,在另外将要成为群集成员的每一台计算机上运行安装实用工具。每当将新节点添加到群集中时,新节点都会自动从群集的原始成员获得现有群集数据库的副本。当节点加入或形成群集时,群集服务会更新该节点私有的配置数据库副本。
编辑本段
形成群集

  如果服务器运行了群集服务并且无法找到群集中的其它节点,它自己可以形成一个群集。要形成群集,节点必须能够获得对仲裁资源的独占权。
  当最初形成群集时,群集中的第一个节点将包括群集配置数据库。每当有新节点加入群集时,新节点都会在本地获得并保持群集配置数据库的副本。仲裁资源用恢复日志(其中含有同节点无关的群集配置和状态数据)的形式存储配置数据库的最新版本。
  在群集运行中,群集服务使用仲裁恢复日志执行以下操作 :
  保证只有一组活动、可相互通讯的节点才能形成群集
  仅当某个节点可以获得对仲裁资源的控制权时 , 才允许它形成群集
  仅当某个节点可以同控制仲裁资源的节点通讯时 , 才允许它加入或留在现有群集中
  从群集中的其它节点和群集服务管理接口的角度看,当形成群集时,群集中的每个节点可能处于三种不同状态中的一种。事件处理器会记录这些状态,而事件日志管理器会将这些状态复制到群集的其它节点。群集服务状态包括:
  脱机。此时的节点不是完全有效的群集成员。该节点及其群集服务器可能在运行,也可能未运行。
  联机。此时的节点是完全有效的群集成员。它遵从群集数据库的更新、对仲裁算法施加自己的影响、维护心跳通讯,并可以拥有和运行资源组。
  暂停。此时的节点是完全有效的群集成员。它遵从群集数据库的更新、对仲裁算法施加自己的影响、维护心跳通讯,但它无法接受资源组。它只能支持它当前已拥有的那些资源组。之所以提供暂停状态,是为了允许执行某些维护。大多数服务器群集组件会将联机和暂停视为等价的状态。
编辑本段
优势

  一、集群系统可解决所有的服务器硬件故障,当某一台服务器出现任何故障,如:硬盘、内存、CPU、主板、I/O板以及电源故障,运行在这台服务器上的应用就会切换到其它的服务器上。
  二、集群系统可解决软件系统问题,我们知道,在计算机系统中,用户所使用的是应用程序和数据,而应用系统运行在操作系统之上,操作系统又运行在服务器上。这样,只要应用系统、操作系统、服务器三者中的任何一个出现故障,系统实际上就停止了向客户端提供服务,比如我们常见的软件死机,就是这种情况之一,尽管服务器硬件完好,但服务器仍旧不能向客户端提供服务。而集群的最大优势在于对故障服务器的监控是基于应用的,也就是说,只要服务器的应用停止运行,其它的相关服务器就会接管这个应用,而不必理会应用停止运行的原因是什么。
  三、集群系统可以解决人为失误造成的应用系统停止工作的情况,例如,当管理员对某台服务器操作不当导致该服务器停机,因此运行在这台服务器上的应用系统也就停止了运行。由于集群是对应用进行监控,因此其它的相关服务器就会接管这个应用。
编辑本段
缺点

  我们知道集群中的应用只在一台服务器上运行,如果这个应用出现故障,其它的某台服务器会重新启动这个应用,接管位于共享磁盘柜上的数据区,进而使应用重新正常运转。我们知道整个应用的接管过程大体需要三个步骤:侦测并确认故障、后备服务器重新启动该应用、接管共享的数据区。因此在切换的过程中需要花费一定的时间,原则上根据应用的大小不同切换的时间也会不同,越大的应用切换的时间越长。
编辑本段
加入群集

  如果一个服务器要加入现有群集 , 则它必须运行群集服务并且必须成功找到群集中的其它节点。在找到其它节点后,加入的服务器必须接受群集成员资格验证,并获得群集配置数据库的副本。
  加入现有群集的过程开始于 Windows Server 2003 或 Windows 2000 Service Control Manager 在节点上启动群集服务之时。在启动过程中,群集服务会配置并装入该节点的本地数据设备。它并不会试图将共用的群集数据设备作为节点联机,因为现有群集可能正在使用这些设备。
  为了查找其它节点 , 会启动一个发现过程。当节点发现任何群集成员时,它将执行身份验证序列。第一个群集成员会对新加入者进行身份验证,并且在新服务器得到成功验证后返回成功状态。如果验证不成功(未能识别待加入节点的群集成员身份,或者它使用了无效的帐户密码),则加入群集的请求会被拒绝。
  进行成功验证后,首先联机的群集节点会检查加入节点上的配置数据库副本。如果该副本已过时,对加入服务器进行验证的群集节点会为加入的服务器发送该数据库的更新副本。刚加入群集的节点在收到复制的数据库后,可以用它查找共享资源并根据需要将它们联机。
编辑本段
脱离群集

  当节点关闭或群集服务被停止时,节点可能脱离群集。但当节点不执行群集操作(比如不向群集配置数据库提交更新)时,节点也可能被迫脱离(被逐出)群集。
  如果节点根据预先的计划脱离群集 , 它会向其它所有节点成员发送 ClusterExit 消息,通知它们它将脱离群集。该节点不等待任何响应就会立即进行关闭资源和所有群集连接的操作。由于其余节点收到了退出消息,因此它们不会执行在节点意外失效或网络通讯停止时发生的重新分组过程以重新确立群集成员身份。
编辑本段
方法

  有两种常用的服务器集群方法,一种是将备份服务器连接在主服务器上,当主服务器发生故障时,备份服务器才投入运行,把主服务器上所有任务接管过来。另一种方法是将多台服务器连接,这些服务器一起分担同样的应用和数据库计算任务,改善关键大型应用的响应时间。同时,每台服务器还承担一些容错任务,一旦某台服务器出现故障时,系统可以在系统软件的支持下,将这台服务器与系统隔离,并通过各服务器的负载转嫁机制完成新的负载分配。PC服务器中较为常见的是两台服务器的集群,UNIX系统可支持8台服务器的集群系统,康柏的专用系统OpenVMS可支持多达96台服务器的集群系统。
  在集群系统中,所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。集群必须可以协调管理各分离组件的错误和失败,并可透明的向集群中加入组件。用户的公共数据被放置到了共享的磁盘柜中,应用程序被安装到了所有的服务器上,也就是说,在集群上运行的应用需要在所有的服务器上安装一遍。当集群系统在正常运转时,应用只在一台服务器上运行,并且只有这台服务器才能操纵该应用在共享磁盘柜上的数据区,其它的服务器监控这台服务器,只要这台服务器上的应用停止运行(无论是硬件损坏、操作系统死机、应用软件故障,还是人为误操作造成的应用停止运行),其它的服务器就会接管这台服务器所运行的应用,并将共享磁盘柜上的相应数据区接管过来。其接管过程如下图所示(以应用A为例):
  1.应用A正常工作时;
  2.应用A停止工作后,其它的备用服务器将该应用接管过来。 具体接管过程分三部执行: a.系统接管 b.加载应用 c.客户端连接