王江江 李志强 赵 亮
通过对已有双机热备系统的研究,在传统主备切换决策方法的基础上,提出了有效的解决方案,形成了更准确、高效的主备切换决策方法。该方法已在青藏铁路格拉线CTC系统中得以应用,取得了良好的效果,并在2008年获得专利局授权。
双机热备是铁路信号系统中用来提高设备可靠性的常见办法。使用一台机器做主机,另外一台做备份。当主机故障时,备机自动成为主机继续运行。这种简单互斥机制虽对设备可靠性和可维护性都有明显的提升,但也表现出以下缺点。
1.切换决定对单机是正确的,但从双机整体角度看,切换目标不一致,双机均想成为主机,可能导致反复切换或竞争。
2.主机不知道备机的状态,主机使用时,备机的故障状态没有送给主机,备机也不参与整个系统的运算,因不能及时发现备机故障,等到主机也出现故障时,备机无法热备。
3.会出现不必要的主备切换和双机因争抢导致的故障。比如有些系统设置了A机优先于B机成为主机,那么在A机发生间歇式故障时,会出现A机故障后切换B机为主机,A机故障暂时排除以后,又切换回A机。由于间歇性故障而导致主备机反复切换,从而导致系统不可用。
4.对故障没有分级机制,只有故障状态和正常状态,不能根据故障等级的差异进行主备切换的决策。
在既有的主备切换中,无论是否向第三方仲裁模块申请成为主机,都是本机先做出主备切换的决策,然后通知伴机,通过互斥方法对决策结果再进行修正。在这个过程中,是先决策后协商。因此决策结果存在一种不确定性,即本次切换可能由于伴机的原因而不能成功。主备切换并不是一台机器可以决定的,需要双机采取一致性行动。如果A机和B机的主备切换意图有冲突,那么双机热备的主备切换都会出现反复和不确定性。即使暂时切换成功,也会出现不必要的反复。为此,提出了一种先协商,后决策,确保双机采取一致性行动的主备切换办法。
该方法先由A、B机分别检测自身的故障,然后A、B机之间进行同步,使2台机器均做到既了解自己的工作状态,也了解伴机的工作状态,双机热备结构图如图1所示。2台机器分别根据故障比较来自行决策是成为主机还是成为备机。具体步骤如下。
图1 双机热备结构
1.A、B机根据自身的检测机制判断自身的故障情况,然后加上本机的当前主备标记和A、B机标记,作为双机热备工作状态字。
双机热备工作状态字定义:
Bit0:状态字的最低位,AB机位,如果是A机则为1,否则为0,表示A机具有变成主机的优先权。
Bit1:主备机位,主机为1,备机为0,表示主机具有继续保持主机的优先权。
Bit2:低级故障位,如果没有故障,则为1,否则为0,表示没有故障的机器具有成为主机的优先权。
Bit3:高级故障位,如果没有故障,则为1,否则为0,表示没有故障的机器具有成为主机的优先权。故障级别低的机器具有成为主机的优先权。
Bit4:更高级别的故障。
Bit5:再高级别的故障。
…
BitN:最高级别的故障。
Bit2到BitN又称为故障状态字。
2.双机工作状态字的同步。使用多条串口和网线同时负责双机的通信,保证通信有足够的冗余。不管是A机还是B机,每次通信均需要记录,并向伴机发送2个工作状态字:一个是本机当前工作状态字,一个是本机上次从伴机收到的伴机工作状态字。
3.如果从伴机收到的2个工作状态字与本机记录的2个工作状态字一致,(本机当前工作状态字与对方送来的对方伴机工作状态字相同,且本机记录的伴机状态字与对方的本机工作状态字相同),则表示完成一次工作状态字的同步,此时比较本机和伴机工作状态字的大小,来决定本机是当主机还是备机。如果本机的工作状态字大于伴机的工作状态字,本机做主机,否则本机做备机。
4.如果长时间无法收到伴机送来的工作状态字,则认为伴机已经关机或死机,本机做主机。
新方法和旧方法的状态对比图如图2和图3所示,主要区别在于黑体文字部分,新方法可保证2台机器的主备切换目标一致,从而保证一次性切换成功。
图2 既有双机热备切换状态
图3 新方法的双机热备切换状态
1.在某些安全系统中,为了保证只有一个主机,可以采用继电器做第三方仲裁机构,同步后,如本机状态字大于伴机状态字时,不是直接切换为主机,而是向第三方仲裁模块申请成为主机。同样,如本机状态字小于伴机状态字时,也不直接切换为备机,而是向第三方仲裁模块申请成为备机。
2.为了实现人工强制切换,可以采集强制切换开关,并将该采集位作为最高故障位。如此,则当强制切换开关指向A机时,A机的状态字必然大于B机,从而成为主机。
3.本机不仅检测自身的故障,同时检测伴机的故障,并将该故障纳入故障状态字的计算,然后进行比较,即可实现对故障的冗余检测。避免本机故障导致本机故障检测模块出问题,而导致的故障判断失误。
4.可将多个采用本策略的双机热备决策机进行级连。从而实现多机热备。
新的双机热备方法逻辑简单,只需一次同步、一次比对,就可以迅速地让2台机器搞清自己的主备状态。该方法充分利用了所有的故障信息,使所有设备的故障、主备状态、AB机排序均被每一个双机热备决策模块所获知。采用了分布式计算的概念,在热备决策过程中,杜绝了与伴机的反复信息交互,实现了给出任务,分布运算,从上到下一次性完成热备决策。该方法强调了结果的惟一性,通过AB机排序,消除了决策结果的随机性;同时强调了可扩展性,使用分级别的故障状态字,适配不同的故障检测机制和未来的多机热备扩展,为未来的多机热备和冗余故障检测预留了扩展的空间。所以该方法具有主机了解所有相关机器故障,单机的间歇性故障不会导致主备反复切换,可根据故障级别进行切换决策,便于扩展等优点。
[1] 王秀娟.调度集中系统中双机热备机制的实现 [D].北京交通大学学报:自然科学版,2009(2).
[2] 杨晓芬.实时数据库系统双机热备机制设计与实现[J].计算机工程与应用,2012(29).
[3] 王飞,曹桂均.双机热备系统心跳失效的防护方案[J].铁路计算机应用,2013(3).