双机容错服务器解决方案董建(哈尔滨工业大学计算机科学与技术学院,哈尔滨,150001)引言随着计算机技术的发展,PC服务器的处理能力更加强大,同时其性能/价格也越来越高,加上传统的小型机由于维护和升级困难,费用高,正受到PC服务器的挑战。因此,基于PC服务器的“低端”系统正日益受到用户的喜爱。但同时,由于PC服务器的安全性因素,基于该平台业务系统的安全,稳定可靠和系统的持续运行成为系统的关键,因此,基于低端PC的双机服务器系统受到越来越多的欢迎。对于普通的PC服务器而言,当系统不能正常运行时,需要用人工的方法进行故障的认定、分析、恢复及测试。这些都需要花费很长的时间。在这段时间内,系统必须停顿下来以等待恢复,从而给用户带来难以估计的经济损失。鉴于此,我们提出了一种基于共享存储器的双机容错服务器解决方案[1][2]。这个方案支持系统工作在双机热备份和互备援两种工作模式上,可以为用户提供不间断的数据库服务、WEB应用、文电传输等服务。②双机容错服务器系统——硬件结构双机容错系统的硬件结构是由两台服务器和共享存储子系统(见图1)组成的:其中每台服务器都有自己的系统盘,用以安装操作系统和应用程序;每台服务器安装两块百兆或千兆以太网卡,一块用于对外工作,另一块用于双机之间的心跳检测;每一台服务器都通过SCSI接口连接在共享磁盘子系统上,共享磁盘子系统通常采用有容错功能的磁盘阵列,各种应用所需的数据就存储在共享磁盘子系统上。图1双机容错服务器硬件结构(1)工作原理工作电源加电后,A、B两台机器首先进入独立的工作状态,操作员可在控制面板上手动选择A、B两台的任何一台已经正常启动的主机运行诊断程序,通过后即为服务主机。服务主机立即把外设配置为已有。操作员便可在管理终端上对服务主机进行工作配置。如果所选主机不能通过诊断,则手动选择另一台主机运行诊断程序,待其通过后配置为服务主机。只要有一台被选为服务主机且操作员完成配置后,另一台作为备用机。若备用机运行诊断程序通不过,可更换故障部件直至通过为止,操作员便可启动并进行相关的配置。由操作员选择配置成“双机热备份”或“双机互备援”工作模式。此后,服务主机与备用主机将根据不同的工作模式以及相应的故障检测结果进行切换。(2)工作模式双机容错的目的在于保证数据永不丢失和系统永不停机,采用智能型磁盘阵列可保证数据永不丢失,采用双机容错软件可保证系统永不停机。它的基本的工作模式有两种:双机互备援模式(DualActive)和双机热备份模式(HotStandby)。1双机互备援所谓双机互备援,就是两台主机均为工作服务器,在正常情况下,双机系统对外提供两种服务(例如应用服务和数据库服务),并互相监视对方的运行情况。当一台服务器出现异常,不能对外提供服务时,另一台服务器在继续原有服务的同时主动接管异常服务器的工作,继续提供原来在异常服务器上运行的服务,从而保证双机系统对外提供服务的不间断性,达到不停机的功能,但此时正常运行服务器的负载会有所增加。此时必须尽快将异常服务器修复以缩短正常服务器负载的持续时间,当异常服务器经过维修恢复正常后,系统管理员通过管理命令,将正常服务器所接管的工作切换回已修复的异常服务器。二双机热备份所谓双机热备份就是一台主机为工作服务器,另一台主机为备份服务器。在系统正常情况下,工作服务器对外提供服务,备份服务器负责监视工作机的运行情况(工作服务器也同时监视备份服务器是否正常,有时备份服务器因某种原因出现异常,工作服务器可尽早通知系统管理员解决,确保下一次切换的可靠性)。当工作服务器出现异常(如数据库服务器出现操作系统挂起、死机、网卡坏、硬盘控制器坏等),不能支持对外服务时,备份服务器则主动接管工作服务器的工作,继续提供对外服务,从而保证服务能够不间断的运行。当工作服务器经过修复恢复正常后,系统管理人员通过管理命令或经由以人工或自动的方式将备份服务器的工作切换回工作服务器;工作服务器也可以激活监视程序,监视备份服务器的运行情况,此时,原来的备份服务器就成了工作服务器,而原来的工作服务器就成了备份服务器。(3)双机容错管理软件在双机容错系统的工作中,双机容错管理软件是必不可少的。一切故障的诊断,服务的切换,硬件的控制都由双机软件来控制实现。同时为了使双机系统对外象一个单主机系统一样,双机容错管理软件还可以为双机系统生成系统虚拟IP对外工作,客户机通过虚拟IP访问双机系统。这样就避免了服务切换后主机IP地址改变导致客户机无法连通的问题。并且双机软件还可以控制两台服务器对共享磁盘子系统的访问,同一时刻只能有一台主机可以对其访问,避免了同时访问可能造成的数据破坏。双机容错管理软件通过侦测网卡或两台服务器之间互连的串口线进行两台主机的状态诊断,一旦其中一台工作的服务器出现问题,双机容错管理软件控制另一台服务器接管系统的虚拟IP和共享磁盘子系统的控制权并启动本服务器上的服务对外工作,保证系统的实时性和可靠性。下一节详细介绍软件系统的设计方案。3、双机容错服务器的软件方案设计双机容错服务器的软件结构如下图所示:对外服务双机协同系统诊断自检测异常处理心跳检测操作系统机间通信用户管理容错服务器硬件平台图1-3容错管理软件的逻辑结构图2双机容错服务器的软件结构从图中可以看出,系统通过自检测模块、异常处理模块、仲裁机制和心跳检测模块检测系统故障,检测结果送系统诊断模块,从而诊断出系统中发生故障的部件;系统通过双机协同模块屏蔽系统的硬件结构,使系统的双模冗余的硬件体系结构对客户透明。下面详细介绍每个模块的具体设计方案。(1)自检测自检测模块利用操作系统的检测机制和自身的故障检测算法,可以检测到系统的一部分自身故障,作为系统诊断和切换的部分依据。该模块的实现目标是尽可能地提高系统的故障检测覆盖率。构成该机的硬件模块有一些带有自检测功能,如电源、CPU风扇、CPU板等,检测模块应该可以读出这些硬件模块的故障状态。对于系统的服务进程,检测模块有检测算法可以检测这些服务的工作状态。为了提高容错管理软件的效率,用户管理模块可以配置服务进程检测算法,以决定在系统的运行过程中,哪些服务进程是自检测模块所要检测的。(2)异常处理异常处理模块对操作系统的异常处理机制所返回的异常消息(例如除零、溢出等)进行截获,通过对这些消息的分析可以发现一部分软件系统的故障,在将这些故障通知管理员的同时,诊断模块根据这些故障判断出当前服务或应用进程的工作状态,协同模块会做出相应的切换处理。异常处理的工作如图3所示。操作系统的异常处理机制异常处理模块通知双机协同模块截获图3异常处理(3)心跳模块双机通过定时地发送心跳消息来检测对方的运行状态,发送的心跳消息中包含双机的运行状态信息。因为双机之间是通过两个千兆网接口相连,所以心跳消息的长度可以相对大一些,通过测试,长度在1MB以内的消息对系统性能的影响很小。当系统发生故障时,通过所存储的心跳消息,可以实现系统的快速切换。对于检测模块取得的关于系统运行的信息(包括服务和应用进程的状态、网络的状况以及一些本机的硬件状态等),心跳模块将它们进行组装,按照一定的心跳频率发给对等主机。作为心跳接受一方来讲,按照约定心跳频率来接收来自另一方的心跳信息。分两种情况来讨论。约定的时间里收到了对方完整的心跳信息,心跳检测根据收到的信息对对方主机的运行状态作出判断,若对方正确,则将此次心跳信息写入日志文件。若对方发生了错误,则提交双机协同模块请求接管对机的所有服务(在热备份工作模式下,若主机发现备份机错误,只是提请管理员修复备份机,不发生任何切换)。约定的时间里没有收到正确的心跳信息,这种情况很有可能引起双机互相指责,争夺服务。所以,这时就需要一个仲裁机构,由它来定位故障,做出正确的判断。(4)协同模块双机协同模块是整个容错管理软件的核心部分。其功能首先是根据用户的配置决定系统双机的工作状态是双机互援方式还是双机热备份方式。其次是在根据自检、心跳检测以及仲裁板的相应检测结果来完成服务的切换,即将故障机的服务迁移到备份机上。为了适应热插拔设备的要求,应该能够根据当前主机的设备情况完成设备相关服务及进程的切换。发生切换时机有以下几种情况:系统软件或应用程序造成服务器当机;服务器没有当机,但系统软件或应用软件工作不正常;服务器内硬件损坏,系统无法正常提供服务或当机;服务器内设备进行热插拔;服务器不正常关机。另外,对外屏蔽硬件系统结构也是这一部分的重要功能。也就是说,这种基于双机的容错机制应该对用户(客户端)透明。该功能主要集中在网路服务上,即服务器的IP地址上。根据系统的硬件结构,该系统的每个节点机对外至少具有两个IP地址,这样该服务器就有4个IP地址,这对系统的应用是极不方便的。采用逻辑IP(浮动IP)技术[3],可以在这些IP地址之上设一个唯一的逻辑IP地址,客户端与服务器的网络连接始终都是通过该逻辑IP来进行的,客户请求的服务具体由哪一台服务器提供客户是无需知道的。(5)用户管理用户管理模块的功能是用户可以配置服务器的工作方式:双机热备份或互备援方式。用户可以配置自检测的时间间隔;可以决定哪些系统的服务进程是自检测机制所必需检测的。该模块以可视化的方式向用户提供容错管理软件各模块、仲裁器、网络通讯、节点机等的工作状态。用户管理模块的结构如图4所示:用户管理程序主窗口双机网络信息配置双机容错机制配置双机工作模式配置心跳线方式设置千兆以太网方式设置设置双机热备份方式设置双机互备援方式自检测设置系统状态查询、日志查询图3-9用户管理模块的结构示意图图4用户管理模块结构