高可靠性复杂信息系统中软件容错设计方法研究

2020-02-01 15:23邓志渊崔海斌单崇喆尹航唐雷
现代计算机 2020年34期
关键词:备份数据中心服务器

邓志渊,崔海斌,单崇喆,尹航,唐雷

(1.中国人民解放军91515部队,三亚572000;2.中国运载火箭技术研究院,北京100076;3.北京宇航系统工程研究所,北京100076)

0 引言

随着信息技术的发展,软件复杂度日益增加,软件在系统中的规模与作用越来越大,特别是在军事系统中,以软件为核心的产品得到广泛应用,软件质量决定了系统成败。良好的软件可靠性设计是系统质量的重要保证,是保障系统可靠的最有效、最重要手段。在软件可靠性设计方面,软件容错技术是目前认可度较高,具有较好应用前景的设计技术之一,曾被用在飞机飞行控制系统、交通管制系统、核反应堆安全控制系统等失效后会出现严重后果的关键软件系统中[1]。随着网络与集群技术的发展,在具有高可靠性要求的复杂信息系统中,对软件容错设计提出了系统级应用需求。本文将在介绍软件容错设计方法基础上,以复杂设备在线测试数据分析与管理系统为例,论述高可靠性复杂信息系统中软件容错技术在系统级层面的应用,为系统级容错设计提供借鉴。

1 软件容错设计方法介绍

软件容错设计是系统可靠性设计的关键技术之一。软件容错技术是研究在系统存在故障的情况下,如何发现故障并纠正故障,使系统不受到影响继续正确运行,或将故障影响降到可接受范畴的技术,使系统能够继续满足使用要求[2]。

常用的软件容错技术主要包括:冗余设计、N版本程序设计、恢复块设计、防卫式程序设计、服务器集群设计等[3]。冗余设计是采用增加多余资源获得高可靠性。即在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余部分进行替换,从而维持软件系统的正常运行。按照对冗余资源不同可分为信息冗余、时间冗余、结构冗余[4]。N版本程序设计是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一模块的故障提供错误服务,以实现软件容错[5]。恢复块设计是选择一组操作作为容错设计单元,从而把普通程序块变成恢复块。一个恢复块包含若干个功能相同、设计差异的程序块文本,每一时刻有一个文本处于运行状态,一旦该文本出现故障,则用备份文本加以替换,从而构成动态冗余[6]。N版本程序设计与恢复块设计主要用于对系统中关键节点的容错设计,以消除关键节点的单点故障。防卫式程序设计是通过程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去[7]。服务器集群设计是指将一种相互独立的服务器在网络中组合成为单一系统工作,并以单一系统模式加以管理,当一台节点服务器发生故障时,其上运行的应用程序将被另一个节点服务器自动接管,以提高系统可靠性[8]。

2 复杂设备在线测试数据分析与管理系统容错设计

2.1 系统组成

复杂设备在线测试数据分析与管理系统(以下简称“CETDAS系统”)为局域网应用系统,软件主要采用B/S架构和微服务技术构建,硬件主要由11台云服务器搭建集群及相关网络设备、备份数据中心存储设备、安全保密设备、UPS设备组成。系统底层对硬件资源虚拟化,形成云平台,对资源进行统一分配管理,为Ha⁃doop大数据平台及其上层业务应用系统提供计算、网络及存储资源。CETDAS系统由数据采集平台、数据中心、集成应用平台、安全保密防护系统4部分组成,其中集成应用平台按业务功能又分为复杂设备构型与产品信息管理、测试任务管理、测试流程监控、测试数据自动判读、测试技术资料管理、测试数据分析与挖掘、三员与权限管理、测试数据摆渡管理等8个子系统,系统组成如图1所示。

CETDAS系统在可靠性方面提出质量要求,这些技术指标将作为系统软件容错设计的输入。具体包括:

(1)系统具备7×24小时运维能力;

(2)平均故障修复时间(MTTR)不大于30分钟;

(3)平均故障间隔时间(MTBF)不小于1000小时;

(4)具有对突发事件、故障的及时响应和快速恢复能力。

2.2 数据中心级容错设计

在CETDAS系统中,数据中心为系统提供统一资源分配,为上层应用提供计算与存储服务,同时应用系统服务端部署在数据中心之上,因此,数据中心级容错设计是衡量系统能否达到可靠性质量要求的主要因素。数据中心的容错设计包括:备份数据中心构建与主数据中心容错设计。

图1 复杂设备在线测试数据分析与管理系统架构图

2.2.1 备份数据中心构建

