适用于电网调控系统的细粒度多机冗余机制的设计与实现
2019-08-13高原张勇宁剑顾文杰陈鹏
高原 张勇 宁剑 顾文杰 陈鹏
摘 要:针对传统的主备切换方法只能支持双机,仅支持心跳一种判断标准,需要人工介入进行切换,且存在单点故障等问题,提出了一种基于细粒度应用管理的多机主备冗余机制。该机制通过使用细粒度应用管理、多种条件的故障检测、分布式状态转换等技术,实现了多机主备冗余和资源充分利用,并且切换过程无需人工干预。最后通过多场景下的多次测试,验证了本机制在功能、性能方面的良好表现。多机冗余机制已在国调、华北、江苏等多个调控机构得到了应用。
关键词:主备;冗余;故障检测;心跳;切换
中图分类号:TP3-05 文献标识码:A
Design and Implementation of the Fine-grained Multi-machine
Redundancy Mechanism for Power Grid Dispatching and Control Systems
GAO Yuan1,2,3 ZHANG Yong4,NING Jian4,GU Wen-jie1,2,3,CHEN Peng1,2,3
(1.NARI Group Corporation(State Grid Electric Power Research Institute),Nanjing,Jiangsu 211106,China;
2.NARI Technology Development Co. Ltd. ,Nanjing,Jiangsu 211106,China;
3.State Key Laboratory of Smart Grid Protection and Control,Nanjing,Jiangsu 211106,China;
4. North China Branch of State Grid Corporation of China,Beijing 100053,China)
Abstract:The traditional active/standby switching methods can only support two machines,only support heartbeat for judging standard,manual intervention is required to perform the switch,have problems such as single point of failure and so on. A fine-grained multi-machine redundancy mechanism for power grid dispatching and control system is proposed. Through the use of fine grained application management technology,fault detection in a variety of conditions,distributed state transformation,this mechanism realizes the redundancy and resource utilization of multi-machine cluster. And there is no manual intervention during switch process. Finally,several experiments in different scenarios were conducted to verify the function and performance of the mechanism in this paper. The redundancy mechanism of this paper is adopted in the power grid dispatching and control system such as State Grid,North China,Jiangsu and so on.
Key words:active/standby;redundancy;fault detection;heartbeat;switch
隨着特高压、互联大电网的发展[1-3],全网数据规模的急剧增长,电网数据处理相关的应用也越来越丰富。智能电网调控系统向着集群化和服务化方向发展[4-5]。传统的单机运行所有应用的方式不再满足要求。同时电网调控系统的实时特性也决定了对安全机制的高要求[6]。因此迫切需要一种适应多机环境,切换快速的高可用冗余管理机制。
目前高可用管理机制的研究一般限于两个节点的一主一备方式,并且有诸多局限性。如文献[7中主备机配置相同的IP,采用心跳互相监测,此方案下备机平时不工作,造成了一半的资源浪费,且只支持双机互备。
文献[8]中仅有主机对外提供服务,备机尽管不服务但CPU也在全速运转,因为需从网络收取同样数量的报文。切换时需要人工操作控制台。文献[9]中由一个虚拟IP对外提供服务。但是同一时刻依然只能一台主机提供服务。
文献[10]描述了一种协商协议用于主备决策问题,但是仅设置了一个bit用于主备标识,所以仅能用于双机互备。文献[11]采用类似的状态字,但只适用于双机,如果扩展为多机,所有设备的软件都需更换。
文献[12]描述了可用于两个以上节点的数据服务系统的主备机切换方法。但是切换时需要获取一个全局锁,这样就引入了一个中心节点,给系统带来了单点故障问题。
文献[13]用双网的拓扑结构对心跳进行了保护,但是软件协议只支持双机互备。文献[14]提出了三重心跳,判断条件更加丰富。但是主备切换仍然只支持双机。
综上所述,在解决主备切换问题时,现有文献中的方法和策略存在以下不足:1)仅能支持两个节点,并且仅有主机对外提供服务;2)判断条件单一,仅依据心跳是否存在;3)切换过程需要人工干预;4)存在单点故障。
考虑到上述方案的不足,提出了一种适用于电网调控系统这类实时系统的多机主备冗余机制,使用细粒度的应用管理方法提高了资源利用率,使用状态同步技术支持多节点互备,基于多种切换条件,使用分布式的应用状态转换技术完成自动的主备切换。
1 调控系统主备冗余功能和性能需求
智能电网调度控制系统是一种实时类系统,处理的数据量大,实时性和可靠性要求高,因此对其主备冗余提出了以下功能和性能需求:
1.1 多机主备冗余
系统仅两台服务器运行无论在性能和功能上都不满足实时系统需求。如果两台服务器同时崩溃则系统功能将完全失去。因此迫切需要能支持多台服务器的主备冗余机制。
1.2 资源充分利用
主机工作备机闲置的方案不能满足大数据量处理的需求。且全部功能都在一个节点部署的方案,一旦主机崩溃,对系统瞬间造成的影响太大。因此需要两台以上服务器每台都能提供部分服务的主备冗余机制。
1.3 多种切换条件
仅依赖心跳是否存在进行判断不能满足复杂系统的实际需求。因为可能存在心跳正常,但是应用进程不正常的情况。因此系统需提供多种判断条件进行主备切换。
1.4 无需人工干预
当发现故障时由人工选择一个节点切换为主机可以避免冲突,但时效性太差。电网调控系统需要实时自动切换主机的方案。
1.5 无需中心节点
设置全局锁、仲裁节点或者协调节点的类似方案会给整个系统带来单点故障,一旦中心节点故障,整个系统的冗余功能将失去。因此冗余管理方案不能设置中心节点。
2 調控系统主备冗余方案及关键技术
2.1 总体方案
调控系统多机主备冗余方案主要采用细粒度的应用部署方法,并在各个节点间进行应用状态的同步和数据的同步,基于多种条件发现故障后,进行应用状态的转换。总体架构图如图1所示。
图1中各个节点可以细粒度的部署多个应用,同一个应用在各个节点的实例中,仅有一个为主实例,其他为备实例。每个应用的状态通过心跳兼状态报文发送到其他节点,应用的数据通过消息报文进行同步。同时每个节点运行进程管理和网络管理进行进程和网络故障判断,故障发生后通过状态转换技术选举出新的主机进行应用切换。本文描述的关键技术有效满足了多机主备冗余、资源充分利用、多种切换条件、无需人工干预、无中心节点等需求。下面进行各项技术的详细介绍。
2.2 细粒度应用管理技术
调控系统中业务功能都以应用的形式存在,应用下属一定数量的进程和数据库表。启动应用即启动了相应的进程,系统中即具备了对应的业务功能。本文的主备冗余机制不是以节点(即服务器)为单位,而是以应用为单位。
基于应用级别的主备冗余机制下每个节点都可运行某几个应用的主机,仅要求同一个应用的主备不在同一个节点上。多个应用的主备机可均衡部署在多个节点上,不仅限于两个节点,如图2所示。不会出现双机互备时备机资源完全闲置的情况。
2.3 多条件故障检测技术
本文的机制不仅仅使用心跳作为切换判断依据。心跳存在并不能保证软件功能正常。软件故障检测主要是检测进程的状态,可通过周期性检测或主动汇报机制检测到关键进程故障,进一步触发进程所属应用的故障,最后根据2.5节中的算法触发应用主备切换。
同时本文还检测网络状态,因为服务器和工作站可能连接在不同的接入层交换机,再连接一个核心交换机。这样某个服务器的接入层交换机与核心交换机断开,则其功能不能被工作站使用,因此需要特殊的网络检测模块,如果检测出它与核心交换机断开则判断为服务器断网。
另外为了提高切换速度,本文故障冗余机制提供一种加速判断网络故障的方法。具体步骤是在第一次超时未收到心跳报文时,立刻主动向疑似断网节点发出ping报文,不再等待后续心跳。例如连续进行3次ping操作,如果均未得到回复,则判断疑似节点断网。ping操作的时间间隔可配置。使用ping报文检测比心跳更加准确快速,因为是由对方节点的操作系统给出回复,而不是依赖用户层程序发出的心跳。
2.4 应用状态同步技术
本文的主备冗余机制中,心跳不是判断故障的唯一手段,但仍然是主要方法之一。但是对心跳技术做出了改进。不仅仅用于判断节点是否在线,同时具备传输应用状态信息的功能。心跳报文中包括本节点的主机名、应用名称、应用优先级、应用状态、网络状态等信息。每个节点使用组播将心跳报文发出,避免产生过多的网络连接。每个节点收到其他节点的心跳报文后将其他节点应用状态信息存储在本节点共享内存中,为2.5中介绍的状态转换提供信息来源。系统应用状态转换时,每个节点自动根据自身的信息,通过一致的算法向同一个目标状态转换,不需要中心节点参与,系统不存在单点故障。
2.5 分布式应用状态转换技术
主备冗余机制为每个应用设立了初始化、备机、主机、断网、故障等状态。处于主机状态的应用为调控系统其他模块提供服务或持续的运行计算业务。备机状态的应用下的进程一般处于空转状态,但是可以实时接管业务,随时升级为主机状态。
如图5所示,初始化是应用所属进程正在启动的状态。当备机发现没有其他主机且本机优先级最高,则升为主机。当主机发现有另一个主机且本机优先级不是最高,则降为本机。断网和故障为2.3中故障检测后到达的状态。主机断网或故障后会有另一个备机实时升级为主机。故障或断网恢复后首先变为备机状态。
优先级根据数据库中配置的节点顺序产生,由于配置错误导致节点优先级冲突时,本文主备冗余机制采用比较节点IP地址的方法决定是否升为主机,优先级数值相同时IP数值越小则优先级越高。
下面将结合示意图具体描述一个主机切换的过程。
图6中包括一个系统中的部分节点,即运行SCADA应用的4台服务器,每个服务器上运行了PUBLIC和SCADA应用。它们的优先级为1、2、3、4。表示sca1节点在应用配置表中的SCADA条目中排名最靠前,sca2次之,其他节点同理。如果某一个时刻sca1的SCADA应用下关键进程故障,则其上的SCADA应用变为故障状态,此时其他3个节点会立刻发现系统中没有SCADA主机,然后根据自身节点的优先级,sca2会自动升级为SCADA主机,sca3和4发现自身优先级在剩余健康节点中不是最高,则继续保持备机状态运行。切换完成后的状态如图7所示。SCADA应用的切换不影响PUBLIC应用的状态,体现了细粒度管理。本机制下系统只剩下一个节点也能正常运行,体现了多机冗余。
3 测试验证和现场实施效果
功能测试通过模拟故障然后检查系统最终的状态验证切换的正确性。性能测试通过编写应用状态查询工具,查询共享内存中某个应用的实时状态,并显示状态变化的时间点。最后展示了本文的多机冗余机制在现场实施的效果。
3.1 故障切换功能测试
故障切换功能测试分为关键进程故障和网络故障两种情况分别进行测试。如图8(a)所示,系统中的4个节点上配置了PUBLIC、SCADA、DATA_SRV三种应用。SCADA应用在4个节点的优先级分别是1、2、3、4。某一时刻人为将sysadm1节点的SCADA应用下的关键进程停止,可观察到如图8(b)所示,sysadm1的SCADA应用变为故障状态,优先级为2的sysadm2的SCADA应用切换为主机,进程故障切换功能正确。
网络故障切换测试前首先恢复各个节点的应用状态到图8(a)的状态。然后直接拔出sysadm1节点的两根网线。如果图9所示,sysadm1的应用均变为断网状态,sysadm2的PUBLIC、SCADA应用自动切换为主机。网络故障切换功能正确。
从图8和图9中可以看出DATA_SRV的主机始终在优先级为2的节点上。这是因为本文的机制保证了第一个启动的节点为主机,后续启动的节点不会争抢正常的主机。
3.2 故障切换性能测试
测试时选择某个应用下的某个关键进程,将程序文件改名,使用kill命令停止进程,对各个状态变化的时间点进行相减得出性能数据,重复测试10次取得平均值如下表。
整个切换的过程是先由进程管理程序发现关键进程故障,然后把共享内存中的进程故障标志位置为1,然后主备冗余程序发现后置本機应用故障标志位为1并用组播发送出去,其他节点收到后由优先级最高的备机自动升为主机,整个过程大约需要237ms。
3.3 网络中断引发的应用切换测试
测试时直接拔除某个应用主机所在服务器端所有网线,在将会升为主机的节点使用工具程序查询时间点。对各个状态变化的时间点进行相减得出性能数据,重复测试10次取得平均值如下表。
整个切换的过程是主备冗余程序发现某个节点心跳超时,心跳周期是可配置的,本文测试时设置为500 ms一个周期,3个周期收不到心跳则认为超时。超时后立刻判断相应节点的应用全部为故障,优先级高的节点相应的自动升为主机,整个过程大约需要1675 ms。
4 网络配置方案和经济性分析
主备冗余算法既可以运行在单网环境也可运行在双网环境。但是在单网环境下,服务器的一块网卡损坏就会导致该节点离线。
如果运行在双网冗余环境则系统的安全性将大大提升,任意服务器仅一块网卡故障时仍然能够正常运行,全系统状态也不受影响。双网冗余的网络拓扑图如下所示。
双网卡冗余环境中每个节点安装两块网卡,将每个节点的两块网卡分别接在两台交换机上,在网络拓扑中将两台交换机相互级联。此方案中两台交换机均配置IP地址,如果主机某块网卡不能ping通交换机地址,则切换此网卡的工作IP地址到另一块正常网卡,此时服务器仍然能正常工作。
从经济性角度分析,每个服务器需使用两块网卡,因为服务器一般自带两块网卡或两个网口,不需要额外增加成本。只需要增加一台三层交换机。以背板带宽较高的华为千兆三层交换机为例,价格约1万元。除去级联口和上行口外可连接22台服务器,按照普通X86服务器5万元左右计算,成本大约增加0.9%,但系统可靠性大大增加。并且本文算法不强制要求使用双网结构,单网环境也可运行,此时不增加系统成本。
5 结 论
论述并实现了电网调控系统中的一种多机主备冗余机制。该方法通过使用细粒度部署和分布式状态转换等技术,实现了对多机主备冗余、多种切换条件的支持,并且切换过程无需人工干预。最后的功能测试表明本机制能很好的管理多机之间的故障切换。性能测试表明,在确认故障源后,切换过程非常迅速。该机制已经在国调、华北、江苏等多个调控实时系统中得到了应用,其可靠性、稳定性和性能能够满足现场的运行需求。
参考文献
[1] 艾琳,王超,陈为化. 三华特高压同步联网及其对调度方式的影响[J]. 能源技术经济,2011,23(5):38—41.
[2] 汪际峰,沈国荣.大电网调度智能化的若干关键技术问题[J].电力系统自动化,2012,36(1):10—16.
[3] 姚建国,杨胜春,单茂华.面向未来互联电网的调度技术支持系统架构思考[J]. 电力系统自动化,2013,37(21):52—59.
[4] 辛耀中,石俊杰,周京陽,等.智能电网调度控制系统现状与技术展望[J]. 电力系统自动化,2015,39(1):2—8.
[5] 孙名扬,高原,严亚勤,等.智能电网调度控制系统集群化技术[J]. 电力系统自动化,2015,39(1):31—35.
[6] 国家电网公司.Q / GDW 1680.41-2015.智能电网调度控制系统第4-1 部分:实时监控与预警类应用 电网实时监控与智能告警[S],北京,2015.
[7] 张鑫,黄鑫.电网统一视频监控平台部署方案及检测技术研究[J]. 电力信息与通信技术,2015 ,13 (1):15—20.
[8] 吴娟,马永强,刘影.一种基于主备机快速切换的双机容错系统[J]. 计算机应用,2005 ,25 (8):1948—1951.
[9] 程艳芬. 实时系统双机热备份技术研究[J].计算机光盘软件与应用,2011 (2):44—46.
[10] 王江江,李志强,赵亮.双机热备系统的主备切换研究[J]. 铁道通信信号,2015,51 (2):11—12.
[11] 杨玉成,缪万胜,乐斌.系统主备份切换关键技术研究[J]. 航空电子技术,2013 (1):20—23.
[12] 朱建红,陈柯.数据服务多节点主备切换设计方法[J]. 指挥信息系统与技术,2012 ,3(6):55—57.
[13] 王飞,曹桂均.双机热备系统心跳失效的防护方案[J]. 铁路计算机应用,2013 ,22 (3):35—37.
[14] 李江昀,童朝南,彭开香.基于Linux平台的过程控制双机热备综合解决方案[J].计算机工程与应用,2005 ,41 (30):218—220.