张剑 武汉广电数字网络有限公司数字电视技术部副经理
上一篇我们谈到了网络设备在武汉数字电视平台中使用双机热备技术的具体情况。实际上在系统平台中仅仅保证网络设备的安全是远远不够的,因此我们在运营平台的数据库服务器和应用服务器中也大量运用了双机集群技术。现在我们具体探讨一下这一技术在实际环境中的应用情况。
一、 集群技术和双机技术的有关概念
双机集群包括双机容错及双机热备,属于集群高可用性技术,主要用于解决单机系统因为各种原因导致服务中断的问题,为关键业务应用提供不间断的服务。此类技术属于比较高端的应用,涉及的概念较多。
1. 高可用性系统
可用性是以系统运行和可用时间的百分比来衡量的,即系统保持正常运行时间的百分比,最理想的情况是实现100%的系统可用性。在实际应用中,由于各种因素影响,达到100%的系统可用性是不可能的。用于高可用性的技术很多,而这里所介绍的高可用系统特指通过服务器硬件冗余和软件监控实现的,用于解决单机故障导致服务中止问题的多机系统。这种系统在硬件上由多台计算机组成集群结构,使整个系统不存在单点故障,通过专门软件来进行管理和监控,使得在发生任何软件或硬件单元故障时,应用系统能够持续、稳定和可靠地运行。
高可用性系统的基本工作原理是,服务器之间通过软件监控服务器的CPU或应用程序,并互相不断地发出信号,当某服务器失效,其他服务器接收不到其发出的信号时,软件的切换功能发生作用,将失效服务器的工作在指定服务器上启动起来,使得服务器的工作能够继续,这样就能减少甚至杜绝突发性数据丢失或服务中断的可能性。当然,这种系统无需人工干预,能自动地报警并解决故障。比较理想的高可用性系统除了解决软件故障、硬件故障和网络连接故障之外,还能解决人为操作和环境因素等引起的故障。
2. 集群系统
根据服务器的数量,高可用性系统可分为集群系统和双机系统。
集群(Cluster,也为“群集”)是一个非常宽泛的概念,这里特指服务器集群,看作是一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。这种单一系统是高可用系统,为网络客户提供不间断的服务。一般情况下,集群系统中所有的成员计算机拥有一个共同的名称,集群系统内任一服务器上运行的服务可被所有的网络客户所使用。集群的各成员服务器通过网络相互通信,当一台服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。
就网络服务器集来说,除了用于高可用性的集群之外,还有用于负载均衡(Load Balance)的集群。在实际应用中,也有用于双重目的的服务器集群,如高可用性集群在其节点之间的均衡用户负载,同时维护高可用性。
一个集群包含两台或多台(至少两台)服务器。双机系统可看作是集群系统的一个特例,由两台服务器组成的高可用系统就是双机系统,也称双机集群。双机系统好比RAID1,RAID1是两块磁盘容错,而双机系统是两台服务器容错;集群是多机系统,好比RAID5,RAID5是多个磁盘容错,集群是多台服务器容错。
3. 热备和容错
根据功能,双机系统和集群系统又可细分为双机热备、双机容错、集群热备和集群容错。
热备是热备份(Hot Standby,也译为“热备用”)的简称,它与容错(Fault Tolerance)的主要区别在于热备系统只能监控服务器的CPU,是硬件级的监控,而容错系统是监控服务器的应用,实现软件加硬件级的监控,显然容错系统比热备系统具有更高的可用性,因为当系统的可用性达到99.95%以上时,故障的来源主要是环境和软件,而不是硬件。从容错性能上看,热备系统当CPU出现故障时,由处于闲置状态的备份系统替换,替换时数据有可能丢失,从而导致数据的不一致;而容错系统不会引起交易数据的丢失,充分保证数据的一致性和完整性。
在实际应用中,往往并没有严格区分双机热备和双机容错,往往互相混用,有时笼统地称为双机系统、双机集群、双机高可用性系统和高可用性双机系统,本章用双机集群统称这两种技术。
二、 双机集群的工作模式
双机集群系统有两种工作模式,一种是主从模式,另一种是双工模式。
1. 主从模式
主从(Active/Standby)又称模式,两台服务器一主一从。一台服务器被指定为进行关键性操作的主服务器,另一服务器作为备用的服务器。在主服务器工作时,从服务器处于监控准备状态(除了监控主服务器状态,不执行其他操作)。对用户来说,相当于只有一台服务器存在。当主服务器出现异常不能支持信息系统运行时,从服务器主动接管工作机的工作,保证信息系统能够不间断地运行。经过维修恢复正常后,系统管理人员通过管理命令或经由人工或自动方式将服务器进行工作切换,同时互换主从身份。
这种模式比较稳定,无故障时从服务器实际上是“闲置”的,相对成本高。
2. 双工模式
双工方式(Active/Active)又称对等模式,在正常情况下,两台服务器同时运行各自的服务,且相互监测对方的情况。对用户来说,两台服务器仍然是独立的。当其中一台服务器发生故障时,故障服务器上的应用及其他资源就会转移到另一台服务器上,从而保证信息系统能够不间断地运行,但该服务器的负载会有所增加,此时用户仍然能感觉到两台服务器都在运行。当故障服务器修复后,相应的应用及资源又转移回来。
这种模式服务器使用率高,但在应用切换时因数据未同步而产生中断。一般需要采用共享磁盘系统方式的方式来实现。
三、 共享磁盘阵列方式和纯软件方式
根据工作原理和硬件构成,双机集群分为共享磁盘阵列和纯软件两种方式。
1. 共享磁盘阵列方式
双机集群系统通过在两台服务器上运行高可用性软件(双机软件或集群软件)和共用磁盘阵列来实现。它使用磁盘阵列作为两台服务器的共用存储设备,通过双机软件对磁盘阵列进行管理,同时对受保护的服务进行监控和管理。如果其中一台服务器由于硬件或软件原因发生故障失效,那么另一台服务器可在保证提供自己原有服务的同时,接管并启动运行失效服务器的应用程序和网络资源服务。任何一台服务器运行一个应用时,应用数据存储在共享的数据空间内,每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。
采用这种方式,两台服务器和磁盘阵列需要采用独特的连接方式来组成双机集群系统,如图1所示。
采用这种方式,一般需要配置以下硬件。
网络服务器两台(不一定要完全一样)
双主机通道的磁盘阵列柜一台(通过专用SCSI电缆连接到两台服务器)
服务器之间通过RSC232串口线或者LAN网线建立专用连接,作为“心跳”线。

