一种可靠的服务器冗余控制算法--控制网



一种可靠的服务器冗余控制算法
企业:控制网 日期:2011-02-23
领域: 点击数:460

                                 
   
吴亚凤(1975-)女,陕西渭南人,硕士,中国劳动关系学院基础部讲师,主要从事应用数学方面的研究。

    摘要:本文分析了目前工业计算机控制系统中服务器冗余控制存在的问题,提出一种高可靠的服务器冗余控制算法模型,并给出了该算法的详细内容及其实现。

    关键词:计算机控制;服务器;冗余控制;算法模型

    Abstract: This paper analyzes server redundant control problems in industrial computer control system. It presents a highly reliable algorithmic model for the servers’ redundant control. Moreover, it analyzes the detailed content of the algorithm, and describes its realization.
Key words: Computer Control; Server; Redundancy; Algorithmic Model

    1 问题的提出

    在工业计算机控制应用领域,为了提高系统的可靠性以及可用性,经常采用冗余服务器架构,即设置两台互为冗余的服务器,工作在一用一备模式下,为网络上的其他节点提供各类数据服务,并且常常设置冗余网络,进一步提高系统的可用性。可以实现当存在单个服务器节点故障或者单个网络故障时,系统的可用性不降低。系统结构如图1所示[1]。

                                  

    这样的系统结构一般都会存在如下几个问题,难于解决:
(1)服务器A、B机的主从控制机制复杂,常会出现“双主”、“双从”或者来回切换(“打乒乓球”现象),使得系统可靠性降低。为了解决这个问题,有些系统采用硬件方式给两台服务器之间设置硬件切换电路板,保证不出现这个问题,但又存在成本以及切换电路可靠性的问题;
(2)两台服务器的数据同步是冗余控制的难点,特别是在双机进行各种状态转换(主机、从机、单机、故障/停机)过程中发生的数据更新或者来自操作站的控制命令时,如何保证双机数据严格的一致性以及不丢失数据是非常困难的;
(3)系统双网络结构使得某些情况下难于控制,如两台服务器的交叉网络故障,使得双机互不能访问对方,从而造成系统不可用[2]。

    2 冗余控制模型

    本文提出一种基于图1的改良网络模型,在两个服务器上各增加一块以太网卡,形成第三条网络(如图2所示),通过合适的控制算法,使其达到准确检测、正确切换、无扰控制、不丢数据的目的,以满足工业控制场合高可靠性与高可用性要求。

                             

    该冗余控制模型如图3所示,自下到上依次是状态诊断、主从控制、数据服务以及冗余控制四层结构,下层为上层提供服务,上层的执行依赖于下层的运算结果。

                           

    它们的功能如下:
状态诊断:为服务器提供自己和对方准确的网络以及关键进程状态;
主从控制:根据自己和对方的状态,按照服务器切换状态机进行主从切换;
数据服务:客户机向服务器进行数据请求,以及服务器的数据服务过程;
冗余控制:两台服务器之间的数据同步过程。

    3 服务器的状态诊断

    服务器状态监测包括自我监测、状态广播、监听对方、监听客户机四个部分。服务器监测自己的三个网络的好坏、监测自身关键进程的运行状态,并将这些状态填入自身状态字中,然后将自身状态字通过全部网卡广播出去;并一直监视来自对方服务器的广播信息包以及来自其他客户机的异常监听反馈,根据它们来填充自己状态字、计算对方服务器的状态,并作为服务器主从控制模块的输入。

                 

    作为客户机,一般情况下,它只监听来自两台服务器的广播信息,只有在以下几种异常情况下,它才给予回复,用于通知两台服务器。
