指挥显示系统双工管理软件设计

指挥显示系统双工管理软件设计

摘要:在靶场试验训练任务中,指挥显示系统是靶场指挥控制系统的重要组成部分,有效的支撑试训任务顺利展开。本文针对靶场指控各分系统软件双工热备需求,以QT为开发环境,经过需求分析把不同的功能,诸如双工状态、故障监测与切换、故障服务器重入、请求切换、事件记录等分配给不同的逻辑包进行设计,各逻辑包再合理划分成多个子单元进行详细设计与实现。该软件操作简捷、功能完善,提升了指挥显示系统可靠性。

关键词:双工;节点;心跳;故障检测

1引言

指挥显示系统是靶场指挥控制系统的重要组成部分,它担负着试验综合态势的实时显示任务,辅助参试人员指挥决策[1]。为了保证系统高可靠性要求,系统中的各服务器均采用双工热备份的工作模式。在这种工作模式下,两台独立的服务器通过两条心跳线路连接起来,在双工管理软件的支持下组成互为备份的系统,双工管理软件提供双机状态实时监测与故障自动切换功能。

2设计思路

双工热备技术是利用冗余技术提高系统可靠性的一种方法。在双工系统中,两台服务器配置相同,每一台都具备单独完成任务的能力。两台服务器同时工作,互为备份。在正常工作情况下,其中一台服务器为主机,另一台为副机。主机和副机上的应用程序,接收相同的数据,各自进行相同的处理,主副机得到相同的处理结果,但输出任务只由主机完成,即由主机向外发送数据包。副机只是作为备份机工作。当双工系统中的一台服务器发生故障时,仍能够继续完成任务。在副机故障的情况下,主机的处理不受影响。在主机故障的情况下,原副机切换为主机,接替原主机完成任务。发生故障的机器,在排除故障后,可重新加入双工系统。双工管理软件还为每个双工热备系统维护了一个虚拟IP地址(以下简称虚IP)。虚IP由主机拥有,当实施双工切换时,虚IP也随之漂移到新的主机上。

3软件功能组成

双工管理软件由五部分功能模块组成,包括建立双工状态、故障监测与切换、故障服务器重入、请求切换、事件记录。为满足国产化操作系统适用要求,本软件采用Qt语言进行设计,Qt采用C++软件开发框架[2],可实现“一次编写,随处编译”[3],可支持Linux平台。双工管理软件的主要功能是确保系统的不间断运行[4],主要过程为:启动优先原则,双机中先启动是主机,后启动者为备机;互检互显,主备机能够互相检测连接状态,并同时发送自身运行状态,当检测到本机故障时给予提示信息,以便于主备切换。主备自动切换原则为:当备机在网络检测周期内(40ms)未发现主机信息时,自动提升到主机状态。人工切换原则为:特殊情况时可人工接入进行强行切换,确保设备安全[5]。

4逻辑包的划分及设计

根据双工软件的功能,将其划分为双工服务包和双工管理包,共2个逻辑包。其中双工服务包、双工管理包都采用结构化设计方法,双工管理包采用面向对象设计方法。双工服务包包括建立双工状态包、故障监测与切换包、故障服务器重入包、请求切换包、事件记录包。建立双工状态包:根据配置参数建立初始双工状态,即确定哪台服务器是主机,哪台是副机;故障监测与切换包:在故障发生时进行双工切换;故障服务器重入包:故障服务器恢复后,可重新加入双工热备系统;请求切换包:业务人员或应用软件可在需要时进行双工切换。切换后,原主机变为副机,原副机变为主机;事件记录包:记录各种事件到日志文件;双工管理包:提供图形界面,显示双工信息,允许业务人员对双工进行配置或者操作。

4.1建立双工状态包设计

