所谓双机热备就是使用互为备份的两台服务器共同执行同一服务,其中一台主机为工作机(Primary Server),另一台主机为备份机(Standby Server)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机的运行情况(工作机同时也在检测备份机是否正常),当工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继续支持关键应用服务,保证系统不间断的运行。因此双机热备软件就是实现上述功能的软件产品。
双机热备这一概念包括了广义与狭义两种意义。
从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。
从狭义上讲,双机热备特指基于主/备(active/standby)方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将备用机器激活,保证应用在短时间内完全恢复正常使用。
(1)双机热备的基本功能
决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及对服务中断的容忍程度,以此决定是否使用双机热备。即,你的用户能容忍多长时间恢复服务,如果服务不能恢复会造成多大的影响。
在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。而如果没有双机热备,则一旦出现服务器故障,可能会出现几小时的服务中断,对业务的影响就可能会很严重。
还有一点需要强调,即服务器的故障与交换机、存储设备的故障不同,其概念要高得多。原因在于服务器是比交换机、存储设备复杂得多的设备,同时也是既包括硬件、也包括操作系统、应用软件系统的复杂系统。不仅设备故障可能引起服务中断,而且软件方面的问题也可能导致服务器不能正常工作。
还应指出的是,一些其他的防护措施如磁盘阵列(RAID)、数据备份虽然是非常重要的,但却不能代替双机热备的作用。
(2)双机热备的实现模式
双机热备有两种实现模式:一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,也称之为纯软件方式。
基于存储共享的双机热备是双机热备的标准方案。
对于这种方式,采用两台服务器,使用共享的存储设备(磁盘阵列柜或存储区域)。两台服务器可以采用互备、主从、并行等不同的方式。在工作过程中,两台服务器将以一个虚拟的IP地址对外提供服务,依工作方式的不同,将服务请求发送给其中一台服务器承担。同时,服务器通过心跳线(目前往往采用建立私有网络的方式)侦测另一台服务器的工作状况。当一台服务器出现故障时,另一台服务器根据心跳侦测的情况做出判断,并进行切换,接管服务。对于用户而言,这一过程是全自动的,在很短时间内完成,从而对业务不会造成影响。由于使用共享的存储设备,因此两台服务器使用的实际上是一样的数据,由双机或集群软件对其进行管理,如图 5-9所示。
对于纯软件的方式,则是通过支持镜像的双机软件,将数据实时复制到另一台服务器上,这样同样的数据就在两台服务器上各存在一份,如果一台服务器出现故障,可以及时切换到另一台服务器。
纯软件方式还有另外一种情况,即服务器只是提供应用服务,而并不保存数据(如只进行某些计算,作为应用服务器使用)。这种情况下同样也不需要使用共享的存储设备,而可以直接使用双机或集群软件即可。但这种情况其实与镜像无关,只不过是标准的双机热备的一种小的变化。
(3)双机热备、双机互备与双机双工的区别
双机热备即是目前通常所说的主/备(active/standby)方式。当主服务器出现故障的时候,通过软件诊测(一般是通过心跳诊断)将备用机器激活,保证应用在短时间内完全恢复正常使用。
双机互备是指在双机热备的基础上,两个相对独立的应用在两台机器上同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性。这种方式实际上是双机热备的一种应用。它避免了两个应用使用四台服务器分别实现双机热备。
双机双工是指两台或多台服务器均为活动,同时运行相同的应用,保证整体的性能,也实现了负载均衡和互为备份。需要利用磁盘柜存储技术(最好采用SAN)。对于数据库服务而言,它同时需要数据库软件的支持,是比较复杂的。而Web服务器或应用服务器就比较简单了。
(4)双机热备份与数据备份的关系
一些用户在规划双机热备或双机备份时,会有这样的问题:我已经有了RAID,以及磁带备份,还需要做双机备份吗?或者,如果我做了双机备份,还有必要做磁带备份吗?
应该说RAID和数据备份都是很重要的。但是,RAID技术只能解决硬盘的问题,备份只能解决系统出现问题后的恢复。而一旦服务器本身出现问题,不论是设备的硬件问题还是软件系统的问题,都会造成服务的中断。因此,RAID及数据备份技术不能解决避免服务中断的问题。对于需要持续可靠地提供应用服务的系统,双机还是非常重要的。只要想一想,如果你的服务器坏了,你要用多少时间将其恢复到能正常工作,你的用户能容忍多长的恢复时间就能理解双机的重要性了。
从另外一个方面,RAID以及磁带备份也是非常需要的。对于RAID而言,可以以很低的成本大大提高系统的可靠性,而且其复杂程度远远低于双机。因为毕竟硬盘是系统中机械操作最频繁、易损率最高的部件,如果采用RAID,就可以使出现故障的系统很容易修复,也减少服务器停机进行切换的次数。
数据备份更是必不可少的措施。因为不论RAID还是双机,都是一种实时的备份。任何软件错误、病毒影响、误操作等等,都会同步地在多份数据中发生影响。因此,一定要进行数据的备份(不论采取什么介质,都建议用户至少要有一份脱机的备份,以便能在数据损坏、丢失时进行恢复)。
一、HACMP
HACMP是High Availability Cluster Multi-Processing的缩写。HACMP是IBM公司在P系列AIX操作系统上的高可靠集群软件。通过配置冗余,消除单点故障来保证整个系统的连续可用性和安全可靠性。HACMP利用网络心跳来侦测主机及网卡的状况,搭配AIX所提供的硬盘镜像等功能,在主机、网卡、硬盘控制卡、硬盘或网络发生故障时,自动切换到另一套备用元件上重新工作。若是主机故障则切换至备份机上继续应用系统的运行,使最终用户只感受到很小的中断时间。
(一)HACMP软件构成
HACMP软件包括以下五个部分:
1.Cluster Manager
Cluster Manager运行在集群中所有节点上,主要的任务有:监控各节点的状态变化,并做出相应处理,协调并同步cluster各节点间的并发事件,当HA状态发生迁移或有HA事件发生时,执行相应的事件处理脚本。
2.Event Scripts
Event Scripts是HACMP自带的一套shell脚本,使用标准的shell语言、AIX标准命令以及HACMP提供的工具命令。当某事件发生时,该事件对应的Event Scripts就会被Cluster Manager调用,同时传入相应的参数。用户可方便地定制时间发生时执行的操作。
3.Lock Manager
在某些类型的HACMP应用中,比如concurrent方式的资源类型,双机各节点需要同时访问共享的数据,这就需要Lock Manager来给共享数据加锁,防止并发访问引起的共享数据的不一致或者损坏。
4.SNMP Agent(clsmuxpd进程)
HACMP之间的交换机节点信息需要使用SNMP协议,clsmuxpd进程作为HACMP系统的SNMP Agent,为客户端提供SNMP服务,使节点间基于SNMP协议的通信可以正常进行。
5.Clinfo进程
Clinfo进程是HACMP各节点间交换信息的进程,它基于clsmuxpd与其他节点的Clinfo进行通信,交换节点状态信息。Clinfo还提供一组API函数,使应用进程可以取得HACMP系统当前的状态信息。
(二)HACMP软件工作原理
HACMP软件通过以下途径提供高可用性环境。
(1)定义一组必需的群集资源,资源可以是硬件,也可以是软件。
(2)定义群集节点访问这些资源的关系。这些关系确定哪个节点控制资源以及当该节点放弃资源的控制权后哪个节点接管资源,当一个节点离开群集时,Cluster Manager能够将这个节点的资源转移到群集中的其他节点上。
其中,资源可以是应用、磁盘、卷组、文件系统、IP地址5种实体,这些资源实现高可用的方式如下:
第一,应用:由HACMP启动,如果节点发生故障,则在另一节点重新启动。
第二,磁盘、卷组、文件系统:在非并发环境中,一个节点控制磁盘资源,如果该节点发生故障,它控制的磁盘资源由其他节点接管。在并发环境中,多个节点同时控制磁盘资源,一个节点发生故障并不影响其他节点。
第三,IP地址:如果服务网卡发生故障,由本机的备份网卡接管其地址,称为“网卡切换”。如果整个节点故障,由另一个群集节点的备份网卡接管其地址,称为“IP地址接管”。HACMP软件使群集在遇到系统的关键组件(例如网卡)发生故障的情况下仍能继续对外提供服务。
(三)HACMP软件功能
HACMP软件可以检测和响应以下三种类型的故障:
1.节点故障
节点故障指处理器硬件或操作系统故障。当发生节点故障时,其他节点可以通过HACMP对磁盘、IP地址、应用进行接管操作。
2.网卡故障
HACMP软件能够处理服务网卡和备份网卡的故障。当服务网卡故障时,Cluster Manager将同一节点的服务网卡和备份网卡进行切换,服务网卡的故障是透明的。Cluster Manager检测到备份网卡故障时只是记入日志,并不进行其他操作。
3.网络故障
当群集中连接所有节点的网络故障时,由于网络配置各不相同,所以HACMP无法定义响应动作。此时系统在主控台上显示信息,事件被记入日志。用户可以根据实际情况自己编写脚本程序来响应网络故障。在大多数配置中,网络都是单点故障,为避免发生网络单点故障,建议在配置HACMP时配置双网络。
二、Serviceguard
Serviceguard可在HP 9000或HP Integrity服务器组成的高可用性环境下创建群集。高可用性计算机系统使应用程序服务能够连续运行,而无论是否发生硬件或软件故障。高可用性系统保护用户不受软件故障以及系统处理设备(SPU)、磁盘或局域网(LAN)组件故障的影响。当某个组件出现故障时,将由冗余组件接管。Serviceguard和其他高可用性子系统负责协调各组件之间的切换。Serviceguard群集是由HP 9000或HP Integrity服务器(主机系统称为节点)组成的联网组合,拥有充分的软硬件冗余,所以单点故障不会对服务造成重大破坏。
(一)与Serviceguard有关的守护程序
Serviceguard的软件组件包括程序包(应用服务、服务、资源)、Serviceguard程序包(应用程序支持程序包、VxCFS系统程序包)、Serviceguard组件(程序包管理器、群集管理器、网络管理器、SG CFS群集成员管理器)、CFS组件(Vx CFS群集管理器)以及操作系统(卷管理器软件、HP-UX内核)。
1.与Serviceguard有关的守护程序
与Serviceguard有关的守护程序共有12个,分别是:
(1)/usr/lbin/cmclconfd:Serviceguard配置守护程序。
(2)/usr/lbin/cmcld:Serviceguard群集守护程序。
(3)/usr/lbin/cmfileassistd:Serviceguard文件管理守护程序。
(4)/usr/lbin/cmlogd:Serviceguard Syslog守护程序。
(5)/usr/lbin/cmlvmd:群集Logical Volume Manager守护程序。
(6)/opt/cmom/lbin/cmomd:群集Object Manager守护程序。
(7)/usr/lbin/cmsnmpd:群集SNMP代理守护程序(可以选择运行)。
(8)/usr/lbin/cmsrvassistd:Serviceguard服务助手守护程序。
(9)/usr/lbin/qs:Serviceguard Quorum 服务器守护程序。
(10)/usr/lbin/cmnetassistd:网络传感器助手守护程序。
(11)/usr/lbin/cmvxd Serviceguard:VERITAS成员协调守护程序(仅当安装了VERITAS CFS 时才会存在)。
(12)/usr/lbin/cmvxping Serviceguard:VERITAS激活守护程序(仅当安装了VERITAS CFS时才会存在)。
上述各个守护程序都将日志记录到/var/adm/syslog/syslog.log文件中,但/opt/ cmom/lbin/ cmomd守护程序除外,它将日志记录到/var/opt/cmom/cmomd.log中。
2.各个守护程序的具体含义
(1)配置守护程序:cmclconfd
Serviceguard命令使用该守护程序来收集群集中所有节点的信息。它收集配置信息,如有关网络和卷组的信息。它还将群集二进制配置文件分发给群集中的所有节点。该守护程序由inetd(1M)启动。/etc/inetd.conf文件中包含与该守护程序对应的条目。
(2)群集守护程序:cmcld
该守护程序通过向Serviceguard群集内其他节点上的cmcld守护程序发送心跳线消息,来确定群集中的成员。它按照实时优先级运行且锁定在内存中。cmcld守护程序在内核中设置了一个安全计时器,用于检测内核挂起。如果此计时器未由cmcld定期复位,则内核将产生系统TOC(即控制转移),这意味着CPU复位和创建崩溃转储文件。发生这种情况的原因可能是cmcld无法与大多数群集成员通信;或者是因为cmcld异常退出、异常中止,或无法运行足够长的时间并且无法更新内核计时器(从而表明内核挂起)。在因安全计时器过期而导致TOC之前,消息将会写入/var/adm/syslog/ syslog.log文件和内核的消息缓冲区中。cmcld守护程序还检测系统中网络运行是否正常并执行本地局域网故障切换。最后,该守护程序负责Serviceguard程序包的管理,确定在何处运行它们以及何时启动它们。注释Serviceguard的三个核心组件(程序包管理器、群集管理器以及网络管理器)都作为cmcld守护程序的组成部分运行。该守护程序在所有群集节点上都以20的优先级运行。因此用户进程一定要以低于20的优先级运行,否则它们可能使Serviceguard无法更新内核安全计时器,这将导致节点上出现TOC。
(3)文件管理守护程序:cmfileassistd
cmcld使用cmfileassistd守护程序,来管理需要读取磁盘和写入磁盘的文件。这样可以防止在执行输入/输出过程中出现的延迟影响cmcld的计时。
(4)Syslog守护程序:cmlogd
cmcld使用cmlogd将消息写入Syslog。任何通过cmcld写入Syslog的消息都是通过cmlogd写入的。这样可以防止在写入Syslog的过程中出现的延迟影响cmcld的计时。
(5)群集Logical Volume Manager守护程序:cmlvmd
该守护程序负责跟踪所有可由群集识别的卷组。当某个卷组可由群集识别时,群集节点只能以独占模式将其激活,这样可以防止多个节点同时以写入模式激活卷组。
(6)群集Object Manager守护程序:cmomd
该守护程序负责将有关群集的信息提供给需要获取群集对象状态信息的客户端外部产品或工具(如Serviceguard Manager)。客户端向Object Manager发送查询,并从该管理器接收响应。该守护程序可能未在用户的系统上运行,它仅用于Object Manager的客户端。cmomd接受来自客户端的连接,并检验查询。查询将分解为隶属于不同提供者的(多个类的)类别。提供者从各种源收集信息(这些源通常包括连接的所有节点上的cmclconfd守护程序),然后将数据返回到一个中心分解点进行过滤,以切实满足客户端查询的需要。该守护程序由inetd(1M)启动。/etc/inetd.conf文件中包含与该守护程序对应的条目。
(7)群集SNMP代理守护程序:cmsnmpd
Serviceguard图形界面(Serviceguard Manager)使用该守护程序来获取有关群集的信息。该守护程序生成群集MIB。只有将/etc/ rc.config.d/cmsnmpagt文件编辑为自动启动该子代理时,它才会运行。为确保正常运行,cmsnmpd必须在Serviceguard群集之前启动。
(8)服务助手守护程序:cmsrvassistd
该守护程序按照群集守护程序cmcld的要求派生并执行任何脚本或进程。该守护程序执行两种类型的派生操作:一是执行程序包运行和暂停脚本;二是启动服务。就服务而言,cmcld监视服务进程;同时将根据服务重试次数,决定是通过cmsrvassistd重新启动服务,还是暂停程序包并将其移到一个可用的备用节点上。
(9)Quorum服务器守护程序:QS
在群集重组期间,Quorum Server守护程序可根据需要提供仲裁服务。Quorum Server在群集外部的系统上运行,并且由用户(而不是Serviceguard)启动。通常从/etc/inittab启动该守护程序,这意味着,如果该守护程序失败或被强行终止,它会自动重新加载。群集的所有成员都将启动并维护与Quorum Server的连接。如果Quorum Server终止运行,Serviceguard节点将检测到此情况并定期尝试去重新连接Quorum Server,直到其恢复正常运行。如果在Quorum Server终止运行时对群集进行重新配置,并且群集中的某个分区需要仲裁,则这种重新配置将失败。
(10)网络传感器助手守护程序cmnetassistd
网络传感器助手守护程序负责添加和删除可重新定位的程序包IP(适用于IPv4和IPv6地址)。
(二)群集管理器、程序包管理器与网络管理器的工作原理
1.群集管理器工作原理
群集管理器用于初始化群集、监视群集的运行状况、识别出现的节点故障以及当有节点加入或脱离群集时管理群集的重组。群集管理器作为守护程序运行在每个节点上。在群集启动和重组期间,会选出一个节点作为群集协调器。尽管所有节点都执行某些群集管理功能,但群集协调器是节点内通信的中枢点。
2.程序包管理器工作原理
Serviceguard使用程序包启动和暂停已配置的应用程序。一个程序包是服务、磁盘卷和IP地址的集合,该集合由Serviceguard进行管理,以确保其中资源的可用性。群集中的每个节点都运行一个程序包管理器实例;驻留于群集协调器节点中的程序包管理器称为程序包协调器。
程序包协调器可完成如下工作:确定运行、暂停或移动程序包的时间和位置。
所有节点上的程序包管理器可完成如下工作:
(1)执行用于运行和暂停程序包及其服务的控制脚本。
(2)对受监视资源状态的变化做出反应。
程序包将应用程序服务(单独的HP-UX进程)组合在一起。程序包的类型有三种,分别为故障切换程序包、系统多节点程序包及多节点程序包。典型的高可用性程序包是故障切换程序包。它通常配置为在群集中的若干个节点上运行,并且一次在一个节点上运行。如果服务、节点、网络或其他程序包资源在运行它们的节点上发生故障,则Serviceguard可以将程序包控制权自动转移到另一群集节点,使服务尽可能少地出现中断而保持可用状态。同时在若干个群集节点上运行但不进行故障切换的程序包,这些程序包称为系统多节点程序包及多节点程序包。系统多节点程序包必须在群集中的所有活动节点上运行。如果它在一个活动节点上发生故障,则该节点将暂停。多节点程序包可以配置为在一个或多个群集节点上运行。只要它在任何已配置节点上运行,就视其处于UP状态。
3.网络管理器工作原理
网络管理器的目的是检查网卡和电缆故障并从中恢复,以便网络服务对客户端保持高可用性。此功能实际上就是指将每个程序包的IP地址分配给其运行的节点上的主LAN接口卡,监视所有接口的运行状况,并在必要时进行切换。
三、Rose HA
Rose HA是美国Rose Datasystem Inc.出品的新一代高可用性软件。Rose HA主要支持的平台有Windows(Windows 2000 Server、Windows Server 2003、Windows Server 2008、Windows Server 2003 Enterprise Edition、Windows Storage Server 2003等)、Linux(Red Hat Enterprise Linux 2.1/3.0/4.0、Suse Linux Enterprise Server 9/10、Turbo Linux Server 10、Asianux Linux 1.0/2.0等)、UNIX(Solaris、SCO Unixware)。它可以将UNIX服务器组成集群系统,并对服务器进行监控、故障检测、故障恢复,保护运行于服务器中的关键性数据服务和网络服务。Rose HA是一套提供防止业务主机因不可避免的意外性或计划性而宕机的高可用性软件。Rose HA软件同时安装在两台主机上,用于监视系统的状态,协调两台主机的工作,维护系统的可用性。它能侦测应用级系统软件及硬件发生的故障,及时地进行错误隔绝或恢复,以最低成本为用户提供几乎不停顿的计算机作业环境。
但随着服务器硬件的发展,服务器性能及内部存储容量等都有了大幅提升。服务器在应对主流业务方面提供了强大的能力,为了保证业务数据的连续性及提高客户投资回报率,公司开发了RoseMirrorHA软件来提供基于服务器的纯软高可用性软件,实现了应用高可用及数据镜像的低成本、高效率解决方案。
RoseMirrorHA是在实时数据镜像基础上,实现了不需要共享存储的纯软高可用性系统。在传统高可用性系统中需要通过共享存储来实现数据的共享性能提升,但这也增加了可用性系统的成本。RoseMirrorHA通过现有的以太网络基础环境,通过TCP/IP,在两台主机之间实现了数据的实时镜像,不需要额外的硬件投资。在充分利用已有资源的基础上,通过先进的软件技术,实现纯软的高可用性系统。
RoseMirrorHA高可用性系统,可以对主机的IP、应用程序、数据等进行监控和保护,当应用程序或主机发生故障后,RoseMirrorHA将自动、快速地切换应用到备机,确保应用服务的持续和可用性,保证公司业务的持续运行。
RoseMirrorHA支持主/备和双主机两种模式。在主/备模式下,其中一台主机处于激活状态,运行重要的应用程序,向客户端提供各种应用服务,另一台主机作为备机,实时监控激活状态的主机的运行情况,只有当激活状态的主机发生故障后,备机才接管激活状态的主机上的应用服务。在双主机模式中,每台主机上运行各自的应用程序。服务器在运行自身的应用服务时,同时也是另一台主机的备机,即两台主机互为备机。
RoseMirrorHA通过网络在两台主机之间进行实时的数据复制。当激活状态的主机发生故障时,RoseMirrorHA将自动将服务迅速地切换到备机,并在备机镜像数据的基础上,继续为客户端提供业务服务。
四、LifeKeeper
LifeKeeper属于高可用容错集群软件,运行于Windows Server及主流Linux平台。同时支持纯软件镜像方式和共享磁盘阵列柜方式,并支持远程灾难实时复制备份恢复系统,使用户的服务器、操作系统、数据库系统以及关键的数据及应用程序保持7×24小时连续不间断,提供99.99%的高可用性。它可以定义多种失效切换方式,支持双主机模式和主/备模式,支持多应用、多实例的实时热备份,同时强大的数据复制功能可以单独使用以实现数据迁移、数据备份、异地容灾。
LifeKeeper for Exchange提供了一层新的保护,它支持构建多节点的Exchange集群,通过局域网或者广域网的“多对一”或“层叠故障切换”配置。在多对一配置下,一台服务器可以充当多台活动的Exchange服务器的备份。如果任何一台活动的Exchange系统遭遇问题,LifeKeeper会自动将客户的连接重定向到运行在备份服务器上的Exchange。这种配置使得不必为每台活动的Exchange系统准备一台备份机,大大降低了实施成本。
LifeKeeper的关键特点如下:
(1)不用增加任何额外硬件投资,纯软件方式实现双机容错,且对备机无硬件配置要求。
(2)在扩展镜像或共享磁盘阵列的方式下,均能实现两台服务器各自运行不同应用且相互热备份,即实现双主机运转模式。
(3)占用系统资源极少,不增加网络负荷,且不打扰任何具体应用系统的操作。
(4)实现无人值守,全自动地实现应用资源切换。
五、双机软件维护技术
1.熟悉双机热备的概念和原理
如应了解双机热备的原理,双机热备的类型等。
2.熟悉集群的规划、设计、配置的方法
如了解搭建双机环境所需的软、硬件资源,双机网络环境的要求,存储的规划、心跳规划等。
3.熟悉各种数据库、中间件软件的启停方法
如数据库有DB2、ORACLE,中间件有Websphere、WebLogic、Tomcat等。
4.掌握各类主机操作系统操作
如存储空间的划分、网络的配置、系统软件的安装等。
5.熟练掌握双机软件常见故障的解决办法
如双机软件无法启动时的排查方法,如何在单台服务器上启动所有业务应用,如何实现双机同步等。
6.熟练掌握双机软件日常巡检及维护操作
如启动双机前的检查方法,如何使用命令启动双机,如何对搭建好的双机环境与应用结合测试,了解双机软件启动日志的位置,会查看和分析双机软件日志、双机软件打补丁等。