摘要:在电网调度自动化系统中,消息总线作为一个重要的分布式通信中间件模块,实现了系统在不同进程之间、不同机器节点之间相互传递消息和数据的功能。而调度自动化系统由于对安全性、稳定性和可靠性的要求,在构建时通常采用双网冗余配置模式。文中对消息总线在双网交叉故障状态下实现消息可靠传输的机制进行研究,并提出解决方案,使系统在交叉故障情况下消息仍能正常投递,从而提高系统的可用性。
关键词:调度自动化;消息总线;双网冗余;交叉故障;可靠传输
一、冗余网络与交叉故障
电网调度自动化系统是保证电网安全、优质、经济运行的重要手段,对安全性、稳定性和可靠性有着较高要求,因而系统在构建时通常会采用双网冗余模式来提供容错能力,即系统中配置两个网络,并且所有的服务器和工作站也都配置冗余网卡,分别与这两个网络相连。双网冗余模式可以很好地防止单点网络故障影响系统的运行,然而在特定条件下,冗余网络中可能出现交叉故障情况。
系统中有两个节点需要交互数据,如果其中节点A的2号网卡出现故障,同时节点B的1号网卡出现故障,在这种情况下,虽然两台主机仍然各有一条链路与外界的网络相连,但是它们之间已经无法进行通信,因为它们之间没有了互相连接的通路。这种交叉故障对于运行了关键应用服务的节点来说具有较大的影响,若两个节点都认为自己与外界网络还有一条链路能够连通,可以正常工作,但是它们之间却不能从网络上交互任何信息与数据,结果会导致系统进入异常状态,影响系统的可用性。
二、交叉故障状态下消息可靠传输的实现
2.1网址切换漂移处理方式
网卡绑定技术受限于不同的操作系统,并且对使用方法也有一定的限制。网址切换漂移口处理方式是另一个比较简便的解决方案。网址漂移不需要两块网卡具有相同的速率,并且使用两个不同的IP地址,通过专门的监视程序实现故障情况下的地址转移,确保网络的连通性。例如在某个调度自动化系统上,节点A与节点B分别与交换机1和2相连。节点A的1号网卡地址为192.1.101.3,2号网卡地址为192.1.102.3,节点B的1号网卡地址为192.1.101.4,2号网卡地址为192.1.102.4。其中两个节点的1号网卡地址和2号网卡地址分别在同一网段,在正常情况下,节点A与节点B的1号网卡可以互通并交换数据;同时,2号网卡也可以同时交互数据。
网络监测模块使用网卡上固定的地址定期向指定地址(一般是系统内核心交换机配置地址)以一定的间隔发送探测报文],若连续一段时间没有回应,则可判断出链路发生故障。这时会出现地址漂移,系统将故障链路网卡上配置的工作IP地址切换到另一块网卡上。交叉故障状态下,节点A将两个工作地址都切换到1号网卡上,节点B将两个工作地址都切换到2号网卡上,经由交换机之间的级联线,节点A与节点B的两个工作地址仍然都能够互相连通。
网址切换漂移方式下所有消息均可以自如地在两个网络中传递,不需要对消息进行额外的处理与重新封装。网络监测与切换层独立实现,在网络变化时,消息投递层不需要改变行为方式。
网址切换漂移方式在简单网络环境下可以工作得很好,但当有的消息通信节点分布在不同网段时,双网冗余配置将变得异常复杂,由于要路由的地址在网卡上是不固定的,所以在路由配置时,存在一定的困难。而且随着系统中通信设备层级的增多,节点网络状态判定依据也难以选定,可能出现节点到第一级通信设备链路完好,而两级通信设备之间链路异常的情况。
期刊文章分类查询,尽在期刊图书馆
2.2中间代理转发方式1号、2号网络级联并配合网卡聚合或网址漂移技术存在以下限制:首先,要求两个网络在物理上必须互连,然而在一些特殊的情况下,该条件不能满足,如变电站后台系统,通常要求两个网络物理上相互隔离;其次,在交叉故障情况下,需要让两个节点中未发生故障的网卡IP地址切换为同一网段,才能互相通信;另外,在跨区域多网段的系统中,以上两种方式需要借助VRRP或HSRP等协议,使得网络配置比较困难。
针对上述问题,本文提出了中间代理转发方式,并在实际系统中进行了应用。该方式通过交互心跳与邻接信息动态生成消息转发表来进行交叉故障的节点之间的消息转发。它的工作机制主要通过以下步骤来实现。
1)每个运行消息总线的节点都部署节点状态跟踪监视程序,实现对系统中节点的活动状态、网卡状态以及订阅状态的监测功能,该程序通过定期在两块网卡上向其他节点发送心跳报文,报文内容包括发送该心跳报文的系统ID、节点ID、节点名以及该节点对消息的订阅信息。
2)每个运行消息总线的节点接收网络上其他节点发送的心跳报文,对报文进行解析,并在本地共享内存中存储网络中其他节点运行情况,包括系统名、节点名、节点在线情况、节点网卡名、节点网卡连通情况、节点消息通道订阅情况等。其中,系统名用于区分网络上同时运行的不同系统,最终形成节点直接邻接信息表,存储在共享内存中。
3)每个运行消息总线的节点定期交换能够直接到达的邻接信息,并且在邻接信息变化时,发送邻接变化报文通知其他节点更新。每个节点接收邻接状态信息,在共享内存中建立节点间接邻接表。
三、消息总线双网支持
在调度自动化系统中,消息总线需要对双网冗系统在一个网络故障的情况下,消息能够从另一个网络进行发送和接收,而且还应该能够支持网络交叉故障的情况,实现在交叉故障状态下消息的正常投递。
相较于通用的消息中间件产品,调度自动化系统中的消息总线具有其自身的特点,如对等性、有序性、时效性、多态性等。其中,对等拓扑结构与消息推送机制对交叉故障状态下消息可靠传输的实现方案具有较大的影响。调度自动化系统要求系统中任意一个节点在故障或退出后,不能影响剩余节点之间的消息通信,因而消息总线通常会采用对等结构。调度自动化系统中每个应用节点具有同等能力,都可以作为消息总线的服务代理节点,发起通信会话,进行消息转发。
在应用环境中,这些分布式结构的消息节点彼此互联,没有主从之分,不存在核心节点。这种消息总线的对等结构提高了系统的可靠性,但同时也为交叉故障时的消息投递带来了更多的复杂性。另外,调度自动化系统的业务传输特点使得消息总线更适宜采用“推送”模式,而不是通用的“拉模式”。在“推送”模式下,消息接收端只需要发出通告,订阅关心的消息类型,这些消息就会源源不断地从发送端那里被推送过来,及时地缓存到接收客户端的队列里。“推送”模式的消息总线提高了消息的时效性,减少了延时,但是主动发送模式需要订阅信息的同步,所以在实现交叉故障状态下消息的可靠传输时,需要考虑订阅信息的交互情况。
结语
研究消息总线的可靠传输机制,实现双网交叉故障状态下消息的正常投递有利于系统的安全稳定运行,有利于提高系统的可用性。本文对交叉故障状态下的消息投递提出了3种可行的实现方案,这些方案可应用于不同的调度自动化生产环境:单一地址方式和网址切换漂移方式比较适合于简单局域网环境,其中单一地址方式具有更好的性能,而网址切换漂移模式可以满足网卡参数不匹配的情况,中间代理转发方式可以适应地址跨网段和系统中双网不能够级联的情况。目前这些方案中的大部分内容已经在实际运行的系统中得到实现,并取得了较好的效果。
参考文献:
[1]潘国伟,宋玮.消息中间件在电力调度自动化系统中的应用EJ].电气应用,2008,27(10):61—64.
[2]翟明玉,雷宝龙.电网调度自动化系统消息中间件的特性和关键技术[J].电力系统自动化,2012,36(14):56—59.
[3]翟明玉,高原,杨志宏.调度自动化系统双网卡热备冗余机制的设计与实现[J].电力系统自动化,2012,36(8):87—91.
论文作者:闫凯文
论文发表刊物:《基层建设》2019年第18期
论文发表时间:2019/9/16
标签:节点论文; 消息论文; 网卡论文; 故障论文; 系统论文; 总线论文; 地址论文; 《基层建设》2019年第18期论文;