建立双工状态包由初始化单元、双工状态建立单元组成。初始化单元:程序的初始化,读取配置文件,获取配置参数。双工状态建立单元:建立初始的双工状态,根据配置信息确定本机的双工状态,即确定哪台服务器是主机,哪台是副机。编辑获取双工状态(getDupStatus)API调用格式为:lstat表示本机的主/副状态,值为2时本机为主机,值为1时本机为副机,值为0时表示脱机,其它值未定义。pstat表示它机的主/副状态,值为2时它机为主机,值为1时它机为副机,值为0时表示它机状态脱机,其它值未定义。mode表示双工工作方式,值为0时为人工方式,值为1时为自动方式,其它值未定义。lnet表示本机数据网的状态,值为1时正常,值为0时故障。lsoft表示本机关键软件的状态,值为1时正常,值为0时表示异常。pnet表示它机的数据网状态,值为1时正常,值为0时故障。psoft表示它机的关键软件的状态,值为1时正常,值为0时故障。API成功完成时,返回值为0。否则返回值为-1。当返回值为-1时,可能的错误状态如下:EFAULT//参数dpsts是一个不可访问的地址。系统管理员可以通过配置相应的参数来给出希望的初始状态。例如指定系统初始化时固定由某台服务器作为主机,另一台作为副机。或者指定由双工系统中先启动的服务器作为主机,后启动的作为副机。

4.2故障监测与切换包设计

故障监测与切换包由服务器故障监测与切换单元、关键软件故障监测单元、网络连接故障监测与切换单元组成。服务器故障监测与切换单元:在两个专用连接上监测心跳、两个专用连接的状态,确定其是否正常。主机故障时,副机自动切换为主机。在两个专用连接上监测心跳。主机故障时,副机自动切换为主机。(1)每隔一段时间在两个专用连接上监测另外一台服务器的心跳;(2)定期检查心跳是否超时,如果超时,认为服务器故障;(3)主机故障时,副机自动切换为主机;(4)向应用软件报告双工状态改变;(5)在新的主机上创建虚拟IP(如果配置了虚拟IP),在新的副机上删除虚拟IP。关键软件故障监测单元:监测关键软件的状态,是否正常。主机每隔一段时间(如40ms)监视关键软件(包括)的状态,当状态异常(如软件异常退出)时,进行双工切换。双工管理软件还提供另外一种工作模式,即关键软件定期向双工管理软件报告状态(时间长短可设置,暂定为20ms),双工管理软件如果在规定的时间内(大于关键软件周期报告状态时间)没有收到状态报告,则认为关键软件故障,向其发送信号,将其“杀死”,并将其重启。网络连接故障监测与切换单元:监测节点数据网络的连接状态(向交换机发送一个ICMP回送包,交换机收到后返回一个ICMP回送相应包),当主机在一段时间内收不到交换机的应答时,认为连接已故障。主机数据网络故障时,副机自动切换为主机。等待双工状态改变(waitDup)API调用格式:#include<dupserv.h>intwaitDup(void);//描述:应用程序通过该API等待双工状态的改变。当主副机状态改变、双工工作模式改变时,以及网络状态、软件状态发生改变时该函数返回。返回值:API成功完成时,返回值为0。否则返回值为-1。执行过程详见图1所示。

4.3故障服务器重入包设计

故障服务器重入包由故障服务器重入单元组成。故障服务器重入单元:处理故障节点重新加入双工。故障服务器恢复后,可重新加入双工热备系统;加入后服务器的状态为副机。

4.4请求切换包设计

请求切换包由故障服务器重入单元组成。双工管理软件提供了请求切换的功能,业务人员或应用软件可在需要时(如系统维护时)进行双工切换。切换后,原主机变为副机,原副机变为主机。请求双工切换(reqDupSwitch)API调用格式:#include<dupserv.h>intreqDupSwitch(void);//描述:应用程序可调用此API请求改变双工状态。只有在自动方式下才可以由超级用户在主机上请求切换。如果本机为副机,不允许切换;如果本机为主机,它机为副机,并且它机网络或软件异常,不允许切换;成功切换后,原主机变为副机,原副机变为主机。返回值:API成功完成时,返回值为0。当返回值为-1时,可能的错误状态如下:EPERM:非root用户;ENOTSUP:操作不支持。

4.5事件记录包设计

事件记录包由初始化单元、事件记录单元组成。记录双工状态改变的信息、切换请求和发现的故障信息,例如专用连接故障、双工状态改变等。

4.6双工管理包设计

双工管理包由双工状态显示单元、双工切换单元、双工切换单元、设置双工模式单元组成。执行过程详见图2所示。

5结束语

本文介绍了指挥显示系统双工管理软件的设计,该软件人性化设计程度高、操作简捷,便于试验指挥人员实时高效查看切换软件双工工作状态;软件设计基于跨平台应用思想,应用的适用面广[6]。该软件的设计实现,有效提高了指挥显示系统可靠性,该软件对类似用途领域具有一定启迪性和推广价值。

作者:常兴华 单位:中国人民解放军92941部队