备份数据中心作为主数据中心的冗余设计,为系统提供了数据备份与容灾恢复功能。按照国家标准,备份数据中心建设分为6个等级[9],如图2所示。

图2 备份数据中心建设分级图

一级备份数据中心具有基本备份支持功能,具备介质存储备份及容灾恢复计划;二级备份数据中心具有备用场地支持,从物理空间上实现对主数据中心的容灾紧急供货;三级备份数据中心具备电子传输和部分设备支持,实现电子传输的数据备份并配置专职运行管理人员;四级备份数据中心具备电子传输及完整设备支持,实现就绪状态7×24小时运行;五级备份数据中心具备实时数据传输及完整设备支持,实现远程在线数据恢复和网络集中切换能力;六级备份数据中心具备数据零丢失和远程集群支持,实现数据实时备份及应用系统实时无缝切换。

根据系统在可靠性方面的质量要求,同时考虑项目进度、成本等其他因素,经论证,CETDAS系统选择4级标准进行备份数据中心方案设计。方案设计目标是实现备份数据中心近实时数据备份功能,在主数据中心故障条件下,不会造成数据丢失,备份数据中心支持重建所需安装程序,当主数据中心重建后,可利用备份数据中心恢复系统数据。

备份数据中心与主数据中心系统运行架构如图3所示。备份数据中心设计方案如下:与主数据中心部署在同一物理网络,两个中心可通过网络相连并设置为不同网段,其间具备防火墙等必要的安全防护设备。备份数据中心硬件能够支持全部数据的备份存储。备份数据中心能够对云平台,大数据平台安装程序及初始配置文件进行备份;对各应用服务软件初始镜像进行备份。同时,主数据中心设置定时任务,指定周期在后台对分布式数据库、关系数据库、分布式文件系统的数据进行增量备份。主数据中心能够监视备份数据中心的状态,在备份数据中心异常时给出告警提示。

图3 备份数据中心与主数据中心系统运行架构图

当发生灾难导致主数据中心无法正常运行时,备份数据中心按照以下步骤恢复系统:

(1)恢复主数据中心硬件架构;

(2)通过备份数据中心获取云平台安装程序与初始配置文件,安装云平台系统;

(3)恢复云平台之上的全部虚拟机;

(4)通过备份数据中心获取大数据平台安装程序与初始配置文件,安装大数据平台系统;

(5)通过备份数据中心获取各应用服务软件初始镜像,安装应用服务;

(6)恢复分布式数据库、关系数据库、分布式文件系统数据及元信息;

(7)启动系统。

2.2.2 主数据中心容错设计

在CETDAS系统中,主数据中心容错设计主要体现在集群部署设计、云平台冗余设计、大数据平台冗余设计三个方面。

在集群部署方面,采用集群技术,虚拟了40余台服务器,将服务分别部署在不同机柜物理节点的服务器上,当其中一个服务器出现故障时,系统会自动切换到另一个台服务器运行。由于备份节点部署于不同物理机柜中,当某一机柜网络出现问题时,仍能保证该服务可正常运行。

云平台冗余设计主要体现在资源虚拟化设计方面,通过虚拟机HA、虚拟机快照、虚拟机迁移、存储迁移等技术[10]实现了对虚拟机的故障预计及故障自动处理。在故障处理时,支持对故障服务器进行隔离,避免业务消息发到故障服务器,确保故障不影响系统正常运行和业务正常使用,降低了故障危害。同时,云计算平台管理系统采用冗余备份机制,主系统故障可自动切换到从系统提供服务。当系统冗余度降低时,可利用云平台的HA机制恢复其冗余度,从而保证在长时间免维护情况下系统的不间断应用。

大数据平台冗余设计主要体现在分布式文件系统管理节点的冗余备份机制[11]。分布式文件管理系统HDFS管理节点NameNode的备份机制利用Zookeeper的写一致性和临时节点机制实现[12]。为每个NameNode设置监视节点,若监视节点检测到对应的NameNode状态正常,则表示这个NameNode有资格参加Zookeeper的主备选举。若目前还没有进行过主备选举,则系统就会发起一次新的主备选举,在Zookeeper上创建路径为/hadoop-ha/${dfs.nameservices}/ActiveStandbyElector⁃Lock的临时节点(其中,${dfs.nameservices}为Hadoop的配置参数dfs.nameservices的值)。Zookeeper的写一致性会保证最终只会有一个临时节点创建成功,创建成功的NameNode就会成为主NameNode,创建失败的NameNode成为备NameNode。主NameNode在Active状态,备NameNode会被切换为Standby状态,多个NameNode节点通过共享存储实现元信息共享。通过大数据平台的冗余设计,实现了Active状态的NameNode节点故障时自动将Standby状态的Name Node节点切换到Active状态,使系统持续提供服务。

