石晉
[摘 要] 隨著遼河油田地質信息系統(tǒng)在勘探開發(fā)研究中應用的不斷深入,高瀏覽量和訪問量對系統(tǒng)的后臺數據庫提出了較高的要求。文章在Oracle RAC技術基礎上,實施構建了油田地質信息高可用性數據庫系統(tǒng),并通過內存管理及負載均衡提升系統(tǒng)運行效率。
[關鍵詞] Oracle RAC;高可用性;油田地質;內存管理;負載均衡
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2016. 07. 082
[中圖分類號] P628 [文獻標識碼] A [文章編號] 1673 - 0194(2016)07- 0179- 04
0 引 言
遼河油田地質信息系統(tǒng)自2006年運行以來,作為面向全油田提供服務的數據處理門戶網站,依托瀏覽查詢、數據加載、數據審核等業(yè)務系統(tǒng)、歷史資料庫與臨時管理庫等眾多資源收集所需信息,通過一體化的底層數據模型以及多種編程技術的應用,形成涵蓋井位坐標、井屬性、井斜、有效厚度、分層、解釋表、測井、錄井、試油等13類油田生產數據、能夠實現數據、表格、報表、圖件一體化應用的綜合信息系統(tǒng)。油田地質信息系統(tǒng)的特點是覆蓋面廣,數據量大,信息種類多,高瀏覽量和訪問量對數據庫系統(tǒng)有較高的要求,要求能實現大量用戶并發(fā)訪問的同時保障其24×7的可用性、可靠性、故障快速恢復。保證數據庫的高可用性,直接影響遼河油田勘探開發(fā)研究水平。
1 ORACLE RAC技術
Oracle RAC(RAC:Real Application Cluster),即Oracle實時應用集群,是Oracle 數據庫的一種高可用解決方案,以網格計算思想而產生的[1]。在RAC環(huán)境中,Oracle運行于兩個或多個計算機節(jié)點上,各節(jié)點部署集群組件、數據庫監(jiān)聽、數據實例、數據庫服務等,而數據文件則部署在獨立存儲中,被各節(jié)點共享使用[2]。節(jié)點中的數據庫實例通過高速緩存合并機制(Cache Fushion)進行數據同步。
Oracle數據庫集群具有負載均衡(Load Balance)和透明應用故障切換(Failover)兩大特征。負載均衡是把數據訪問請求分配到集群中的各節(jié)點中,從而提高數據庫系統(tǒng)的整體吞吐能力;透明應用故障切換提供24×7提供不間斷的數據訪問,當一個節(jié)點出現故障時,連接在該節(jié)點上的終端用戶會被自動重新連接到其余正常的數據庫節(jié)點上,無需手工連接,該切換對客戶端的數據訪問是透明的[3-4]。
應用服務的運行離不開數據,共享數據的集中存儲和數據量的不斷增長,必然要求數據庫必須具備較高的運行性能和穩(wěn)定性。在傳統(tǒng)的單機環(huán)境中,通常是將數據庫配置在一臺服務器上,存在著潛在的不穩(wěn)定威脅,主要表現在數據丟失的危險性,負載不能動態(tài)平衡,無法實現故障時的容錯和無斷點恢復等。而采用Oracle RAC集群技術,動態(tài)的進行負載均衡,可提高訪問數據庫的效率,提高數據中心的可靠性和抗災難性,為信息系統(tǒng)提供一個高效、可靠的數據平臺。
2 實施方案
2.1 環(huán)境規(guī)劃
(1)數據庫服務器。采用4臺Oracle SPARCT4-4服務器:4×SPARC T4 八核 3.0G Hz 處理器、512 G內存、4×600 GB 10 K rpm SAS 磁盤,擁有出色的單線程和多線程吞吐性能,提供適合于大型數據庫以及地質繪圖的綜合應用服務。
(2)軟件平臺。操作系統(tǒng)采用Solaris 10,數據庫軟件采用Oracle 11g及Oracle 11g RAC相關組件。
(3)存儲服務器。使用2臺HDS VSP存儲陣列,具有強大的可橫向、縱向及深度的擴展功能,為共享存儲虛擬化的多個應用提供安全的多用戶環(huán)境。Oracle RAC集群是完全共享式的體系架構,因此存儲機制采用ORACLE自帶的自動存儲管理(ASM),兼顧磁盤間大量的IO快速讀寫及聯(lián)機磁盤的動態(tài)平衡。每臺HDS均劃分出25個250 G的LDEV,組成ASM的+DATA卷組,用于存放數據庫數據;3個1 GB的LDEV,組成asm的+OCRVT卷組,用于存放控制文件、參數文件、聯(lián)機日志文件等;其中一臺HDS劃分出15個250 GB的LDEV,組成ASM的+ARCH卷組,用于存放Oracle數據庫的自動歸檔文件;這些卷組均作為共享磁盤,分配給4臺數據庫服務器。
(4)網絡。采用2臺Brocade 5100交換機,搭建SAN存儲網絡,避免單點故障,保障SAN環(huán)境的安全可靠性;采用2臺Infiniband交換機實現私有網絡,保障私有網絡的可靠性與失敗切換。
2.2 部署實施
2.2.1 架構設計
考慮到地質信息系統(tǒng)對底層數據庫性能的要求以及對高峰負載的處理,選擇采用4臺Oracle RAC架構為用戶提供數據查詢與保存服務,作為數據庫服務器,每臺主機配備2塊網卡:一塊網卡用于公共網絡上的客戶程序通信,另一塊用于集群通信。同時為了保證數據庫運行的安全性、穩(wěn)定性與可靠性,在此架構設計過程中,全面考慮了服務器、網絡、存儲的冗余,最終實現了高可用數據庫集群系統(tǒng)。系統(tǒng)的架構如圖1所示。
與以往雙機熱備環(huán)境不同的是,集群系統(tǒng)的4個節(jié)點可以同時為用戶提供服務,解決了同時只能1臺數據庫服務器為用戶提供服務的問題;4個節(jié)點服務器通過2臺控制交換機與“心跳線”相互監(jiān)測對方的運行狀態(tài),包括操作系統(tǒng)的運行、網絡通信和應用運行情況等,一旦發(fā)現1臺主機的運行出現問題,故障機上的應用就會立即停止,其上的應用及資源就會被轉移至另外3臺數據庫節(jié)點中的一臺,解決了高可用問題??紤]到RAC的緩存融合需要,采用Infiniband交換機作為節(jié)點間的互連通信設備,這4臺數據庫服務器向用戶提供的數據是完全相同的,不會因為用戶連接到不同節(jié)點而出現數據不一致的情況,同時也避免因為某節(jié)點故障而導致存活節(jié)點上用于互連的網卡被禁用。
在網絡設計上采用全冗余架構,數據庫內網采用雙線連接到2臺內網核心交換機。當網絡中一條鏈路出現故障時,服務器的流量會自動切換到另外一條網絡鏈路,保證用戶的正常使用。集群存儲采用FC-SAN的架構,使用作為主存儲,每臺數據庫服務器都是用兩塊HBA卡和FC數據交換機相連,FC交換機和HDS存儲相連。這些FC鏈路都是采用雙線連接,當一條鏈路出現故障時,系統(tǒng)仍然能夠正常穩(wěn)定運行。
2.2.2 具體實施
根據以上部署方案,簡要介紹一下4節(jié)點集群系統(tǒng)的安裝及配置過程。
(1)按照系統(tǒng)架構圖搭建系統(tǒng)硬件平臺,安裝Solaris 10操作系統(tǒng),連接光纖存儲;
(2)組裝存儲設備,創(chuàng)建數據體系共享邏輯卷組,向其中添加設備;
(3)進行安裝前環(huán)境檢查,配置系統(tǒng)參數、環(huán)境變量及oracle用戶環(huán)境;
(4)安裝集群系統(tǒng)Grid軟件、Oracle 11g軟件, 創(chuàng)建ASM磁盤組;
(5)創(chuàng)建數據庫,手動開啟歸檔并對數據庫參數進行設置。
2.3 內存管理
集群系統(tǒng)是由4節(jié)點組成,每節(jié)點實例都有自己的內存區(qū)域,分為系統(tǒng)全局區(qū)SGA(System Global Area)和程序全局區(qū)PGA(Program Global Area)。SGA是每個數據庫主要的緩存區(qū)域,PGA由進程在本地分配用于保護與用戶進程相關的內存段。在11g中,oracle內存管理引入了自動內存管理AMM(AutomaitcMemory Managerment),通過修改參數MEMORY_TARGET及MEMORY_MAX_TARGET實現,將SGA和PGA都納入了自動管理的范疇。設置并啟動AMM后,Oracle將自行決定SGA和PGA的分配和使用,可極大的簡化DBA對于內存的調整和管理工作。
# su - oracle
■ sqlplus /nolog
SQL> conn / as sysdba
SQL> alter system set memory_target=4096m scope=spfilesid='*'
SQL> alter system set memory_max_target=4096m scope=spfilesid='*'
MEMORY_TARGET參數指定的是在自動管理時可以使用的共享內存大小,不能超過MEMORY_MAX_TARGET參數設置的大小。如果沒有設置,默認等于MEMORY_TARGET的值,通過指明scope=spfile這個條件來實現數據庫在下次啟動后讓改變生效的目的。
2.4 負載均衡
在Oracle RAC體系中,負載均衡(Load Balance)是指對用戶連接進行管理,使他們從事的工作平均分布在Oracle RAC節(jié)點或集群數據庫實例之間[5]。共有兩種類型的連接負載均衡,客戶端負載均衡和服務器端負載均衡。客戶端負載均衡是在客戶端連接定義文件tnsnames.ora中通過設置參數LOAD_BALANCE=ON來實現,默認為ON,因此除非是希望關閉,否則不需要這一引用。
服務器端負載均衡主要由服務器監(jiān)聽器(Listener)來實現。當收到新的連接請求時,監(jiān)聽器將判斷每個數據庫實例(Instance)的工作負載,并選擇一個最輕負載的實例進行連接;數據庫進程pmon會將每個實例的工作負載情況通知監(jiān)聽器,以便監(jiān)聽器能夠掌握各數據庫實例的負載情況。只有在數據庫實例初始化參數LOCAL_LISTENER和REMOTE_LISTENER中指定的監(jiān)聽器才能夠接受這些負載數據,可采用命令SQL>show parameter listener進行查看。從Oracle 11g開始,Oracle自動為LOCAL_LISTENER數據庫參數設定值,因此不需要手動設置這個參數。對于REMOTE_LISTENER,必須保證這一參數的值為rac-scan:1521,如果不正確,可以嘗試利用以下命令修改:
SQL> alter system set remote_listener= 'rac-scan:1521' scope=bothsid='*';
這一命令要在每個節(jié)點上單獨執(zhí)行,注意區(qū)分HOST的名字及sid的值;
通過上述配置,可以實現4個節(jié)點間負載的動態(tài)均衡,保證負載在集群的各個節(jié)點中均衡分發(fā),使用戶的作業(yè)能夠以最快的速度被數據庫服務器處理。
3 實施效果
應用本文部署的Oracle 11g RAC集群系統(tǒng)后,我們對訪問地質信息系統(tǒng)的客戶端數量與服務器響應時間進行了統(tǒng)計,結果見圖2。如圖2所示,集群系統(tǒng)下,地質信息系統(tǒng)的響應時間明顯短于傳統(tǒng)的單機系統(tǒng),而且,隨訪問系統(tǒng)的客戶端數量遞增,這種差距便越發(fā)顯著。這是由于在傳統(tǒng)的單機模式下,所有的作業(yè)在服務器端按串行方式逐個執(zhí)行,客戶端等待時間長,服務器負載高;而集群模式下所有的作業(yè)會按照各個節(jié)點負載的多少均衡分發(fā)并行執(zhí)行,因此客戶端延遲小,能夠做到負載均衡。本文中所應用的4節(jié)點Oracle 11g RAC系統(tǒng)能夠在最大的程度上發(fā)揮這種優(yōu)勢。
此外,集群系統(tǒng)的處理速度比照傳統(tǒng)的單機系統(tǒng)也有顯著的提升。如圖3所示,當利用地質信息系統(tǒng)進行指定層位的井位分布圖繪制時,隨著井數的增加,集群系統(tǒng)所需的處理時間增長趨勢遠低于傳統(tǒng)單機系統(tǒng)。當客戶端需要繪制一張2000口井的井位分布圖,傳統(tǒng)系統(tǒng)模式需要70秒,集群模式下則只需19秒,節(jié)省約2/3的時間。
4 結 語
應用本文部署的Oracle 11g RAC集群系統(tǒng),充分利用了服務器資源,能夠顯著降低服務器訪問負載,使地質信息系統(tǒng)的運行效率得到大幅度提升。目前,該架構實施1年以來,已穩(wěn)定運行與本數據中心,良好的實現了24×7小時無間斷服務,能夠做到負載科學協(xié)調、自動分配、數據處理方式按照并行完成,實現很高的資源利用率等諸多優(yōu)點。為精確的地質圖件繪制與地震解釋等地質研究提供良好的數據服務,同時為各項地質業(yè)務應用提供了一個高效、可靠的數據平臺。
主要參考文獻
[1]閆黎.基于Oracle RAC的數據庫架構分析與企業(yè)應用[J].計算機系統(tǒng)應用,2013,22(11):200-203.
[2]劉憲軍.Oracle Rac 11g實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2011.
[3]柳培林.集群技術在采油廠數據中心的應用研究[J].中國管理信息化,2012,15(2):60-61.