陶琴,汪文晶,王志勇
(1.武汉虹信通信技术有限责任公司,湖北 武汉 430205;2.武汉邮电科学研究院,湖北 武汉 430074)
基于OpenSAF的MiniEPC热备系统设计与实现
陶琴1,汪文晶2,王志勇1
(1.武汉虹信通信技术有限责任公司,湖北 武汉 430205;2.武汉邮电科学研究院,湖北 武汉 430074)
为了实现低时延、无网络中断的用户体验,解决EPC服务器关键业务中断导致通信网络瘫痪的问题,分析了目前3种保障系统高可用性技术的优缺点,设计了一种基于OpenSAF开源项目的EPC双机热备系统,通过测试证实了热备份的时延非常小,可以做到EPC关键服务不中断,达到用户无感知的效果,用以确保核心网长期、可靠的服务。
OpenSAF EPC 双机热备系统
随着移动互联网的高速发展,核心网EPC(Evolved Packet Core,核心分组网演进)上的业务量与数据量飞速增长,一旦核心网服务器因故障宕机,整个通信网络就会瘫痪,网络中断将极大降低用户体验。目前,主要有服务器集群、双机热备和单机容错等技术用以保障系统的高可用性,其中单机容错技术是基于硬件的容错,价格极其昂贵,只适用于对容错要求极高的应用;集群技术主要用于解决负载均衡等问题,安装使用操作复杂,投资较大,一般只适用于大型系统;双机热备技术配置简单,投资小,适用于各种中小型系统[1],因此本文设计了一种基于开源的OpenSAF项目MiniEPC的HA(High Availability,热备)纯软件方案,此方案成本极小,实用性高。
2.1 双机热备系统
双机热备系统有两种实现方式,其中一种是基于共享的存储设备的方式(如SAN(Storage Area Network,存储区域网络)或共享的磁盘阵列),另一种是纯软件方式。
共享方式:将数据库放在共享的存储设备上,当一台服务器提供服务时,直接在存储设备上进行读写,而当系统切换后,另一台服务器也同样读取该存储设备上的数据[2]。
纯软件方式:通过镜像软件,将数据实时复制备份到另一台服务器上,同样的数据在两台服务器上各存一份,一旦其中一台服务器出现故障,就可以及时切换到另一台服务器继续工作[2]。
鉴于共享存储设备方式(如磁盘阵列)不仅成本昂贵,而且增加了新的故障单点,降低了双机热备系统的可靠系数,而且还受SCSI(Small Computer System Interface,小型计算机系统接口)电缆线长度约束(虽然光纤通道的磁盘阵列不受距离限制,但投资会很大),导致服务器部署很不灵活,因此本文的设计方案选择纯软件方式。
2.2 总体网络结构体系
本文设计的基于OpenSAF的EPC热备系统采用“1+1”备份模式,硬件由2台服务器组成,软件运行环境为Centos 6.5操作系统,2台服务器均要安装OpenSAF开源项目和虚拟EPC业务的软件包。需要注意的是,2台服务器的硬件型号与软件版本必须保证完全相同,一台EPC设备为Active(主设备),另一台EPC设备为Standby(从设备),从设备只是连接到网络中,不处理任何业务(如图1所示,从设备处于Standby时,黑色虚线表示非连接状态,只有当从设备切换成Active状态时,与Internet和eNodeB之间的链路才会被激活),全部核心网的业务都由主设备来处理,当主设备宕机时,从设备能够迅速切换为Active状态,并保持业务不中断。
(1)OpenSAF软件架构
设计方案中的主设备能实时同步配置信息及业务信息给从设备,同步机制就是选用开发高可用性中间件的OpenSAF开源项目,其实现了用SAF(Service Availability Forum,服务可用性论坛)接口规范和一些补充的服务来满足HA系统的需求,OpenSAF软件架构图如图2所示:
图1 EPC网络结构图
图2 OpenSAF框架图
(2)OpenSAF关键服务
在O p e n S A F开源项目中有两个关键服务:CKPT(Checkpoint Service,检查点服务)和AMF(Availability Management Framework,可用性管理框架)。
Checkpoint Service:Checkpoint Service是OpenSAF的备份服务,实现了为进程提供数据备份的功能,用于保护应用程序避免产生故障。当设备因为故障切换或重新启动时,Checkpoint Service可以检索数据,并从故障之前记录的状态恢复数据。且为了避免在系统中累积未使用的备份复本,过多占用内存资源,备份副本会被设定一定的保留时间,当任何进程的备份副本在保留时间期间没有数据备份时,Checkpoint Service将自动删除这个进程的备份副本来释放内存资源。
AMF:AMF是OpenSAF的状态监控机制,是OpenSAF的核心服务之一,用以实现进程的监控,它通过协调集群中的冗余资源来提供一个无单点故障系统。AMF实现了HA机制中的应用程序管理监控功能,包括应用程序生命周期管理、故障检测、故障隔离和修复等。OpenSAF的AMF提供了监控应用程序的接口,在软件程序设计中,需要注册一个AMF回调函数结构,并开启AMF的心跳检测机制,当设备状态发生变化时,注册的回调函数会执行相应的处理函数。
在MiniEPC的热备系统中,软件设计主要由EPC设计、HA监控机制、数据备份与还原这3部分组成,实现主备EPC设备的切换和数据备份。
3.1 EPC设计
核心网EPC主要由MME(Mobility Management Entity,移动管理实体)、SGW(Serving Gateway,服务网关)、PGW(PDN Gateway,PDN网关)、PCRF(Policy and Charging Rules Function,政策和收费规则功能)等网元构成。在MiniEPC中需要数据备份的是MME和XGW,则本文的热备就主要完成二台EPC设备的MME、XGW数据备份和信令TRANS(此处指EPC的信令业务,即图3中User SCTP部分)备份,当主设备的MME、XGW和TRANS的数据发生变化则用线程通知从设备,实现数据发送和数据更新,且数据库会自动同步。
图3 数据备份还原框架图
3.2 HA监控机制
本系统HA的监控机制采用OpenSAF的AMF服务实现,通过AMF来监控进程的状态及系统的状态,并在监控到异常后采取相应的措施。具体实现是通过在监控的进程中增加一个AMF分派线程,该线程在完成AMF的初始化及注册流程之后,通过AMF的心跳检测机制来监控Active(主设备)上的应用程序,当检测到主设备某个应用程序故障或者系统宕机时,就将Active(主设备)状态切换到Standby状态,Standby(从设备)切换到Active状态,并迅速接管业务,需要注意的是:主备设备的OpenSAF是通过TIPC(Transparent Inter-process Communication,透明进程间通信)通信协议完成的。
本系统需要将EPC业务与OpenSAF的AMF监控机制结合起来。所以系统的IP配置设计如图4所示,由于双机热备系统中从设备是不做业务的,所以从设备上不配置业务IP。
SGW配置在eth1口上,S1配置在eth2口上。当AMF检测到主设备发生异常后,会触发切换流程,在切换过程中,如果设备当前状态是Active,则调用命令配置eth1和eth2口的IP地址,并发出广播包广播接口的MAC地址;如果设备当前状态是Standby,则调用命令将eth1和eth2口的IP地址删除。切换后的IP配置如图5所示。
图4 切换前的IP配置
图5 切换后的IP配置
需要注意的是,由于Standby设备上的业务IP未配置,所以该设备上启动的XGW/MME/TRANS等进程的套接字没法绑定IP地址,这就要求当Standby设备切换为Active设备时,为XGW/MME/TRANS等进程绑定IP地址。具体实现:在AMF回调函数中检测到设备发生切换,如果当前设备是Standby变为Active,则给相应进程发消息,通知其进行套接字绑定。
3.3 EPC数据备份与还原
EPC数据备份的总体流程图如图3所示。数据备份将EPC业务与OpenSAF的AMF监控机制结合起来,采用OpenSAF的Checkpoint Service来实现,Checkpoint(检查点)通过备份副本同步来备份数据。具体实现:给每个进程设计一个检查点,每个检查点分配多个区,每个区内存都是相同大小,并且每个区ID是唯一的,每个区ID必须与数据结构的某一参数匹配。例如:MME的进程有一个检查点,备份12 000个UE,每个UE备份一定的数据,通过UE索引与每个区ID匹配,还原通过UE索引还原。
为减少进程中多个线程同时备份给Checkpoint Service产生的压力,本系统设计在每个进程中新增3个线程:OspHaCkptWrite线程、OspHaCkptDispatch线程、OspHaCkptInit线程。
(1)OspHaCkptInit线程:负责检查点的初始化,如果是Active node,则将检查点设置为Active;如果是Standby node,则同步备份副本,将备份数据一次性同步过来(仅在进程刚启动时进行);
(2)OspHaCkptWrite线程:OspHaCkptWrite一旦收到消息就调用saCkptCheckpointWrite将数据写入备份副本;
(3)OspHaCkptDispatch线程:循环调用saCkptDispatch分发Checkpoint消息。
当Active/Standby设备的MME/XGW/TRANS进程数据更新需要备份/还原时,就发送消息给OspHaCkptWrite线程进行备份或给OspHaCkptDispatch线程进行还原。但如果有多个线程有数据备份或还原,此时就会同时调用OspHaCkptWrite线程里的saCkptCheckpointWrite函数将备份数据写入备份副本,或者调用OspHaCkptDispatch线程里saCkptCheckpointRead函数将备份数据从备份副本读出。但这显然会造成阻塞,故想到在调用OspHaCkptWrite线程或OspHaCkptDispatch线程时进行加锁处理,以解决数据冲突问题,但是OspHaCkptWrite线程和OspHaCkptDispatch线程功能复杂,如果对整个OspHaCkptWrite线程或OspHaCkptDispatch线程进行加锁处理,会造成数据备份或还原的时延非常大,这违背了热备高可用性的初衷,显然是不合理的。因此本文设计的数据备份、还原流程如图6、图7所示。
图6 数据备份流程图
数据备份流程具体步骤如下:
(1)应用程序有数据备份时,创建锁(Mutex_lock);
(2)应用程序将备份数据放进缓存Bufferlist;
(3)应用程序数据备份完时,销毁锁(Mutex_unlock);
(4)增加信号量的值,即点灯(Sem_post);
(5)一旦信号量加“1”,即灯亮之后,一直被阻塞在此信号量上的OspHaCkptWrite线程就会被唤醒,即Sem_wait成功,并将信号量值减“1”,即熄灯;
(6)OspHaCkptWrite线程创建锁(Mutex _lock);
(7)OspHaCkptWrite线程从缓存Bufferlist取出备份数据;
(8)OspHaCkptWrite线程销毁锁(Mutex_unlock);
(9)OspHaCkptWrite线程将取出的备份数据调用saCkptCheckpointWrite函数写入备份副本;
(10)Sem_wait使OspHaCkptWrite线程一直阻塞在此信号量上,直到应用程序有数据备份来将灯点亮。
以此类推,一直循环上述流程来完成数据的备份工作。
图7 数据还原流程图
数据还原流程具体步骤如下:
(1)应用程序有数据还原时,saCkptCheckpoint-Read函数将备份数据从备份副本读出;
(2)saCkptCheckpointRead函数创建锁(Mutex_lock);
(3)saCkptCheckpointRead函数将备份数据放进缓存Bufferlist;
(4)saCkptCheckpointRead函数销毁锁(Mutex_unlock);
(5)增加信号量的值,即点灯(Sem_post);
(6)一旦信号量加“1”,即灯亮之后,一直被阻塞在此信号量上的OspHaCkptDispatch线程就被唤醒,即Sem_wait成功,并将信号量值减“1”,即熄灯;
(7)OspHaCkptDispatch线程创建锁(Mutex_lock);
(8)OspHaCkptDispatch线程从缓存Bufferlist取出备份数据;
(9)OspHaCkptDispatch线程销毁锁(Mutex _unlock);
(10)OspHaCkptDispatch线程将取出的备份数据根据数据的类型还原数据;
(11)sem_wait使OspHaCkptDispatch线程一直阻塞在此信号量上,直到有数据还原来将灯点亮。
以此类推,一直循环上述流程来完成数据的还原工作。
综上所述,即可完成应用程序的数据备份和还原工作。
3.4 实验结果
根据本文设计的MiniEPC的热备系统,搭建好热备环境后,分别启动Active设备和Standby设备,一旦Active设备发生故障,就会触发Failover(宕机)机制,重启Active设备,促使发生HA切换。Active主设备宕机后的日志如图8所示,Standby从设备切换为Active的日志如图9所示。
图8为Active主设备宕机,图9为Standby设备通过TIPC通信协议检测到Active失联,并切换成Active,这一过程花费的时间大概是600 ms,由此可见本设计方案中热备系统的时延是很小的,可以满足一般中小型系统的应用。且设计为纯软件模式,不仅成本较低,同时还具备文中所述的双机热备纯软件方式的所有优势。
图8 Active node宕机后日志
图9 Standby node切换为Active node日志
基于OpenSAF的MiniEPC热备系统设计方案是一种通过开源软件实现的热备份方案,不仅成本较低,而且不受SCSI电缆线限制,可以灵活部署服务器,达到宕机后Ping包不断(时延小于1 s)的效果,可实现EPC服务不中断,用户无感知。对于下一步的研究方向,希望能进一步优化备份策略,将时延降低到微秒级,这样将会实现更少的数据丢失,从而提高系统的高可用性和可靠性。
[1] 刘晓洁,黄永佳. 基于Linux的双机热备系统的实现技术[J]. 计算机应用研究, 2007,24(4): 255-257.
[2] 史文路. 双机热备份系统的研究与设计[D]. 南京: 南京工业大学, 2006.
[3] 武建锋,荆文芳. 双机系统可靠性研究[J]. 微型电脑应用, 2005,21(12): 13-14.
[4] 李宏亮,胡国平,胡华平,等. 强实时双系统中容错技术研究[J]. 国防科技大学学报, 2000,22(6): 57-59.
[5] 姜坚华. 双机热备系统的技术研究和具体实现[J]. 微型电脑应用, 2004,20(3): 7-9.
[6] 郑浩,要鹍. 基于DRBD实现虚拟化系统的双机热备[J].通化师范学院学报, 2016,37(8): 69-71.
[7] 王强. 信息实时备份平台研究与实现[D]. 成都: 电子科技大学, 2013.
[8] 张鹏,李飞,刘之良. 基于状态检测的服务器热备方案设计与实现[J]. 电脑编程技巧与维护, 2014(14): 76-77.
[9] 史文路,胡平. 双机热备份系统的研究与改进[J]. 微处理机, 2008,29(3): 180-182.
[10] 张艺林. 运营商交换核心网元容灾备份技术的应用[J].电子技术与软件工程, 2017(9): 188. ★
Design and Implementation of MiniEPC High Availability System Based on OpenSAF
TAO Qin1, WANG Wenjing2, WANG Zhiyong1
(1. Wuhan Hongxin Communication Technology Co., Ltd., Wuhan 430205, China;2. Wuhan Post and Telecommunications Science Research Institute, Wuhan 430074, China)
In order to achieve the user experience of low delay and uninterrupted network and deal with the communication network paralysis resulted from the interruption of the key service of EPC server, advantages and disadvantages of three techniques to guarantee the high-availability of the system at present were analyzed, an EPC high availability redundant system based on OpenSAF open source project was designed. Experiments show that the high availability system not only has very small delay, but also achieves the uninterrupted EPC key service no impact on user to guarantee the long-term and reliable service of core network.
OpenSAF EPC high availability redundant system
10.3969/j.issn.1006-1010.2017.17.012
TN929.5
A
1006-1010(2017)17-0060-06
陶琴,汪文晶,王志勇. 基于OpenSAF的MiniEPC热备系统设计与实现[J]. 移动通信, 2017,41(17): 60-65.
2017-06-26
责任编辑:文竹 liuwenzhu@mbcom.cn
陶琴:毕业于武汉理工大学,现任武汉虹信通信技术有限责任公司软件工程师,从事无线通信设备研发等相关工作。
汪文晶:硕士研究生就读于武汉邮电科学研究院,主要从事无线通信系统,4G TD-LTE、NanoCell方面的应用研究等工作。
王志勇:毕业于清华大学,现任职于武汉虹信通信技术有限责任公司,具有多年无线通信设备研究工作经验,获得多个通信相关专利。