前言:想要写出一篇引人入胜的文章?我们特意为您整理了嵌入式系统双机热备技术浅议范文,希望能给你带来灵感和参考,敬请阅读。
摘要:为构建一个强实时性和高可靠性的嵌入式系统,提出了一种嵌入式系统的双机热备方法。该方法首先采用“先启为主”的主备机身份识别机制确认主备机身份;然后为主备机之间的心跳通信配备了2条心跳线,并且在处于正常工作运行状态的主机上创建一个互斥信号量,以此确定当前只有一台机器处于工作状态,避免了双主机现象的出现;建立主备机同步通信机制,确保主备机的状态和相互之间接收数据的实时通信;通过对主备机工作状态的实时监测,及时诊断系统故障,并采用主备机自动切换算法实现双机热备功能。
关键词:嵌入式软件;软件测试;双机热备;实时系统
目前,嵌入式系统的健壮性和稳定性是用户和系统设计人员都十分关注的问题。如果在嵌入式系统运行过程中,因为系统硬件或者软件故障导致整个系统无法继续正常工作,则可能会带来不可预知的影响和损失。因此,为了维护嵌入式系统的高可用性和高可靠性,必须采取适当的措施来保证嵌入式系统不间断的稳定运行,双机容错技术就是在这样的背景下产生并在嵌入式系统中得到了广泛应用[1]。当前嵌入式系统中最常见的双机容错技术有无磁盘型、共享磁盘型、磁盘镜像型、共享和镜像共存型等,这些方法大多应用在专用的容错系统中,应用在通用的容错系统中的较少[2]。上述这些方法大都是在应用层实现容错的功能,因此不可避免地会带来以下问题:①增加设计人员的工作量,设计人员在实现具体业务的同时必须考虑容错功能的实现;②数据容错的可靠性难以保证,设计人员只要有考虑不周的地方,就可能导致容错系统无法正确备份,导致备份失效;③系统可扩展性较差,一旦在系统中增加新的功能,设计人员必须重新考虑备份功能的实现,系统的可测试性和可维护性差。为了能够有效地保证嵌入式系统稳定、可靠、有效和持续运行,本文提出了一种嵌入式系统的双机热备方法。该方法能够保证设备在无人监管的情况下不间断正常运行,具有技术成熟、运行成本低和任务可靠性较高等优点。
1双机热备系统概述
双机热备技术一般是在服务器系统出现临时故障时采取的一种热备份技术,通过对服务器系统的热备份,可以避免服务器系统发生故障时产生的长时间服务中断,确保服务器系统能够长时间可靠运行。双机热备概念分为广义和狭义2种。从广义上讲,就是将2台服务器中的重要服务进行相互备份,并且2台服务器共同执行同一服务。当任意1台服务器运行时出现故障,另外1台服务器在最短的时间内接管该故障服务器的一切服务,该接管工作不需要人工进行干预,保证整个服务器系统正常不间断运行。狭义上讲,服务器数据同时写入2台服务器中,或者这2台服务器采用1个共享存储设备。在同一时间2台服务器只有1台处于激活(工作)状态,另外1台处于静默状态。当处于激活状态的服务器故障时,通过心跳机制激活另外1台服务器,让其接管当前工作。双机热备系统采用故障隔离的工作原理,将发生故障的设备以故障点转移的方式让处于热备份状态的正常设备接管当前工作,保证整个系统的不间断运行。故障的恢复不是在故障设备上,而是在热备份的设备上,热备份的方式不是用来修复当前故障设备,而仅仅是将故障隔离。双机热备系统中的关键技术有主备机身份识别技术、主备机之间心跳通信技术、主备机同步技术和主备机故障检测和切换技术等。
2主备机身份识别
目前大多数的双机热备系统都采用在主备机端安装不同软件的方式。这种方法的优点是程序开发较为简便、逻辑清晰;缺点是灵活性较差、不便于维护。为了使主机和备机具有完全对等性,采用“先启为主”的主备机身份识别机制,即先启动的为主机,后启动的为从机。“先启为主”的主备机身份识别机制采用端口监听的方法实现。首先在主机和备机上分别配置好对方的IP地址和通信端口号,在嵌入式系统的任务启动后立即创建一个套接字并向对方通信端口发出连接请求。如果连接成功说明对方已经启动,本机标识为备机;如果连接失败将本机标识为主机,并将套接字绑定到主备机通信端口进行监听。这样,无论备机何时启动,主机都会接受备机的连接请求并与之建立连接。
3建立主备机之间的心跳通信
为了提高嵌入式双机热备系统的可靠性,首当其冲需要解决的是主机设备和备机设备之间的通信问题。双方通信的可靠程度很大程度上决定了主机设备和备机设备数据的同步性、主机设备和备机设备相互监测的准确性、主机设备和备机设备数据传输的稳定性以及隔离故障机和备用机恢复重新切入双机系统的健壮性。通常在主机设备和备机设备之间采用心跳信号来相互监测对方的工作状态,并作为诊断设备故障的一种辅助手段。一旦主机设备和备机设备之间的心跳信号发生故障,则表明有一方设备出现了故障,同时也能初步确定故障设备的原因。因此,在主机设备和备机设备之间建立心跳通信机制,也是提高嵌入式系统安全性的一种有效方法。传统的双机热备系统中双机之间是通过心跳线互发心跳建立连接通信的。若心跳线发生故障,就会将原有协调的系统分为2个独立的个体。由于双机彼此失去联系,都以为对方发生故障,备用机本能的升为主用机,而主用机由于本身工作正常,继续保持主用,从而导致“双主”现象的产生。传统的解决“双主”现象的办法是增加心跳线的数量,但是该办法的缺点是不仅会增加系统的硬件成本,而且还会占用系统的接口资源,新增加的心跳线还会成为潜在的故障点,降低了系统的可维护性。为了提高双机热备系统的可靠性,主机和备机均采用双网卡工作,双网通过交换机连接到局域网中,采用一条心跳线进行双机之间的通信。因此,双机之间通过心跳线、双网的状态3种通道传递心跳信号。只要这3种通道有一个能收到对方的心跳,即可认为心跳正常。当出现心跳失效的情况时,分别选取双网上的一台设备(主机或者备机)或设备的某个端口作为该通道的远程检测点。当某个网络通道心跳失效时,双机通过该网络通道检查设置的远程检测点,若检测不到则表明故障出现在本机端;若可以检测到则表明故障出现在对方。为了进一步提高双机热备系统的可用性,双网通道在收到对方心跳时加入时间戳。在心跳无效的情况下,根据心跳时间戳,选择最后收到心跳的网络,然后去检查对应此网络的远程检测点,若可以检测到,表明对方宕机下线,本机正常,可作为主机运行;否则,标明本机宕机,此时应工作在备机。双机通信的流程如图1所示。
4实现主备机同步
双机热备系统中主机设备与备机设备必须保持严格意义上的同步,它们之间同步性的好坏直接影响到主机设备和备机设备发生切换后双方数据的一致性。若两方数据同步性不好,则当一方接管另一方(故障设备)工作时,就会造成数据的不完整性,从而影响整个嵌入式系统的工作流程。因此,主备机的同步是确保整个系统主机设备及其备机设备中程序与数据同步运行和实现双机无缝切换的基础。此外,主备机设备在运行过程中的相互监测以及当一方发生故障时的故障诊断工作都对主备机之间的同步性能提出了更高的要求。主备机的同步不仅包括时钟同步,还包括主备机状态和数据同步。主备机的时钟同步是指硬件上的同步,包括双机时钟周期和时钟时序的同步。在主备机上电后,保证主备机使用的是同一外部有源晶振提供的时钟周期,以此来保障系统的各个模块完全按照相同的时钟频率运行。主备机的状态和数据同步是指主备机之间需要实时进行通信,其中包括主备机的状态和接收数据的实时通信。为了让主备机的任务初始化能够同步开始,必须对主备机同时上电。当主机任务启动指令到达的第一时间通知备机启动任务,使备机同时进入工作模式。在主备机均正常工作的情况下,主备机同时从网络上接收信息,但只有主机有权限向外部设备发送信息,备机只接收外部信息,处于信息发送静默状态。主备机的同步过程如图2所示。
5实现主备机故障检测和切换
故障检测技术是双机热备系统进行主机设备和备机设备切换的关键环节,通过对设备进行实时准确地状态监视和检测,能够及时地发现并上报设备的故障,并启动冗余设备继续完成系统当前的工作任务,是保证了双机热备系统可靠性和稳定性的前提和基础。采用如下3种措施实现主备机故障检测:①在主备机中配备看门狗定时器。在系统上电后,处理器在正常工作时会每隔固定的时间对看门狗计数器进行清零操作。若主机或者备机出现故障,看门狗计数器值会超过某个阈值,最终会导致看门狗产生复位信号,使处理器复位,通过上述方式可判断主备机是否出现故障。②在主备机上电后,可对系统进行自检操作,包括CPU检测、内存检测、I/O设备检测等,可在上电时检测系统硬件是否工作正常。③在系统运行过程中,主备机之间通过心跳线和双网的状态相互监测对方的工作状态。由于主备机在上电时通过身份识别已明确自身是主机还是备机,因此,如果在系统运行过程中,主机检测到备机故障,则不进行切换,主机继续保持工作;如果备机检测到主机故障,则进行切换,由备机接管主机继续工作。
6结束语
双机热备技术是保证嵌入式实时系统可靠性和稳定性最重要和最关键的方法,不仅有效降低了系统出现故障的概率,还大大提高了系统可用性。本文提出的方法具有成本低、易于实现、可靠性高、主备机切换时间短等优点,大大满足短事务、强实时系统的要求,增强了双机热备系统在复杂、恶劣环境下的可维护性。
参考文献:
[1]肖佳,王古城,杨旭,等.双机热备与负载均衡的设计与实现[J].电子设计工程,2015,23(18):176-179.
[2]罗贵舟,王锦杰,杨旭斌,等.一种多策略双机热备方法[J].计算机测量与控制,2019,27(3):231-234,239.
作者:刘慕霄 刘宪忠 赵昶宇 单位:海军装备部驻北京地区军事代表局驻天津地区第二军事代表室 海军装备部驻天津地区第二军事代表室 天津津航计算技术研究所