什么是cluster技术
Cluster技术发展多年了,但其实并没有一个非常准确的定义和分类,不同的人有不同的理解。
其实,叫什么无所谓,只要能够对用户有益就可以了. :-)
就个人理解而言,cluster有以下几种,当然前面说过,不同的人有不同的理解,大家可以充分讨论。我的这些分类更偏重于工程而不是技术性。
1. HA集群
实现高可用性,但对单个应用性能没有提高,市场上大部分产品都是属于这类,技术上也较简单。
2. IP负载均衡集群
利用IP技术实现对通用IP应用的支持。这种技术并不是很新,最早是在硬件上面采用的,Linux出现后才有了很多纯软件的模式,这也是open source带来的好处吧
3.并行计算集群
包括了一些象PVM,beowulf这样的信息传递机制和API库,也有任务调度产品,当然技术上最难的是并行编译/并行系统等更智能化的产品
4.应用负载均衡集群
虽然cluster的最高目的是实现真正的与应用程序无关的动态负载均衡,但由于技术上的限制,现在都只能在特殊的应用中实现,需要修改应用程序,所以并没有通用产品,大多是厂商有自己的并行版本。例如oracle paraller server.
以上基本是按照工程或者说产品的角度划分的,和技术上划分应该有一定区别。
下面是一篇很早以前写的东西,当时是为了媒体宣传写的,有一些商业味道在里面,有些地方技术上也不完全正确。现在给大家附上是想交换一下观点。并不是宣传Turbolinux公司的产品(本人是Turbolinux员工),确实是实在懒得改了,虽然这种商业性文章在公***社区里发表犯了大忌。只是供大家参考,关于Turbolinux产品优劣不参与讨论。请大家理解。
一直是不参与linux社区讨论的,这次是因为对cluster接触了比较长的时间,已经有了很大的兴趣,所以注册了来灌水。
随着Internet/Intranet应用的日益广泛,计算机系统的重要性也日益上升。低故障率和高性能向来是人们追求的主要目标,但对于单台服务器来讲,这两个问题是无法解决的。
l 可用性——很多服务器都宣称已经达到了99%的可用性。这个数字意味着什么呢?也就是说每年会有1%的非预计停机时间,让我们来具体算一下。 365(天 / 年)× 24(小时 / 天) × 1% = 87.6 (小时 / 年)。这每年87.6小时的停机时间对于要求24×7连续服务的企业来说简直就是灾难。
l 高性能——假设一般的桌面机每秒能够处理几千个请求,而IA服务器每秒能够处理几万个请求。那么对于需要每秒处理几十万个请求的企业来说,如果不采用集群技术,唯一的选择就是购买更加高档的中、小型计算机。如果这样做,虽然系统性能只提高了十倍,但其购买价格和维护费用就将会上升几十倍甚至更多。
集群技术的出现和发展则很好的解决了这两个问题。
一.集群
集群就是由一些互相连接在一起的计算机构成的一个并行或分布式系统,从外部来看,它们仅仅是一个系统,对外提供统一的服务。
集群技术本身有很多种分类,市场上的产品也很多,都没有很标准的定义。一般可以分为以下几种:
1. 基于冗余的集群
严格来讲,这种冗余系统并不能叫做真正的集群,因为它只能够提高系统的可用性,却无法提高系统的整体性能。
有以下几种类型。
A. 容错机
特点是在一台机器内部对其所有的硬件部件都进行冗余(包括硬盘、控制卡、总线、电源等等)。
能够基本做到与软件系统无关,而且可实现无缝切换,但价格极其昂贵。
典型市场产品:Compaq NonStop(Tandem),Micron(NetFrame),Straus
B. 基于系统镜像的双机系统
特点是利用双机,将系统的数据和运行状态(包括内存中的数据)进行镜像,从而实现热备份的目的。
能够做到无缝切换,但因为采用软件控制,占用系统资源较大,而且由于两台机器需要完全一样的配置,所以性能价格比太低。
典型市场产品:Novell SFT III,Marathon Endurance 4000 for NT
C. 基于系统切换的双机系统
特点是利用双机,将系统的数据(仅指硬盘数据)进行镜像,在主机失效的情况下从机将进行系统一级的切换。
性能价格比适中,但无法实现无缝切换。
典型市场产品:Legato(Vinca) StandbyServer for NetWare,Savoir(WesternMicro)SavWareHA(Sentinel),Compaq StandbyServer
2. 基于应用程序切换的集群
特点是当集群中的某个节点故障时,其它节点可以进行应用程序一级的切换,所以所有节点在正常状态下都可以对外提供自己的服务,也被成为静态的负载均衡方式。
性能价格比高,但也无法实现无缝切换,而且对单个应用程序本身无法做到负载均衡。
典型市场产品:Legato(Vinca) Co-StandbyServer for NT,Novell HA Server,Microsoft Cluster Server,DEC Cluster for NT,Legato Octopus,Legato FullTime,NeoHigh Rose HA,SUN Clusters, Veritas Cluster Server (FirstWatch),CA SurvivIT,1776
3. 基于并行计算的集群
主要应用于科学计算、大任务量的计算等环境。有并行编译、进程通讯、任务分发等多种实现方法。
典型市场产品:TurboLinux enFuzion,Beowulf,Supercomputer Architectures,Platform
4. 基于动态负载均衡的集群
所有节点对外提供相同的服务,这样可以实现对单个应用程序的负载均衡,而且同时提供了高可用性。
性能价格比极高,但目前无法支持数据库。
典型市场产品:TurboCluster Server,Linux Virtual Server,F5 BigIP,Microsoft Windows NT Load Balance Service
二.负载均衡
负载均衡是提高系统性能的一种前沿技术。还是沿用前面的例子,一台IA服务器的处理能力是每秒几万个,显然无法在一秒钟内处理几十万个请求,但如果我们能够有10台这样的服务器组成一个系统,如果有办法将所有的请求平均分配到所有的服务器,那么这个系统就拥有了每秒处理几十万个请求的能力。这就是负载均衡的基本思想。
实际上,目前市场上有多家厂商的负载均衡产品。由于其应用的主要技术的不同,也就有着不同的特点和不同的性能。
1.轮询DNS
轮询DNS方案可以说是技术上最简单也最直观的一种方案。当然,这种方案只能够实现负载均衡的功能,却无法实现对高可用性的保证。
它的原理是在DNS服务器中设定对同一个Internet主机名的多个IP地址的映射。这样,在DNS收到查询主机名的请求时,会循环的将所有对应的IP地址逐个返回。这样,就能够将不同的客户端连接定位到不同的IP主机上,也就能够实现比较简单的负载均衡功能。但是,这种方案有两个比较致命的缺点:
l 只能够实现对基于Internet主机名请求的负载均衡,如果是直接基于IP地址的请求则无能为力。
l 在集群内有节点发生故障的情况下,DNS服务器仍会将这个节点的IP地址返回给查询方,也就仍会不断的有客户请求试图与已故障的节电建立连接。这种情况下,即使你手工修改DNS服务器的对应设置,将故障的IP地址删除,由于Internet上所有的DNS服务器都有缓存机制,仍会有成千上万的客户端连接不到集群,除非等到所有的DNS缓存都超时。
2.硬件解决方案
有些厂商提供对负载均衡的硬件解决方案,制造出带有NAT(网络地址转换)功能的高档路由器或交换机来实现负载均衡功能。NAT本身的原理就是实现多个私有IP地址对单个公***IP地址的转换。代表产品是Cicso公司和Alteon公司的某些高档硬件交换机系列。这种方案有如下缺点:
l 由于采用了特殊的硬件,使得整个系统中存在非工业标准部件,极大的影响系统的扩充和维护、升级工作。
l 价格极其昂贵,和软件的解决方案根本是数量级上的差别。
l 一般只能实现对节点系统一级的状态检查,无法细化到服务一级的检查。
l 由于采用NAT机制,集群管理节点本身要完成的工作量很大,很容易成为整个系统的瓶颈。
l 此特殊硬件本身就是单一故障点。
l 实现异地节点的集群非常困难。
3.协商式处理(并行过滤)
这种方案的原理是客户请求会同时被所有的节点所接收,然后所有节点按照一定的规则协商决定由哪个节点处理这个请求。此种方案中比较显著的特点就是整个集群中没有显著的管理节点,所有决定由全体工作节点***同协商作出。代表产品是Microsoft公司的Microsoft Load Balancing Service这种方案的特点是:
l 由于各节点间要进行的通讯量太大,加重了网络的负担,一般需要增加节点通讯的专用网络,也就加大了安装和维护的难度和费用。
l 由于每个节点都要接收所有的客户请求并进行分析,极大的加大了网络驱动层的负担,也就减低了节点本身的工作效率,同时也时网络驱动层很容易成为节点系统的瓶颈。
l 由于要更改网络驱动层的程序,所以并不是一个通用的方案,只能够实现对特殊平台的支持。
l 在小量节点的情况下协商的效率还可以接受,一旦节点数量增加,通讯和协商将变得异常复杂和低效,整个系统的性能会有非线性的大幅度下降。所以此类方案,一般在理论上也只允许最多十几个的节点。
l 无法实现异地节点的集群。
l 由于集群内没有统一的管理者,所以可能出现混乱的异常现象。
4.流量分发
流量分发的原理是所有的用户请求首先到达集群的管理节点,管理节点可以根据所有服务节点的处理能力和现状来决定将这个请求分发给某个服务节点。当某个服务节点由于硬件或软件原因故障时,管理节点能够自动检测到并停止向这个服务节点分发流量。这样,既通过将流量分担而增加了整个系统的性能和处理能力,又可以很好的提高系统的可用性。
通过将管理节点本身做一个子集群可以消除由于管理节点自身的单一性带来的单一故障点。有些传统技术人员认为,因为所有的客户流量都将通过管理节点,所以管理节点很容易成为整个系统的瓶颈。但TurboCluster Server通过先进的直接路由或IP隧道转发机制巧妙的解决了问题。使得所有对客户响应的流量都由服务节点直接返回给客户端,而并不需要再次通过管理节点。众所周知,对于服务提供商而言,进入的流量要远远小于流出的流量,所以管理节点本身将不再是瓶颈。
流量分发的具体实现方法有直接路由、IP隧道和网络地址转换三种方法。TurboCluster Server目前支持效率最高的前两种。由于这种先进的结构和技术,使得TurboCluster Server集群内的服务节点数并没有上限,而且对大量节点的协同工作的效率也能够非常好的保证。
三.市场前景
集群技术已经发展了多年,其中的分支也非常多。目前集群技术正逐渐走向分层结构,以后也肯定会有专门用户前端、后端的集群产品出现。
随着计算机应用地位的逐渐提升,系统安全和重要性的日益增加,集群技术必将会有着极为广阔的应用前景。