双机软件与集群软件的异同

在双机热备应用方面,有两大类软件产品。一类是双机软件(HA),另一类则称作集群软件(Cluster)。这两类软件的异同在什么地方呢?
  它们都是为实现系统的高可用性服务的,都解决了一台服务器出现故障时,由其他服务器接管应用,从而持续可靠地提供服务的问题。
  它们都是通过心跳技术在进行系统检测。
  但是,双机软件只能支持两台服务器以主从方式或互备方式工作。而集群软件除了支持双机工作外,还可以支持多台服务器(Multi Node)工作,同时部署多个应用,并在多个服务器间灵活地设置接管策略。
  在两种情况下需要使用集群软件:一是有超过两个应用,本身就需要部署三台或更多的服务器。二是只有两个应用,但每个应用的负载均较大,不宜采用双机互备的方式,而是需要由第三台服务器来作为这两个应用的备机。
  一般地讲,集群软件具有更多的技术含量,具备更高的可靠性。同时,往往价格(平均到每台服务器)也高于双机软件。
  在选择产品时,应根据应用的实际情况来确定。最理想的方式,则是在应用数量少、负载不是很大时先使用双机软件,然后在应用数量增多、负载增大时平滑过渡到集群软件。
  典型的支持多点集群的热备软件,参见:LanderCluster集群软件)
 

Web服务器和应用服务器的负载均衡

本文对Web服务器和应用服务器的负载均衡进行说明。
 在负载均衡的思路下,多台服务器为对称方式,每台服务器都具有同等的地位,可以单独对外提供服务而无须其他服务器的辅助。通过负载分担技术,将外部发送来的请求按一定规则分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。
 提供服务的一组服务器组成了一个应用服务器集群(cluster),并对外提供一个统一的地址。当一个服务请求被发至该集群时,根据一定规则选择一台服务器,并将服务转定向给该服务器承担,即将负载进行均衡分摊。
 通过应用负载均衡技术,使应用服务超过了一台服务器只能为有限用户提供服务的限制,可以利用多台服务器同时为大量用户提供服务。当某台服务器出现故障时,负载均衡服务器会自动进行检测并停止将服务请求分发至该服务器,而由其他工作正常的服务器继续提供服务,从而保证了服务的可靠性。
 上述的集群技术一般都用于Web服务器、应用服务器等,而不是用于数据库服务器,即不是用于有共享的存储的服务。数据库服务器将涉及到加锁、回滚等一系列问题,要复杂的多。一般数据库服务器只是使用双机,其中一台工作,另一台备份。数据库的双机并行只用于大型数据库中。可参见:
 负载均衡实现的方法有几种:
  • 最简单的是通过DNS,但只能实现简单的轮流分配,也不能处理故障
  • 如果是基于MS IISWindows 2003 Server本身就带了负载均衡服务。但这一服务也只是轮流分配。
  • 硬件方式,通过交换机的功能或专门的负载均衡设备可以实现。对于流量的分配可以有多种方式,但基本上都是应用无关的,与服务器的实际负载关系也不大。另外,设备的价格较贵(优点是能支持很多台服务器)。这种方式往往适合大流量、简单应用。
  • 软件方式,通过一台负载均衡服务器进行,上面安装软件。这种方式比较灵活,成本相对也较低。另外一个很大的优点就是可以根据应用的情况和服务器的情况采取一些策略。这方面比较典型的软件产品,是富士通西门子公司的PCL SIS负载均衡软件
 

心跳故障检测过程说明

双机热备及集群软件在集群节点间保持着间歇的通信信号,也叫做心跳信号,是错误检测的一个机制。即通过每一个通信路径,周期性的检测各个节点的状态(包括系统的状态和应用的状态),如果连续没有收到的心跳信号到了一定的数目,双机热备及集群软件就将认为相应的系统已经出现故障。
 传统上心跳故障检测使用串口通讯的方式。但目前已经普遍使用基于TCP/IP的方式。两台服务器之间,可以使用直连网线。也可以将两台或多台服务器用于心跳诊断的网卡通过交换机连接,组成一个私网。
 

双机热备与数据备份的关系

一些用户在规划双机热备或双机备份时,会有这样的问题:我已经有了RAID,以及磁带备份,还有必须做双机吗?或者,如果我做了双机备份,还有必要做磁带备份吗?
 应该说RAID和数据备份都是很重要的。但是,RAID技术只能解决硬盘的问题,备份只能解决系统出现问题后的恢复。而一旦服务器本身出现问题,不论是设备的硬件问题还是软件系统的问题,都会造成服务的中断。因此,RAID及数据备份技术不能解决避免服务中断的问题。对于需要持续可靠地提供应用服务的系统,双机还是非常重要的。只要想一想,如果你的服务器坏了,你要用多少时间将其恢复到能正常工作,你的用户能容忍多长的恢复时间就能理解双机的重要性了。
 从另外一个方面,RAID以及磁带备份也是非常需要的。对于RAID而言,可以以很低的成本大大提高系统的可靠性,而且其复杂程度远远低于双机。因为毕竟硬盘是系统中机械操作最频繁、易损率最高的部件,如果采用RAID,就可以使出现故障的系统很容易修复,也减少服务器停机进行切换的次数。
 数据备份更是必不可少的措施。因为不论RAID还是双机,都是一种实时的备份。任何软件错误、病毒影响、误操作等等,都会同步地在多份数据中发生影响。因此,一定要进行数据的备份(不论采取什么介质,都建议用户至少要有一份脱机的备份),以便能在数据损坏、丢失时进行恢复