2.3 数据库级容错设计

CETDAS系统的数据库级容错设计主要包括:分布式数据库容错设计与关系型数据库容错设计。

2.3.1 分布式数据库容错设计

在CETDAS系统中,分布式数据库用于存放标准格式的测试数据。分布式数据库采用HBase,底层基于分布式文件系统HDFS构建,如图4所示。HBase分布式数据库继承了分布式文件系统HDFS的可靠性、高性能和可扩展性,其冗余与扩展机制为:利用分布式文件系统存储多个复本的元信息和Zookeeper的选举机制实现管理节点的多机备份;利用分布式文件系统存储数据表的多个副本,实现数据的冗余存储;数据库表到达一定规模后会根据Key值自动分裂,分布到多个节点,实现负载均衡。

图4 HBase分布式数据库结构图

HBase分布式数据库在数据恢复方面实现了数据库镜像机制。创建镜像时,数据库能够保存源信息的副本,并对元信息指向的全部底层文件进行保护,防止文件在后续操作中被删除或移动。通过镜像机制,能够在数据库损坏时恢复到某一时刻的状态。

2.3.2 关系型数据库容错设计

在CETDAS系统中,关系型数据库存储各业务系统产生的格式化数据,选用MySQL关系型数据库实现。MySQL数据库采用双机热备的主从备份模式进行容错设计。具体方案是:使用两台服务器,一台作为主服务器,运行MySQL数据库管理系统提供服务。另一台作为备份服务器,安装完全一样的MySQL数据库管理系统,但处于待机状态。当主服务器出现故障时,通过软件诊测将备份机器激活,保证MySQL数据库在短时间内恢复正常运行。

图5 MySQL数据库双机热备运行模式示意图

在主从服务器同步方面,采用读写二进制日志文件的方式实现。作为主服务器Master,把自己每一次改动都记录到二进制日志Binarylog中。作为从服务器Slave,会用Master上的账号登录到Master上,读取Master的Binarylog,写入到自己的中继日志Relaylog中,然后从服务器的SQL线程会负责读取这个中继日志并执行,实现主从数据库同步,其运行机制如图5所示。

2.4 应用系统级容错设计

在CETDAS系统中,应用系统级容错设计主要体现在开发设计准则,通过约束系统设计,提高代码质量,降低系统复杂度。例如,要求系统采用组件式开发,统一使用Springcloud技术栈实现新服务,并强制使用Hystrix熔断组件实现容错机制[13]。同时,提出防卫式程序设计要求,在方案设计阶段对各业务流程进行事务性分析,辨别哪些业务具有事务原子性、一致性等特性,在实现中需按事务模式处理。提出采用Trycatch异常处理抛出自定义业务异常设计要求,特别是各服务系统边界类之间的数据调用,需按统一化规定定义好业务中出现的异常,避免故障定位不清等问题。在处理异常时,规范界面告警信息的提示规则,以便为故障恢复提供指导。

2.5 容错设计应用情况

CETDAS系统自上线以来运行良好,满足使用需求,达到了7×24小时运行等可靠性设计指标要求。但在运行中也暴露了一些可靠性设计中考虑不足的情况。例如,没有考虑到频繁断电的系统用电环境,导致MySQL数据库选用主从备份方案不合适,当主服务器失效后,从服务器被激活为Active状态时写入的数据,无法在主服务器恢复运行后向主服务器同步,导致数据状态回滚。针对这一问题,提出解决措施:将MySQL数据库的“主从模式”改为“主主模式”,并采用双Mas⁃ter+Keepalived方案防止响应延迟产生“脑裂”[14]。经改进,解决了数据回滚问题,提高了系统可靠性。

3 结语

本文针对复杂信息系统的高可靠性需求,对系统级软件容错设计方法进行研究,以CETDAS系统为例,从数据中心级、数据库级、应用系统级三个层面论述了软件容错设计,为提高复杂系统的可靠性提供一种有效解决方案。

猜你喜欢
备份数据中心服务器
关于间接蒸发冷机组在数据中心中应用的节能分析
利用云备份微信聊天记录
如何只备份有用数据而不备份垃圾数据
全方位备份,就用Acronis True Image
Windows10应用信息备份与恢复
2018年全球服务器市场将保持温和增长
2018年数据中心支出创新高
2017第十届中国数据中心大会榜单
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