图1 共享磁盘阵列方式
这种方式具有的优势在于:
实现真正意义上的数据与系统分离,系统整体效率高。整个系统中数据读写、管理及容错由磁盘阵列来完成,而系统故障处理由双机软件来完成;数据存放在同一个磁盘阵列中,不需要进行数据复制,避免了双机镜像同步的系统开销和网络开销,保证服务器性能;重要的操作服务分散在两台服务器上,可以改善使用效率、提高响应速度和平衡负载;共享的磁盘阵列可通过RAID技术保证数据的可靠性。
同时这种方案存在的不足有:
存在单点数据故障的可能。一旦磁盘阵列出现逻辑或物理故障,数据安全就得不到保障。在选配这种方案时,需要选用一个品质与售后服务较好的磁盘阵列产品;购置磁盘阵的成本较高;由于服务器与磁盘阵列柜这间通常使用SCSI线连接,因此服务器位置受距离的限制;有些产品对平台软件(包括操作系统、数据库软件)的要求较高,需要企业版;失效恢复的切换时间相对较长。
2. 纯软件方式
这是一种不需要共享外置磁盘阵列的双机集群技术,通过双机软件提供的镜像引擎将数据进行实时复制,实现数据的同步。如果一台服务器出现异常,那么另一台服务器将主动接管其工作,继续支持网络系统的运行,以保证系统能够不间断地运行。这种不需共享磁盘阵列的方式又称双机镜像方式或扩展镜像(Mirroring Extension)方式,扩展镜像是指服务器间通过软件的镜像引擎来实现数据的复制。如图2所示。
采用这种方式,一般需要配置以下硬件。
网络服务器两台(不一定要完全一样)
每台服务器拥有独立的硬盘。
服务器之间使用普通的网卡(或专用的镜像卡)建立专用连接,有些双机软件可不需专用连接。

图2纯软件方式
这种方式具有的优势在于:
整体购买的成本比共享磁盘阵列方式低。硬件配置简单,无需使用RAID磁盘阵列,对系统硬件要求低,提供较高的性能价格比;技术方案灵活,实施相对简单;不受SCSI线缆长度限制,可以通过网络实现远程双机集群,提高容灾能力;数据在服务器之间做镜像,不会因共享存储设备而发生单点数据故障,增强数据安全性;有些双机集群系统采用内存镜像的技术,确保所有的应用程序和网络操作系统在两台服务器上镜像同步,当主服务器出现故障时,从服务器可以在几乎没有感觉的情况下接管所有应用程序;对平台软件(包括操作系统、数据库软件)的要求不高,可以使用标准版。
这种方式也有一些不足:
服务器之间的镜像需要占用网络服务器系统资源,降低镜像服务器的性能;在大数据量读写过程中,两台服务器在某些状态下会产生数据不同步;如果采用内存镜像技术,由于两台服务器的内存完全一致,当系统应用程序带有缺陷从而导致系统宕机时,两台服务器会同时宕机。
在武汉数字电视平台中,这两种方式都有使用。在数据库服务器的应用中,因为需要有大容量磁盘阵列用于存储海量的用户数据,在这里就使用的是共享磁盘阵列方式来做群集。而在常规的应用服务器中,应为不涉及到共享磁盘的数据文件,则采用的是纯软件方式。在纯软件方式的应用中,我们使用的是Legato Co-StandbyServer。
Legato的容错产品非常优秀,Legato提供的Co-StandbyServer被业界认为是性价比极高的双机容错产品。其主要特性有支持纯软件方式的双机镜像,也支持共享磁盘阵列,可适应不同需求;实现了设备驱动级别的失效切换,永远保持数据同步,避免单点失效;同时支持应用级监控和远程安装和管理。