(1)两台服务器均声称自己看不见对方;
(2)两台服务器运行状态冲突(将双主、双从、双单机三种情况均视为冲突)。

    对于第一种情况,这是因为两台服务器之间的网络存在交叉故障问题,两台服务器之间失去了联系;第二种情况在系统被割裂为独立的两个子系统并在恢复的瞬间会出现,以及为了防止程序BUG等意外情况所做的容错设计。客户机回复状态字如图5所示。

                                   

    由以上的过程,可以对两台服务器关键进程、各自的网络、客户机网络做出准确的判断,只要当系统被割裂为完全独立的两个子系统时,系统的运行模式转为两个独立系统,如图6所示。

                         

    只有当两个服务器的NETA和B交叉故障、NETC故障、每台客户机均有一个网络故障的情况下,才会出现被割裂为完全独立的两个子系统的情况。但是故障恢复后,系统可以进行数据的合并,保证不丢失数据。

    4 服务器的主从控制

    服务器的状态有四种:主机、备用机、故障、单机模式。主机就是该服务器在两台冗余的服务器中起着主导地位,处于工作模式,则另外一台服务器一定也是运行状态,并且处于备用状态(备用机)或者故障状态;单机模式就是网络中只存在一台服务器处于运行状态,是独立运行的。这四种状态是随着网络状态、服务器关键进程状态、服务器的配置等情况的不同而动态变化的。

    服务器的主从切换控制就是控制自己的运行状态在上述这四种状态中动态切换,它是在服务器状态诊断的基础上执行的,并且两台服务器的状态切换是独立进行的,切换按照图7所示的服务器状态机进行。

    服务器状态机中的转换条件如表1,表中转换前状态以及转换后状态请参考图7。

          

    序号转换条件:
1 收不到对方服务器的状态信息,并且在预设的时间内收不到客户机的异常回复
2 同(1)
3 本机故障恢复,并且具备(1)
4 收到对方服务器状态信息,本机为A机
5 收到对方服务器状态信息,本机为B机
6 本机关键进程故障
7 本机故障恢复,并收到对方服务器声称自己故障
8 本机关键进程故障
9 本机关键进程故障
10 本机故障恢复,并收到对方服务器声称自己为主机
11 收到操作人员的切换命令
12 同(11)

    服务器各自对自身的状态进行计算与控制,还需要将其状态回填至图4所示的状态字中,以使得网络上其他节点获得该信息。

    5 系统数据服务

    服务器向网络上的客户机提供各类数据服务,包括为客户机发布数据(或者服务器的控制命令输出)和接收客户机的命令消息(或者服务器的数据更新),这两类数据服务从服务器的角度看就是输出数据和输入数据。对于输出数据,仅由主机(单机)对外提供;对于输入数据,则服务器处于任何状态下均要处理。其消息传递模型如图8所示。

                                

    作为客户机而言,它向服务器请求数据或者发送命令时,需要同时向两台服务器发送,并给消息进行编号;接收数据时,仅接收主机(或者单机)服务器的数据。

    服务器处理数据时,需要记录已经处理的消息的编号或者处理动作计数器,以便后续数据冗余同步控制的执行。

    6 数据冗余控制

    服务器的冗余控制是为了保证两台服务器上的数据的一致性、完整性。其手段是同步控制,即保证两台服务器上的数据的源头一致,处理步调一致,以达到其数据的完全一致。

    服务器要处理的数据根据数据源以及对数据加工需求的不同可以分为如下几类:(1)仅从外部数据源获取数据,并更新本机的数据;(2)仅为外部需求者提供数据;(3)根据外部需求做出动作;(4)与外部无关的数据处理过程。对于不同类型的数据处理,其冗余控制不同。对于1、3类,需要冗余同步;对于2、4类,不需要冗余同步控制。
数据冗余同步分为两种:全部同步、增量同步。全部同步是将主机上的数据库全部复制至备用机,用于服务器由故障、单机转为备用机和备用机启动过程中;增量同步是将主机上的部分数据复制至备用机,用于双机正常工作中的主机为从机同步过程中。

    全部同步处理比较简单;增量同步比较复杂,需要记录哪些内容需要同步以及做哪些数据备份等。双机在工作过程中,各自维护一个数据处理ID堆栈和计数器堆栈,主机定周期的通知从机自己处理的ID和计数器,从机检查自己的处理是否与其一致,如不一致,则向主机发出数据备份请求,主机再向从机发出备份数据,并矫正数据处理ID和计数器堆栈,完成一次增量同步过程,如图9所示。

                                    

    7 小结

    该冗余算法设计采用分层模式,结构清晰明了,层间耦合度小,易于实现[3]。已经在SCADA系统中实现并得以验证,有较高的可靠性,并提高系统的可用性,能较好的解决工业计算机控制系统的服务器冗余问题。

    参考文献:
[1] 王常力等. 分布式控制系统(DCS)设计与应用实例[M]. 北京: 电子工业出版社, 2004. 22~31.
[2] 夏士兵等. 变电站SCADA系统双服务器无扰动切换算法[J]. 电力系统自动化, 2006, 30(14): 58~60.
  [3] 柯奈汉等. 程序设计实践[M]. 北京: 机械工业出版社, 2000. 23~65

    摘自《自动化博览》2010年第十二期  

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: