馮立峰 郭彥玲
【摘要】 電信運(yùn)營(yíng)商的CRM系統(tǒng)以支撐客戶(hù)為導(dǎo)向的運(yùn)營(yíng)體系的重要管理系統(tǒng),本文在認(rèn)真總結(jié)分析了某電信運(yùn)營(yíng)商CRM系統(tǒng)的組網(wǎng)架構(gòu)后,針對(duì)業(yè)務(wù)特點(diǎn),設(shè)計(jì)了基于負(fù)載均衡+TAF特性實(shí)現(xiàn)CRM系統(tǒng)高可用性的方案,項(xiàng)目的成果具有很強(qiáng)的實(shí)用性和可推廣價(jià)值。
【關(guān)鍵詞】 負(fù)載均衡 TAF CRM 高可用
一、項(xiàng)目背景
CRM系統(tǒng)是電信運(yùn)營(yíng)商支撐以客戶(hù)為導(dǎo)向的運(yùn)營(yíng)體系的信息系統(tǒng),其核心軟件包括web中間件、oracle數(shù)據(jù)庫(kù)等,為了保障系統(tǒng)的高可用性,相關(guān)模塊都配置了雙節(jié)點(diǎn)或多節(jié)點(diǎn);然而,由于軟件版本及業(yè)務(wù)功能的限制,存在以下的情況:
web中間件的服務(wù)端口正常,但是其承載的業(yè)務(wù)已經(jīng)異常時(shí),客戶(hù)端的請(qǐng)求仍然會(huì)被分發(fā)到異常的 server上,從而導(dǎo)致訪(fǎng)問(wèn)該服務(wù)器的業(yè)務(wù)出現(xiàn)異常;
tuxedo中間件采用XA方式訪(fǎng)問(wèn)oracle數(shù)據(jù)庫(kù),其采用長(zhǎng)連接方式,當(dāng)RAC數(shù)據(jù)庫(kù)的某個(gè)實(shí)例出現(xiàn)故障時(shí),會(huì)導(dǎo)致連接此實(shí)例的tuxedo無(wú)法正常訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),造成業(yè)務(wù)異常。
二、技術(shù)方案
2.1基于負(fù)載均衡實(shí)現(xiàn)weblogic高可用性
為了使得負(fù)載均衡器上能夠探測(cè)CRM WEB業(yè)務(wù)程序的真實(shí)可用性,并能夠自動(dòng)將異常的weblogic server下線(xiàn),需要啟用負(fù)載均衡的的高級(jí)健康檢查策略,并且WEB程序要增加健康檢查頁(yè)面,要求該頁(yè)面能夠準(zhǔn)確的體現(xiàn)其所在server的業(yè)務(wù)可用性。
首先,改造CRM的WEB程序,增加健康檢查頁(yè)面health.jsp,該頁(yè)面的內(nèi)部邏輯為首先判斷服務(wù)端口是否正常,然后調(diào)用WTC數(shù)據(jù)源驗(yàn)證tuxedo服務(wù)是否正常,如上述兩項(xiàng)都正常則返回標(biāo)識(shí)業(yè)務(wù)正常的關(guān)鍵字。通過(guò)訪(fǎng)問(wèn)該頁(yè)面,就可以有效的判斷weblogic server上WEB業(yè)務(wù)的可用性,只有在業(yè)務(wù)真正可用狀態(tài)下,頁(yè)面才會(huì)正常顯示”success”關(guān)鍵字。
然后,通過(guò)在負(fù)載均衡器上配置啟用CRM系統(tǒng)web資源池的健康檢查策略,檢測(cè)手段為HTTP檢測(cè),匹配模式為字符串匹配,同時(shí)將匹配字符串配置對(duì)應(yīng)關(guān)鍵字,從而實(shí)現(xiàn)異常server的自動(dòng)探測(cè)發(fā)現(xiàn)和下線(xiàn)。
2.2基于TAF實(shí)現(xiàn)tuxedo調(diào)用oracle數(shù)據(jù)庫(kù)的高可用性
ORACLE RAC數(shù)據(jù)庫(kù)集群環(huán)境中,當(dāng)集群中的一個(gè)節(jié)點(diǎn)出現(xiàn)異常宕機(jī)后,新的事務(wù)會(huì)被自動(dòng)路由到其他的可用實(shí)例上;但是重路由指向時(shí)需要重點(diǎn)保障那些在宕機(jī)時(shí)正在發(fā)起的事務(wù)。通過(guò)研究測(cè)試ORACLE RAC數(shù)據(jù)庫(kù),發(fā)現(xiàn)TAF特性可以實(shí)現(xiàn)將失敗節(jié)點(diǎn)的事務(wù)恢復(fù)到另外的正常節(jié)點(diǎn)而無(wú)需人工中斷處理。
TAF特性提供兩種事務(wù)透明轉(zhuǎn)移特性:
SELECT failover : Oralce Net會(huì)在在交易過(guò)程中跟蹤發(fā)生的所有 SELECT 語(yǔ)句,如果到實(shí)例的連接中斷,Oracle Net建立到另外的RAC節(jié)點(diǎn)的連接,并重新執(zhí)行SELECT 語(yǔ)句,重新定位游標(biāo)以使得客戶(hù)端能夠繼續(xù)接收數(shù)據(jù)。但是該種模式下,如果實(shí)例節(jié)點(diǎn)崩潰期間,客戶(hù)端正在處理一個(gè)DML事務(wù),那么在自動(dòng)切換到可用節(jié)點(diǎn)后,需要客戶(hù)端程序自己處理事務(wù)回滾,否則無(wú)法繼續(xù)訪(fǎng)問(wèn)。
SESSION failover : 當(dāng)客戶(hù)端到實(shí)例的連接中斷時(shí),Oracle Net會(huì)自動(dòng)重新創(chuàng)建新的連接到可用節(jié)點(diǎn),在此期間的任何事務(wù)都會(huì)丟棄,這種模式較適合于OLTP系統(tǒng)。
針對(duì)CRM業(yè)務(wù)系統(tǒng)的特性,我們選擇”SESSION failover”方式進(jìn)行實(shí)施。
首先,確認(rèn)交易中間件對(duì)TAF特性的支持;
然后,配置TUXEDO服務(wù)器上ORACLE客戶(hù)端的tnsnames.ora,以支持TAF特性,配置要點(diǎn)為“LOAD_BALANCE = off”、“(FAILOVER = on)”、“(TYPE=session)”。
三、效果
通過(guò)上述的兩種技術(shù)手段,實(shí)現(xiàn)CRM:
系統(tǒng)中的某一個(gè)Weblogic服務(wù)異常故障時(shí),系統(tǒng)能夠自動(dòng)識(shí)別并下線(xiàn)異常節(jié)點(diǎn),同時(shí)將業(yè)務(wù)負(fù)載轉(zhuǎn)移至其他正常節(jié)點(diǎn);系統(tǒng)的ORACLE RAC數(shù)據(jù)庫(kù)的某一個(gè)節(jié)點(diǎn)異常故障時(shí),tuxedo能夠利用TAF特性實(shí)現(xiàn)故障時(shí)的業(yè)務(wù)透明遷移,及時(shí)自動(dòng)將業(yè)務(wù)切換到正常實(shí)例節(jié)點(diǎn)。
本技術(shù)方案已經(jīng)在CRM系統(tǒng)實(shí)施,實(shí)施后提高了系統(tǒng)的運(yùn)行穩(wěn)定性,大幅降低了故障發(fā)生次數(shù)和故障恢復(fù)時(shí)間,系統(tǒng)的可用性得到很大程度提升。
參 考 文 獻(xiàn)
[1]. 郭欣. 構(gòu)建高性能Web站點(diǎn)[M].北京:電子工業(yè)出版社,2012.
[2]. 周亮, 田悅, 趙婧. Oracle DBA實(shí)戰(zhàn)攻略:運(yùn)維管理、診斷優(yōu)化、高可用與最佳實(shí)踐[J].北京: 機(jī)械工業(yè)出版社,2013.
[3]. James Little , Peter Membrey , David Hows. Practical Load Balancing: Ride the Performance Tiger [M]. APress; 1,2012