柳鹏 何潇锐 山西省电力公司长治供电分公司,山西长治 046011
备份技术研究
柳鹏 何潇锐 山西省电力公司长治供电分公司,山西长治 046011
在电力系统中,很多关键应用和服务都需要采用备份技术保证系统的高可靠运行。本文总结了常用的备份技术,分析其优缺点,并设计和实现了基于组播的温备份技术,其支持多个副本同时运行,自动选举主副本。提出了副本状态转换算法,温备份算法,为实现关键应用的备份进行了有效探讨和实现。
随着计算机技术的飞速发展,信息系统广泛应用于各种关键企业业务中。由于计算机软硬件都会不可避免地发生故障,这些故障可能给企业带来极大损失,因此,对信息处理系统的高可用性需求,极大地刺激了备份技术的应用和发展[1,2]。备份是指利用技术、管理手段以及相关资源确保关键数据和关键信息系统在发生灾难后,在确定的时间内可恢复和继续运营。电力行业是关系到国计民生的基础性行业,随着电力市场化以及电网建设的进一步发展,传统的电力系统业务正在发生变化。各级电力公司普遍建立了自己的内部网络,实现了办公自动化,各种管理信息如财务、收费、电力营销、生产管理等应用系统在电力行业日常业务中扮演了越来越重要的角色。随着电力信息化的日益增强,对各种信息服务的可用性、稳定性有了更高的要求。
采用RAID和数据备份可以提高关键数据的可靠性[3],但是,RAID技术只能解决硬盘的问题,数据备份只能部分解决系统故障后数据的恢复。而服务器本身软硬件出现的问题,都将造成服务的中断。因此,对于需要持续可靠地提供信息服务的系统,必须实现服务级别的备份和快速的服务切换,对用户表现为透明持久的可靠服务。双机热备的方式得到了广泛应用[4,5,6],其能保证企业关键业务应用的稳定性和可用性,提供7×24不间断服务,其缺点是大都仅提供两个节点的备份,而且,备份服务需要一直运行,这样使系统资源的有效利用率降低。
本文在总结和分析各种备份技术的基础上,提出基于组播技术的温备实施方案。其支持多个后备副本的同时运行,支持主副本的自动选举;采用状态转换的机制,实现主、后备副本状态一致性维护和功能切换,后备副本只有在切换为主节点时才启动应用服务,有效减少了后备副本的资源占用。
在备份技术中,副本之间的地位不同。有一副本为主副本,负责与外部交互;其他副本为后备副本,其只与主副本进行交互,备份技术主要包含冷备份、温备份和热备份。
冷备份指后备副本在主副本正常操作时不活动,仅在主副本故障时切换、启动,并代替主副本。主副本在处理过程中将各种关键数据保存在一个中间存储系统中,当主副本发生故障时,后备副本从存储系统中读取最新的系统数据,继续提供系统服务。其优点在于避免了出现掉电等故障时,数据丢失的可能性,提供了以数据为中心的信息系统的可靠性。缺点是发生故障时,后备副本才从数据库读取数据,造成切换时间较长。冷备份方式适用于数据库类型的备份,或业务系统产生大量中间数据的场景。
温备份中,后备副本在主副本正常操作时也不活动,当主副本完成处理时,必须向其它副本发送更新消息,后备副本更新其状态并且返回应答消息,主副本收集到所有的应答后才向客户端返回结果。正常情况下,后备副本不处理和输出任何数据,后备副本的动态数据由主副本及时更新。发生故障时,后备副本接管系统的输入和输出,并且使用最新的动态数据来进行业务处理。其优点是可避免由于软件故障而造成的多个备份同时失效的情况,缺点是很难有一个有效的机制完全备份动态数据,导致系统切换后,不可避免地丢失部分数据。
热备份技术中,后备副本和主副本同时接收信息输入,并进行业务处理,但只有主副本的输出信息被输出。当主备切换时,只需选择后备副本的信息输出即可。热备份的优点是可完全保证系统的多个副本动态数据的一致性,从而减少信息备份不完全造成的不一致性。其缺点是多个副本同时运行,占用大量的系统开销。
多副本冗余的工作方式存在两种不同应用模式,一是应用服务无状态信息,比如时间服务,任何一个后备副本都可以随时充当主副本。二是应用服务具有运行所需的动态信息,如资源管理服务,后备副本必须能周期获取主副本的当前信息。主副本以组播方式周期性向后备副本发送更新信息,更新的内容与具体的应用有关,后备副本以文件或数据库的形式存储最新信息,当副本切换时,以本地保存的状态初始化应用服务。
在设计过程中,采用一种被动发现的方式,主副本周期性组播hello消息,它包含自身的信息(如优先级、域名、周期T0、ID等信息),其他副本通过该组播端口接收hello消息来识别当前的主副本信息,如果发现自身更优,或一段时间都接收不到hello消息,则触发进行主副本选举。选举出的副本提供业务服务,主/后备副本的切换对客户端透明。
3.1.1 所用数据结构
各副本通过交互Hello消息,实现主副本的选举,消息格式为服务协议单元SPU,:
struct SPU{
int priority;//主副本的优先级别int id;//主副本的id,可通过ip或mac得到一个唯一的值
char[20] domain;//域名信息,一个域仅保留一个主副本
int T;//主副本的hello消息周期,作为系统同步周期。
}
采用priority和id字段共同作为优先级参考字段,由于id字段每台机器唯一,两个优先级比较必能选出某一个。比较的时候采用以下规则:
优先级priority字段越小,优先级越高。
优先级字段如果相同,id字段值越小优先级越高。
整个系统中优先级最高的副本作为主副本,其他为后备副本。采用224.1.1.1:10096组播接口作为副本的管理接口。
3.1.2 状态描述
如果主副本异常中断或退出,系统将有Tcontest的切换时间该时间为后备副本竞争选举的时间,切换时间将导致[n, n+1]T0的服务延迟。对于实时业务系统,可配置为双副本机制,避免选举过程,唯一的后备副本发现主副本退出时,可立刻替代主副本。在客户方对连接异常采用重传机制,合理配置重传次数和周期,能确保客户端请求得到处理。
图1 状态转化图
图1中活跃状态、倾听状态以及退出状态为三个稳定状态,其他状态的保持时间预设为3T0。
启动状态:不启动应用服务,该状态接收hello消息,用于判断是否存在更优先的副本;以自身的同步周期作为T,持续时间为Tinit。若接收到其它hello包,则以该包中的周期T作为系统同步周期;如果hello消息中优先级低于自身优先级,则直接进入竞争状态;若存在优先级与自身相等或者更高的,或者在Tinit中没有hello消息,则进入倾听状态。
倾听状态:不启动应用服务,该状态接收hello包。如果接收的hello包中的主副本优先级等于或大于自身时,一直处于该状态;如果hello消息中的优先级低于自身,则进入竞争状态;如果Taging时间内收不到hello消息,认为主副本异常,进入竞争状态。
竞争状态:仍然不启动应用服务,以自身属性构造hello消息,参与竞争主副本,周期为Tcontest。如果接收到优先级高于自身的hello包时,说明有更好的副本正在运行,则直接进入倾听状态;如果在3T的时间内收不到hello消息,或者收到hello消息的优先级都低于自身时,进入活跃状态。
活跃状态:该状态下的副本为主副本,启动应用服务,周期性的组播hello消息,通告自身优先级和T参数,并监听管理接口,如果存在更高优先级的hello消息,则进入退避状态;若收到退出指令,则直接进入退出状态。
退避状态:该状态由活跃状态转换而来,仍然充当主副本的功能,提供应用服务,目的是确认网络上是否存在优先级更高的副本,以避免系统不稳定造成的频繁切换。若Tretreat时间内收到优先级更高的hello包,则直接进入倾听状态,延迟2T0后关闭应用服务,确保新的主副本已经启动应用服务;若Tretreat之内不能收到更好的副本信息,则重新回到活跃状态,而应用服务功能不变。
退出状态:该状态关闭应用服务,并退出管理线程。当系统出现异常,或收到退出指令时触发该状态。
温备份算法实现主、后备副本的状态一致性维护,其流程如图2所示。
图2 温备份流程
算法描述如下:
本文从多个副本选举实现和温备份算法两个方面,阐述了多副本备份技术的原理和相关实现。为提高业务系统的可靠性提供了一种可行的备份实施方案,目前已初步应用于长治市供电局用电稽查系统,改造后的系统能实现系统不间断的功能服务,证实了该技术的可行性。
[1] 叶国骏, 李莉丽, 雷航. 基于EDF的分布式系统实时容错调度算法. 计算机工程. 2006.32(4), pp 76-78
[2] 杨军. 容灾备份技术在电信企业中的应用. 江苏通信技术. 2002.18(6), pp 41-45
[3] 王玲. 企业数据备份和灾难恢复. 信息技术与信息化. 2006(3), pp 64-66
[4] 毕全起. 数据的可靠性和软件容错系统的实现. 河北师范大学学报(木然科学版). 2002. 26(1).pp 29-31, 64
[5] 武建锋, 荆文芳. 双机容错方案设计.计算机科学与技术. 2006.24(1), pp 19-22
[6] 郑军, 付强, 李权. 一种纯软件的双机热备份算法. 计算机应用. 2002.22(12), pp 98-100
10.3969/j.issn.1001-8972.2011.08.075
柳 鹏,男,1976年3月出生,1999年7月毕业于华北电力大学计算机专业,工程师,在长治供电分公司科技信息中心工作,任副主任。
何潇锐,男,1981年12月出生,2003年7月毕业于河南理工大学计算机专业,助理工程师,在长治供电分公司科技信息中心工作,任信息安全专责。