崔希宁
(中国移动北京公司信息系统部 北京 100027)
目前广泛使用的系统高可用技术是负载均衡,主机HA,存储BCV、SRDF,数据库RAC,应用系统应急。基于以上技术,在电信BOSS中建设了各种高可用系统,如双机系统、RAC系统、BCV系统、应急系统、灾备系统。这些系统对BOSS的服务保障能力提高了一个等级,但是在BOSS发生重大灾难或者出现数据库崩溃等重大故障时,出现重大的业务操作逻辑错误时,以上方法均不能兼顾保障具有较高的RTO和QoS。
虽然业务应急可以达到快速切换,但业务服务水平因为没有底层数据和运算能力的支持其内容范围受到很大牵制。大部分业务以缓存,应急开通为主,对交互复杂,实时反馈的业务很难实现。
本文综合以上技术特点,从应用中间层引入控制理论的PID算法改造传统的负载分担和切换算法机制,解决以往负载分担扩展能力差,切换业务停顿时间长的问题。同时,从数据层改造standby,引入基于日志的数据库复制的多点计算(多活open)技术,从而构建整个业务动态扩展零间断切换的高可用性构架。
CBOSS主要业务功能为:与集团CBOSS交互,发送及接收异地业务,并完成与电信运营支撑系统的信息交互;完成数据业务的订购关系保存及与其相关的所有业务的受理,变更及销户等工作。
其以往高可用性构架方式如图1所示。
应用层采用F5做负载分担,数据库采用HA做双机冷备。中间件TIBCO应用服务器采用多台主机组成服务器组,使用F5负载分担技术,可以有效地避免单点故障,但处理能力固定无法做到动态扩展。当面临大的突发负荷时,性能无法保障,涉及主机和存储的故障由于数据库是冷备的方式,故障切换和接管时间较长。
图1 CBOSS系统物理架构
CBOSS数据库使用RAID(0+1)镜像保护,当前只有定期BCV镜像备份方式,这种方式只能提供简单的数据保护,同时,由于分离周期不能过长,存在数据丢失风险,只具备简单应急和容灾功能。
问题场景分析如下。
·CBOSS数据库存储物理损坏,业务无法办理,由于当前BCV镜像每天定期分离,数据不能保证实时同步,即使使用BCV数据库也无法立刻提供服务,存在数据丢失风险。
·CBOSS数据库异常挂起,重启后能够恢复,由于数据库连接中断,需要手工重启相关TIBCO应用,恢复时间过长。
·人为操作删除数据库对象,如DROP TABLE,导致业务中断,数据丢失,此时如使用保持镜像的BCV模式,数据将同步丢失,无法恢复;如采用定期镜像分离的BCV模式,将丢失从分离时间到故障时间的数据,且恢复需要较长时间。
·应用进程异常hang死,java虚拟机发生内存泄露或bug等问题导致应用无法响应,计算能力急剧下降,此时只能重起应用,但操作时间过长。
现有业务构架存在的核心问题是系统能力受限和业现切换时间过长。传统的高可用方法和负载均衡方法无法满足一级BOSS业务连续性分钟级需求。
从数据层、应用层建立多点计算,动态扩展的分布式实时在线的计算构架,实现能力扩展和故障切换的自适应结构。优化后的系统构架如图2所示。
本构架改造以往构架,在中间应用层增加了能力扩展节点和错误冗余节点,并引入PID控制原理改造负载分担算法形成PID-F5控制器。在数据层与中间层相适应搭建分布式计算的数据库网格池,增加了基于日志同步的激活状态(open)的多个数据库运算节点。
(1)控制机制和结构
PID是基础的控制算法,能够实现反馈控制零误差、快速响应的核心控制内容,PID解决了自动控制理论所要解决的最基本问题,即系统的稳定性、快速性和准确性。调节PID的参数,可实现在系统稳定的前提下,兼顾系统的带载能力和抗扰能力。比例控制(P)是一种最简单的控制方式,其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(steady-state error)。对一个自动控制系统,为了消除稳态误差,在控制器中必须引入“积分项”。比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。对于电信系统允许稳态误差的存在,实践中不必追求稳态误差为0。微分(D)控制解决控制中的有较大惯性组件(环节)或有滞后(delay)组件问题,使控制能预测误差变化的趋势。对于结构复杂的电信系统引入微分控制可以解决运算能力控制中超调或滞后问题,使响应迅速又不至于给其他组件带来大的冲击和影响。传统的负载均衡机制根本上是基于开环比例控制。目前,中间层weblogic等的能力扩展(线程管理)对于业务响应从本质上都是基于比例的开环控制,其滞后性明显,且无法跨节点扩展和自动容灾备份切换。F5网络层产品本质上是负载均衡功能同样无法完成自动的节点扩展和冗余切换。中间层等的线程扩展算法是根据请求的数量按固定步长和比例增加系统资源。其没有考虑负荷增加/变化的速度和并形成对整个系统资源反馈的闭环结构。PID-F5动态扩展机制利用PID控制原理并引入对系统资源的切换因子,根据采集到的数据周期性地对当前负载数据的偏差进行纠正,其在能力的动态扩展和自适应调节方面有良好的表现。
当节点的能力不足时,PID-F5节点控制器会自动把可扩展节点增加到节点池增加运算能力,在极端情况下可以完成节点切换将应用引入冗余备份节点。
(2)PID-F5算法的基本数据结构定义
基本配置信息:运算节点池列表,服务器类型表(server type table,STT),其记录服务类型Ti及其对应的服务器Si,包括一般节点,这个节点上只有cboss应用单独运行。能力扩展节点,这个节点服务器上平时在线CPU运行其他应用,需要cboss能力扩展时运行cboss应用。错误冗余节点本服务器上只运行冗余的cboss应用。初始化参数,其包括系统容忍响应时间 rt,系统设定相应时间 rs,系统不可容忍时间、系统最大响应时间 rm(rm>rt>r>rs)。
系统实时负荷因子为L,由CPU利用率cpu% ×k1、内存利用率 memory%×k2、网络负载流量net%、磁盘I/O访问率I/O%×k3组成,根据收集到的这些负载参数依各自的权值按以下公式计算负载:
L=k1×cpu%+k2×memory%+k3×I/O% (其中 ki由专家系统根据工程试验得出 ∑ki=1)
有效反馈时间:系统响应时间由两个维度衡量:请求等待队列长度(request list,RL),用户请求放入此队列中等待处理;服务器线程粘贴时间即平均响应时间(Rtime)。
根据收集到的这些负载参数依各自的权值按公式计算负载:
Ri=k1×RL+k2×Rtime (其中ki由专家系统根据工程试验得出 ∑ki=1)
输出数组:[stepi,swi]扩展步长 stepi,切换开关量 swi。
(3)PID-F5算法的步骤和流程
确定系统之后根据试验确定比例增益P,积分时间常数Td,其中pi算法参数由专家系统经过工程试验方法得出。
PID-F5算法的流程如图3所示。
PID-F5算法的具体步骤为:
·根据粘贴时长和响应时间计算实际负荷 r(i)[ri];
·根据控制返回条件决定是否结束pid控制;
·根据切换开关算法确定是否需要容灾切换;
·根据结果进行pid动态信号计算;
·根据控制信号倒入响应系统扩展系统能力;
·继续采样反馈控制结果。
算法实现程序由iRules编程。
数据层能够做到能力负载分担和切换的零RTO,并且能够起到同时满足数据的系统保护和逻辑保护的功能,必须基于日志事务的数据同步双活(open)结构。采用基于日志数据同步方案可以实现可控时间窗口内基于交易的数据一致,保证分布式数据节点的数据一致性基于时间可控。数据保护功能对比见表1。
从对比中可以得到基于日志的数据复制保护方案,该方案结合了其他各方案在数据安全性、业务连续性、负载分担分布计算的优点。
基于日志数据库多点计算数据一致性和效率的分析和试验:数据一致性机制由复制过程校验点文件保证,数据以交易为单位复制,复制进程由捕获分析、传递、分发应用三部分组成。Capture、Pump、Delivery三个进程将当前位置保存在一个checkpoint file,发生错误时可以快速恢复数据完整性,防止数据丢失。数据同步效率问题,因为基于日志分析,从原理上可以充分应用系统CPU并发能力保证,同步时延。从压力试验看时延窗口可以通过分发进程个数线性控制,在秒级可以和生产保持一致。
表1 数据保护功能对比
Max Load(~8 000 ops/sec/18.5 GB/hr redo generation),在redo log量 产生<500 MB/min的情况下,数据延迟<10 s。
从实验看出基于日志的数据传输技术的特点:目标端的系统资源消耗并不对源端敏感;加载延迟相对于滞后很小。因此,只要充分提高日志分析和传输的效率即可获得较高的数据一致性。
本自适应系统在突发的业务压力和故障中通过对可扩展节点和容灾节点的调度,保障CBOSS重要业务的服务连续性,力保服务质量不明显降低,故障切换没有明显延迟,本系统可以自动运行也可以人工干预运行。
手工切换:停止自动的PID-F5控制程序,人工在f5-gui界面操作服务器pool的node状态up/down动态扩展或切换。
自动切换:初始化PID-F5,根据考核指标和业务KPI设定rm、rt、rs控制参数 ,启动PID-F5控制程序,通过控制 pool中活动成员或通过virtual server的rules运行系统自动完成响应时间的控制或切换。具有良好的控制特性和健壮性。
当cboss系统接近不能达到服务KPI指标,影响服务质量,保障系统实际运行情况如下:数据库达到数据一致的接管时间是小于2 s,所有应用重新接续时间是小于3 s。整体上经过5 s达到全业务接管运营,性能恢复到故障之前。原生产节点故障恢复之后,从系统级得到数据回收脚本,确认后自动运行数据回收脚本。
在具有较大负荷情况下从从仿真性能曲线对比上可以看出,PID-F5自适应算法较基于线程的固定步长控制,具有更好的健壮性,响应更加迅速。
(1)PID-F5实现一种云计算动态扩展算法
BEA Weblogic和IBM Websphere是目前两大主流的J2EE应用服务器,它们都具有负载平衡能力和能力调节机制,但是仅支持一些常见的负载平衡算法,如Round Robin(缺 省)、Weight-Based 和随 机 算 法,不 能 根 据系统负载信息进行决策,也不能进行负载反馈,不具有自适应控制能力,在负荷调节方面也仅仅是基于步长的比例调节。
PID-F5将控制理论的基本原理引入负荷调节和能力控制,为分布式计算、弹性计算系统、云并行计算的多点计算技术的能力扩展方法提供一种可行的思路和实现方法。本方法可以实现计算能力的自适应动态扩展,提供很好的健壮性。
(2)基于日志复制的数据库分布式计算
通过基于日志的数据同步技术实现数据库在一定时间窗口下的分布计算,同时起到对数据层逻辑保护和物理保护的功能。这是对数据库分布式计算rac功能和数据保护功能standby功能的结合。这种新型架构可以满足多种业务需求:容灾、在线分析、应急、批量业务等多种情形,本文通过校验文件和并行加载方案实现了基于日志复制的数据一致性和效率问题。
(3)多活数据中心构架实现容灾多种业务需求
推广一级BOSS这种多中心的构架,可以实现容灾,快速应急,数据在线分析OLAP中心,数据抽取(ETL)中心等多种系统。突破以往基于存储容灾中心投资巨大,备份中心平时无法使用的问题,突破应急中心业务覆盖和切换时间问题,解决数据质量稽查数据环境和数据实时抽取数据环境问题,解决生产压力(大查询压力和后台批量业务压力)分流问题。为这些问题提供很好的参考方案。
由于采用基于日志的双活数据中心和节点复用动态扩展结构,去掉了大量基于存储基于主机等的SAN存储部件的采购成本和主机资源 ,复用现有的生产主机和冷备份主机和备份存储,实现整个系统结构的优化,业务操作的合理布局,节省了巨大的建设投资。
电信系统CBOSS自适应保障系统的成功部署与演练,使CBOSS在发生灾难或异常时仍然能在秒级快速对外提供全业务服务,使业务支撑保障能力达到一个新的水平,极大增强了CBOSS的业务连续性运营能力。