Linux平台的集群软件介绍
2009-11-22 11:40:22 阿炯

Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)
高可用集群( High Availability Cluster)
负载均衡集群(Load Balance Cluster)
科学计算集群(High Performance Computing Cluster)
================================================

高可用集群(High Availability Cluster)
常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如"双机热备", "双机互备", "双机".高可用集群解决的是保障用户的应用程序持续对外提供服务的能力。 (请注意高可用集群既不是用来保护业务数据的,保护的是用户的业务程序对外不间断提供服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度)

Linux平台常见的高可用集群有这些:
1.  RedHat 公司 的 开放源代码RedHat Cluster Suite, 简称RHCS .
- RHCS实际上是一个套件,除了现在提到的高可用集群软件,还包含了一个基于LVS的负载均衡软件.
- RHCS包含的集群软件,是GPL协议下开放源代码的集群系统.
- RHCS目前的版本有 RHCS v3和 v4,分别对应于RedHat 企业版Linux的 3.0家族和4.0家族.
- RHCS是一个独立的产品,不包括在RedHat Enterprise Linux当中,无论是购买还是下载,都是单独存在的.
RHCS的获得:
RHCS的获得有三个途径:
a. 从redhat 的官方销售渠道购买,得到的是RedHat RHCS产品的二进制代码(光盘或直接从RHN-RedHat Network下载),源代码,以及支持和升级服务.
b. 从redhat 的官方站点下载SRPM包,编译并安装. 无原厂商业支持和升级服务.
c. 从centOS官方站点下载RHCS的二进制代码包并安装,无原厂商业支持和升级服务. 这里下载(http://mirror.centos.org/centos/4/csgfs/, 请阅读此目录中的README文件)

2. Novell 公司 的 开放源代码高可用集群HA套件
Novell 公司并购了欧洲Linux第一大厂SuSE之后,成为全球能够抗衡RedHat的主要力量. SuSE 企业版Linux 带有一套开放源代码的HA集群软件,包括 HA project的heartbeat, heartbeat-ldirectord, heartbeat-pils, heartbeat-stonith, 集群关联的存储软件drbd, 虚拟IP的 src_vipa软件.和RHCS不同的是,SuSE/Novell 企业版Linux自带的 HA集群软件并非一个独立的软件,如上介绍,而是由不同的开放源代码项目提供的不同部分的程序。

集群软件的获得:
本集群软件组件已经附带在SuSE Linux Enterprise Server 光盘中(SLES9, SLES10), SuSE Linux Enterprise Server(SLES9, SLES10)的光盘,可以免费从download.novell.com获得,并提供2个月的在线网络更新服务. 用户只需要在novell站点上免费注册一个novell 站点账号,就可以下载SLES9, SLES10的所有光盘ISO.

3. Novell 公司的Novell Cluster Service
Novell 在败落前,曾经是一家非常伟大的公司,有着非常雄厚的技术力量。早在10多年前,Novell公司就在集群领域独树一帜,是当时唯一能够在PC服务器上构建出32节点集群的厂商.
Novell 收购SuSE公司之后,将原来在Novell netware操作系统上的大量企业级应用移植和整合到了SuSE Linux Enterprise Linux平台, Novell 当时名震集群领域的Novell Cluster Service 也被整合移植到了Linux平台.
Novell Cluster Service是一个商业系统,并非开放源代码产品
这里可以看到细节:http://www.novell.com/products/openenterpriseserver/ncs.html
产品的获得:直接从Novell 公司购买.

4. Steeleye Lifekeeper for linux (产品介绍http://www.steeleye.com/)
steeleye 公司是集群行业非常著名的公司,他们的集群系统最早是AT&T 贝尔实验室开发的,后来被卖给了金融行业的著名IT公司NCR公司。(不少朋友到ATM取钱的时候也许会看到NCR制造的ATM机). lifekeeper集群的历史非常悠久,后来steeleye又得到了几个从当时的巨头DEC跳槽来的核心开发人员.因此lifekeeper的构架和 品质是有非常好的口碑的.

产品获得
a. 从steeleye官方渠道申请试用版
b. 从steeleye 官方购买

5. HP MC/Service Guard for linux
HP在和Compaq合并之前,在HP-UX平台有一套旗舰级的高可用集群系统(MC/SG for HP-UX),被广泛部署在各种关键业务计算领域。比如银行,电信,金融等等。主要的硬件平台是PA-RISC架构的小型机和中型机系统.
Compaq在和HP合并之前,在Alpha 平台有一套旗舰级的高可用集群,叫做(TruCluster).被广泛部署在各种关键业务计算领域,比如国防,航天,制造等等。主要的硬件平台是Alpha架构的小型机和中型机。
随着两个公司的合并,两套著名的集群系统也完成了合并,新的产品仍旧叫做MC/SG,但是可以跑在PA-RISC, IA, IA64平台。5年前,HP将MC/SG集群系统移植到了linux平台,并发展至今。 HP MC/SG for linux有着非常高的品质和长期在高度关键业务要求的领域发展的背景。
软件的获得:从HP官方渠道购买并获得技术支持和升级服务.

6. 开放源代码的 HA 项目 (http://www.linux-ha.org/)
linux-HA 项目历史悠久, 很多linux 发行附带的HA集群都是采用了linux-HA 的heartbeat系统和相关的组件。需要构建完全的开源,自由而且免费的高可用集群的用户可以选择。
软件获得:免费下载,没有商业支持和商业升级服务.

7. Turbolinux 高可用集群系统
Turbolinux 这几年发展的颇不顺利,从创始人走人到公司在日本的股权变动. 颇让人担忧。TurboLinux 的高可用集群软件有两个.
a. TurboLinux Cluster HA 3.1
b. TurboLinux8 ClusterPro

因为都没有在具体的项目中深入用过,不做更多解释.软件获得:从Turbolinux 官方购买,并获得技术支持和升级服务.

保证持续稳定的系统运行时间变得越来越重要,而传统意义上的小型机系统让普通用户望而却步。用户需要的是更高的可用性以及更低的成本。高可用性(HA)技术能自动检测服务器节点和服务进程错误、失效,并且当发生这种情况时能够自动适当地重新配置系统,使得集群中的其他节点能够自动承担这些服务,以实现服务不中断。
Cluster应用可分为三方面:High-Availability(HA)(高可用性集群)、Load Balance(负载均衡集群)、Scientific(科学集群)。在集群的这三种基本类型之间,经常会发生混合与交杂。于是,可以发现高可用性集群也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的集群中找到一个并行群集,它可以在节点之间执行负载均衡。而本文则侧重于介绍基于Linux的HA解决方案方面的问题。
基于LVS的HA方案 Linux要进入高端市场就必须在这方面有相应的措施,所以许多公司都在这方面加大了研究力度。现在,我们可以使用一些现存的软件去构筑具有高可用性的LVS系统。下面列出两种方案,以供参考。

[方案一]mon+heartbeat+ fake+coda
我们可以使用“mon”、“heart beat”、“fake”和“coda”四个软件来构筑具有高可用性的Virtual Server(虚拟服务器)。“mon”是一个大众化的资源管理系统,用来监控网络上的服务器节点和网络服务。
“heartbeat”实现在两台计算机间通过在串行线上使用UDP协议传送“心跳信息”。“Fake”是一个使用ARP欺骗的方法来实现IP接管。
当服务器故障时,处理过程如下:“mon”进程运行在负载均衡器上,负责监测整个集群的服务器节点和服务进程。在配置文件“fping.monitor”中写入要检测服务器节点,然后“mon”进程将会隔t秒检查一下相应的服务器节点是否还活着。
另外相关的服务监视器也要做相应的配置,这样“mon”进程将每m秒检测一下所有节点的相应服务进程。例如:http.monitor:用于配置监控http服务;ftp.monitor:用于配置监控ftp服务;以此类推。当配置完成后,某个服务器节点失效或重新生效、服务进程失效或重新生效时都会发送一个通告信息,因此,负载均衡器能够知道服务器节点是否能接受服务。
现在,负载均衡器成为了整个系统的单点失效。为了防止这一现象,我们必须安装一个负载均衡器的备份服务器。“fake”软件实现当负载均衡器失效时,备份服务器自动接管IP地址,并继续服务。而“heartbeat”则随时根据负载均衡器的状态自动激活/关闭备份服务器上的“fake”进程。在负载均衡器和备份服务器上都运行着一个“heartbeat”进程,它们通过串行线周期性地发送“I'm alive ”消息。如果备份服务器在一个预定时间内接收不到来自负载均衡器的“I'm alive”信息时,将自动激活“fake”进程接管负载均衡器的IP地址,并开始提供负载均衡服务;而当再次收到来自负载均衡器的“I'm alive ”消息时,备份服务器将自动将“fake”进程关闭,释放出它接管的服务器,负载均衡器重新开始工作。
但是,如果负载均衡器在客户正在请求时失效,这时会引起客户请求失败,客户必须重新发出请求信息。
“coda”是一个容错的分布式文件系统,源于Andrew文件系统。服务器上的目录能够存储在“coda”上,所以文件能够实现高可用性,并且易于管理。

[方案二]ldirectord+heartbeat
“ldirectord”(Linux Director Daemon)是Jacob Rief编程实现的一个独立进程,以实现对服务和物理服务器的监测,广泛地用于http和https服务。
“ldirectord”安装简单,能很好地与“heartbeat”配合工作。“ldirectord”程序包含在“ipvs”包中的“contrib”目录中。
以下是“ldirectord”的一些优点:
“ldirectord”是专门撰写的LVS监测程序。它从/etc/ha.d/xxx.cf文件中读取所有关于IPVS路由表的配置信息。当“ldirectord”运行起来后,IPVS路由表将会被适当地配置。
可以将Virtual service配置放在多个配置文件中,所以可以单独修改某一种服务的参数,而不影响其他的服务。“ldirectord”能被“heartbeat”轻松地管理----启动、关闭。
将“ldirectord”放到/etc/ha.d/resource.d/目录下,然后在/etc/ha.d/haresources中增加一行:
node1 IPaddr::10.0.0.3ldirectord::www ldirectord::mail
“ldirectord”能够手动开启、关闭。可以在无备份负载均衡器的LVS集群中使用它。
Xlinux的LATCH HA方案 正如前面所述,高可用性解决方案(HA)是极为重要的,许多厂商为此投入了大量的研究。其中,Xlinux发行版就提供LATCH HA解决方案。

下面我们就一起看看LATCH HA方案。
LATCH HA解决方案的最典型的系统结构:两台主机A、B共享一个磁盘阵列,A为工作机,B为备份机。它们之间用一根心跳线来连接,这称为“心跳检测”,主要通过一条RS232检测链路来完成。LATCH HA也采用了用Ping来验证系统宕机的方法。安装在主机上的HA软件通过心跳线来实时监测对方的运行状态,一旦正在工作的主机A因为各种硬件故障导致系统发生故障,主机B立即投入工作。
LATCH HA实现了“高可靠性共享存储”架构。该架构由两个或三个冗余服务器、一个共享冗余磁盘阵列、一个可选DBMS及LATCH HA系统软件构成。在LATCH HA的保护下,企业的计算机系统能够提供不间断的信息服务,避免由于硬件故障或日常维护所带来的宕机,因而能够保障最佳的可靠性及最大程度地减少宕机时间。

方案应用
LATCH HA能够应用在各种集中式、客户机/服务器模式或OLTP系统中。同时其与市场上各种主流的数据库系统与OLTP软件(如:Oracle、SYBASE、Informix、Tuxedo)也都保持兼容。LATCH Ha同时提供了各种应用程序接口。因此,客户能够在其私有软件中集成各种功能来保证系统的高可靠性。

LATCH HA /HS2000 在线待机模式
在这种模式下,一个服务器作为主服务器。正常情况下其承当所有的服务。另外一台服务器作为待机服务器(正常情况下除了监控主服务器的状态,不进行其他的操作)。一旦主服务器宕机,待机服务器就接手工作,成为新的主服务器。客户仍然可以拥有同样的服务器IP地址、NFS、数据、数据库及其他……这种应用模式近似于上面介绍的典型应用模式(两台服务器实际上是在完成同一个功能应用),安装在主机上的HA软件通过心跳线来实时监测对方的运行状态,一旦正在工作的主机A因为各种硬件故障,如电源失效、主要部件失效或者启动盘失效等导致系统发生故障,主机B立即投入工作。

LATCH HA /DA2000双机就绪模式
在这种模式下,两个主机都作为主服务器,共享自己的磁盘阵列,各自承当一部分服务。例如:服务器A在执行应用A, 服务器B在执行应用B, 两个主机在正常情况下各自独立运行自己的应用逻辑,两个主机同时又都作为对方的待机服务器,通过心跳线监控对方的状态。一旦某一服务器宕机,另一台服务器就承担所有的服务,为所有的客户服务。一旦服务器A发生故障,服务器B马上接管服务器A上原来的应用;或者服务器B发生故障,服务器A马上接管服务器B上原来的应用,这是一种互为冗余的模式。
很明显,一旦某一服务器宕机,另一台服务器的工作负担就比较重,于是就有了三主机模式。

LATCH HA /HC2000 三主机模式
这种应用模式是最高端的HA应用模式,它既保证了系统的设备冗余,避免系统宕机,而且又能保证在一旦宕机的情况下有足够的系统资源可供使用。
在这种模式中,待机服务器C同时监控主服务器A与B的状态。一旦服务器A或B宕机,服务器C将承担其服务,为客户服务。这种系统结构既保证了系统的安全运行,又保证了系统资源。
Linux HA的解决方案当然不限于上述两种,但其核心思想是一致的,即提供不间断的服务。近年来随着Linux操作系统不断走向成熟,功能不断增强,特别是其遵循GPL和标准化的PVM、MPI消息传递机制的特性和在普通PC机上越来越好的高性能网络的支持,所有这些为基于Linux的集群系统的发展提供了坚实的技术基础,在把技术转化为具体的应用过程中,高端的HA应用以其稳定可靠的性能和与Unix相比价格上的优势而脱颖而出。随着基于Intel平台的服务器业已成为关键性业务和应用的主流服务器,Linux HA集群技术的应用亦将日益广泛。

HA实际上是两台(或更多)计算机通过一定方式互相监听,实现热备份。当其中Primary server出现问题时,Standby server能够自动立即接替工作,使用户感觉不到停机。在Primary server恢复正常之后,Standby server又会把工作还给Primary server.