崔希寧
(中國移動北京公司信息系統部 北京 100027)
目前廣泛使用的系統高可用技術是負載均衡,主機HA,存儲BCV、SRDF,數據庫RAC,應用系統應急?;谝陨霞夹g,在電信BOSS中建設了各種高可用系統,如雙機系統、RAC系統、BCV系統、應急系統、災備系統。這些系統對BOSS的服務保障能力提高了一個等級,但是在BOSS發(fā)生重大災難或者出現數據庫崩潰等重大故障時,出現重大的業(yè)務操作邏輯錯誤時,以上方法均不能兼顧保障具有較高的RTO和QoS。
雖然業(yè)務應急可以達到快速切換,但業(yè)務服務水平因為沒有底層數據和運算能力的支持其內容范圍受到很大牽制。大部分業(yè)務以緩存,應急開通為主,對交互復雜,實時反饋的業(yè)務很難實現。
本文綜合以上技術特點,從應用中間層引入控制理論的PID算法改造傳統的負載分擔和切換算法機制,解決以往負載分擔擴展能力差,切換業(yè)務停頓時間長的問題。同時,從數據層改造standby,引入基于日志的數據庫復制的多點計算(多活open)技術,從而構建整個業(yè)務動態(tài)擴展零間斷切換的高可用性構架。
CBOSS主要業(yè)務功能為:與集團CBOSS交互,發(fā)送及接收異地業(yè)務,并完成與電信運營支撐系統的信息交互;完成數據業(yè)務的訂購關系保存及與其相關的所有業(yè)務的受理,變更及銷戶等工作。
其以往高可用性構架方式如圖1所示。
應用層采用F5做負載分擔,數據庫采用HA做雙機冷備。中間件TIBCO應用服務器采用多臺主機組成服務器組,使用F5負載分擔技術,可以有效地避免單點故障,但處理能力固定無法做到動態(tài)擴展。當面臨大的突發(fā)負荷時,性能無法保障,涉及主機和存儲的故障由于數據庫是冷備的方式,故障切換和接管時間較長。
圖1 CBOSS系統物理架構
CBOSS數據庫使用RAID(0+1)鏡像保護,當前只有定期BCV鏡像備份方式,這種方式只能提供簡單的數據保護,同時,由于分離周期不能過長,存在數據丟失風險,只具備簡單應急和容災功能。
問題場景分析如下。
·CBOSS數據庫存儲物理損壞,業(yè)務無法辦理,由于當前BCV鏡像每天定期分離,數據不能保證實時同步,即使使用BCV數據庫也無法立刻提供服務,存在數據丟失風險。
·CBOSS數據庫異常掛起,重啟后能夠恢復,由于數據庫連接中斷,需要手工重啟相關TIBCO應用,恢復時間過長。
·人為操作刪除數據庫對象,如DROP TABLE,導致業(yè)務中斷,數據丟失,此時如使用保持鏡像的BCV模式,數據將同步丟失,無法恢復;如采用定期鏡像分離的BCV模式,將丟失從分離時間到故障時間的數據,且恢復需要較長時間。
·應用進程異常hang死,java虛擬機發(fā)生內存泄露或bug等問題導致應用無法響應,計算能力急劇下降,此時只能重起應用,但操作時間過長。
現有業(yè)務構架存在的核心問題是系統能力受限和業(yè)現切換時間過長。傳統的高可用方法和負載均衡方法無法滿足一級BOSS業(yè)務連續(xù)性分鐘級需求。
從數據層、應用層建立多點計算,動態(tài)擴展的分布式實時在線的計算構架,實現能力擴展和故障切換的自適應結構。優(yōu)化后的系統構架如圖2所示。
本構架改造以往構架,在中間應用層增加了能力擴展節(jié)點和錯誤冗余節(jié)點,并引入PID控制原理改造負載分擔算法形成PID-F5控制器。在數據層與中間層相適應搭建分布式計算的數據庫網格池,增加了基于日志同步的激活狀態(tài)(open)的多個數據庫運算節(jié)點。
(1)控制機制和結構
PID是基礎的控制算法,能夠實現反饋控制零誤差、快速響應的核心控制內容,PID解決了自動控制理論所要解決的最基本問題,即系統的穩(wěn)定性、快速性和準確性。調節(jié)PID的參數,可實現在系統穩(wěn)定的前提下,兼顧系統的帶載能力和抗擾能力。比例控制(P)是一種最簡單的控制方式,其控制器的輸出與輸入誤差信號成比例關系。當僅有比例控制時系統輸出存在穩(wěn)態(tài)誤差(steady-state error)。對一個自動控制系統,為了消除穩(wěn)態(tài)誤差,在控制器中必須引入“積分項”。比例+積分(PI)控制器,可以使系統在進入穩(wěn)態(tài)后無穩(wěn)態(tài)誤差。對于電信系統允許穩(wěn)態(tài)誤差的存在,實踐中不必追求穩(wěn)態(tài)誤差為0。微分(D)控制解決控制中的有較大慣性組件(環(huán)節(jié))或有滯后(delay)組件問題,使控制能預測誤差變化的趨勢。對于結構復雜的電信系統引入微分控制可以解決運算能力控制中超調或滯后問題,使響應迅速又不至于給其他組件帶來大的沖擊和影響。傳統的負載均衡機制根本上是基于開環(huán)比例控制。目前,中間層weblogic等的能力擴展(線程管理)對于業(yè)務響應從本質上都是基于比例的開環(huán)控制,其滯后性明顯,且無法跨節(jié)點擴展和自動容災備份切換。F5網絡層產品本質上是負載均衡功能同樣無法完成自動的節(jié)點擴展和冗余切換。中間層等的線程擴展算法是根據請求的數量按固定步長和比例增加系統資源。其沒有考慮負荷增加/變化的速度和并形成對整個系統資源反饋的閉環(huán)結構。PID-F5動態(tài)擴展機制利用PID控制原理并引入對系統資源的切換因子,根據采集到的數據周期性地對當前負載數據的偏差進行糾正,其在能力的動態(tài)擴展和自適應調節(jié)方面有良好的表現。
當節(jié)點的能力不足時,PID-F5節(jié)點控制器會自動把可擴展節(jié)點增加到節(jié)點池增加運算能力,在極端情況下可以完成節(jié)點切換將應用引入冗余備份節(jié)點。
(2)PID-F5算法的基本數據結構定義
基本配置信息:運算節(jié)點池列表,服務器類型表(server type table,STT),其記錄服務類型Ti及其對應的服務器Si,包括一般節(jié)點,這個節(jié)點上只有cboss應用單獨運行。能力擴展節(jié)點,這個節(jié)點服務器上平時在線CPU運行其他應用,需要cboss能力擴展時運行cboss應用。錯誤冗余節(jié)點本服務器上只運行冗余的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動態(tài)信號計算;
·根據控制信號倒入響應系統擴展系統能力;
·繼續(xù)采樣反饋控制結果。
算法實現程序由iRules編程。
數據層能夠做到能力負載分擔和切換的零RTO,并且能夠起到同時滿足數據的系統保護和邏輯保護的功能,必須基于日志事務的數據同步雙活(open)結構。采用基于日志數據同步方案可以實現可控時間窗口內基于交易的數據一致,保證分布式數據節(jié)點的數據一致性基于時間可控。數據保護功能對比見表1。
從對比中可以得到基于日志的數據復制保護方案,該方案結合了其他各方案在數據安全性、業(yè)務連續(xù)性、負載分擔分布計算的優(yōu)點。
基于日志數據庫多點計算數據一致性和效率的分析和試驗:數據一致性機制由復制過程校驗點文件保證,數據以交易為單位復制,復制進程由捕獲分析、傳遞、分發(fā)應用三部分組成。Capture、Pump、Delivery三個進程將當前位置保存在一個checkpoint file,發(fā)生錯誤時可以快速恢復數據完整性,防止數據丟失。數據同步效率問題,因為基于日志分析,從原理上可以充分應用系統CPU并發(fā)能力保證,同步時延。從壓力試驗看時延窗口可以通過分發(fā)進程個數線性控制,在秒級可以和生產保持一致。
表1 數據保護功能對比
Max Load(~8 000 ops/sec/18.5 GB/hr redo generation),在redo log量 產生<500 MB/min的情況下,數據延遲<10 s。
從實驗看出基于日志的數據傳輸技術的特點:目標端的系統資源消耗并不對源端敏感;加載延遲相對于滯后很小。因此,只要充分提高日志分析和傳輸的效率即可獲得較高的數據一致性。
本自適應系統在突發(fā)的業(yè)務壓力和故障中通過對可擴展節(jié)點和容災節(jié)點的調度,保障CBOSS重要業(yè)務的服務連續(xù)性,力保服務質量不明顯降低,故障切換沒有明顯延遲,本系統可以自動運行也可以人工干預運行。
手工切換:停止自動的PID-F5控制程序,人工在f5-gui界面操作服務器pool的node狀態(tài)up/down動態(tài)擴展或切換。
自動切換:初始化PID-F5,根據考核指標和業(yè)務KPI設定rm、rt、rs控制參數 ,啟動PID-F5控制程序,通過控制 pool中活動成員或通過virtual server的rules運行系統自動完成響應時間的控制或切換。具有良好的控制特性和健壯性。
當cboss系統接近不能達到服務KPI指標,影響服務質量,保障系統實際運行情況如下:數據庫達到數據一致的接管時間是小于2 s,所有應用重新接續(xù)時間是小于3 s。整體上經過5 s達到全業(yè)務接管運營,性能恢復到故障之前。原生產節(jié)點故障恢復之后,從系統級得到數據回收腳本,確認后自動運行數據回收腳本。
在具有較大負荷情況下從從仿真性能曲線對比上可以看出,PID-F5自適應算法較基于線程的固定步長控制,具有更好的健壯性,響應更加迅速。
(1)PID-F5實現一種云計算動態(tài)擴展算法
BEA Weblogic和IBM Websphere是目前兩大主流的J2EE應用服務器,它們都具有負載平衡能力和能力調節(jié)機制,但是僅支持一些常見的負載平衡算法,如Round Robin(缺 省)、Weight-Based 和隨 機 算 法,不 能 根 據系統負載信息進行決策,也不能進行負載反饋,不具有自適應控制能力,在負荷調節(jié)方面也僅僅是基于步長的比例調節(jié)。
PID-F5將控制理論的基本原理引入負荷調節(jié)和能力控制,為分布式計算、彈性計算系統、云并行計算的多點計算技術的能力擴展方法提供一種可行的思路和實現方法。本方法可以實現計算能力的自適應動態(tài)擴展,提供很好的健壯性。
(2)基于日志復制的數據庫分布式計算
通過基于日志的數據同步技術實現數據庫在一定時間窗口下的分布計算,同時起到對數據層邏輯保護和物理保護的功能。這是對數據庫分布式計算rac功能和數據保護功能standby功能的結合。這種新型架構可以滿足多種業(yè)務需求:容災、在線分析、應急、批量業(yè)務等多種情形,本文通過校驗文件和并行加載方案實現了基于日志復制的數據一致性和效率問題。
(3)多活數據中心構架實現容災多種業(yè)務需求
推廣一級BOSS這種多中心的構架,可以實現容災,快速應急,數據在線分析OLAP中心,數據抽取(ETL)中心等多種系統。突破以往基于存儲容災中心投資巨大,備份中心平時無法使用的問題,突破應急中心業(yè)務覆蓋和切換時間問題,解決數據質量稽查數據環(huán)境和數據實時抽取數據環(huán)境問題,解決生產壓力(大查詢壓力和后臺批量業(yè)務壓力)分流問題。為這些問題提供很好的參考方案。
由于采用基于日志的雙活數據中心和節(jié)點復用動態(tài)擴展結構,去掉了大量基于存儲基于主機等的SAN存儲部件的采購成本和主機資源 ,復用現有的生產主機和冷備份主機和備份存儲,實現整個系統結構的優(yōu)化,業(yè)務操作的合理布局,節(jié)省了巨大的建設投資。
電信系統CBOSS自適應保障系統的成功部署與演練,使CBOSS在發(fā)生災難或異常時仍然能在秒級快速對外提供全業(yè)務服務,使業(yè)務支撐保障能力達到一個新的水平,極大增強了CBOSS的業(yè)務連續(xù)性運營能力。