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