在企業信息化的過程中,綜合信息數據庫是不可缺少的。這類數據庫通過網絡為企業提供高質量綜合信息檢索服務,形成一個安全、可靠、實用、可擴展的現代化的信息系統,以達到信息資源共享、合理利用和高效整合的目的。隨著企業ERP、CRM和SCM等的應用,數據量急劇增長,一台服務器往往不能滿足需求,而目前服務器的價格越來越便宜,采用服務器集群技術,可以提高訪問數據庫的效率,提高可靠性和安全性。
根據用戶需求,我們為企業研制出“綜合信息數據庫系統”。在服務器和網絡平台上,開發出將各種數據類型的信息進行整理、加工、存儲、檢索、出版、信息發布以及統計分析的綜合信息數據庫系統,已在多家企業進行了全面使用,部分子系統根據用戶意見進行了多次修改完善,已成為成熟穩定的產品。系統運行效果良好,獲得了有關單位好評。
在“綜合信息數據庫”系統的建設過程中,我們結合使用了服務器集群、數據庫的自動復制、Web訪問的平衡負載等多項先進技術,從而保證“綜合信息數據庫”在各種可能的情況下,提供不間斷的信息服務。
一、服務器集群和數據庫的並行服務
從終端/主機模式,到客戶機/服務器模式,一直到現在的群集結構,信息系統的發展經歷了一個螺旋式上升的過程。近年來,伴隨著用戶對系統安全性能要求的不斷提高,以及用戶應用系統尤其是關鍵領域的關鍵性應用對可靠性要求的不斷增加,如何建立並且應用真正高可靠性的系統方案,已成為目前廣大用戶的迫切需求。關鍵應用系統首先要求計算機的性能不斷擴展,然後是對系統的可靠性要求不斷提高。而傳統的單機系統存在很多問題,主要有:(1)可用性不高;(2)數據丟失的危險大;(3)硬盤故障多。而集群技術可以解決上述問題。
提到集群,很多時候,人們容易將雙機熱備份技術與集群技術混為一談,其實它們具有本質上的區別:即能否實現並行處理和節點機失效後的任務平滑接管。雙機或多機熱備份技術的原理是一台主機做服務器,其他主機做備份機,服務器失效時,備份機接管。
由於系統的高可用性已成為關鍵業務環節的當務之急,在“綜合信息數據庫”系統的建設過程中,對提供服務的服務器,采用了雙機集群和 Oracle並行服務器(OPS)技術,具體為2台HP Alpha服務器同時運行,並共享磁盤陣列,同時每個服務器又具有自己的系統引導盤,可以獨立運行。而數據庫數據存儲在RAID 5陣列中,這樣,當某個服務器發生硬件或軟件故障時,其他服務器上的數據庫可以繼續提供服務,對用戶沒有影響,而且其他節點可幫助恢復失效的節點。
Oracle的並行數據庫系統(Parallel Database System)以高性能、高可用性和高擴充性為目標,可充分利用多處理器平台的工作能力,在應用環境中可提供更快的響應時間與更大的事務吞吐量。支持多個 Oracle實例在多個節點訪問一個單獨的共享的Oracle數據庫。這個相同的數據庫被所有節點共享,這些節點具有一致的數據文件和控制文件,卻有不同的SGA、日志文件和回滾段。並行服務器運行原理示意圖如圖1所示。
正常情況下,每個節點有自己的內存,可以支持用戶訪問。系統還提供了很高的有效性和可伸縮性,在需要增加系統處理能力時,可以通過向集群中增加更多的節點,增加所支持用戶的數量。正常情況下,2台服務器都可以提供服務,不浪費硬件設備和資源,同時,可以互相分擔部分業務,做到負載平衡,更好地發揮雙機運行的效果和可靠性。
二、支持系統快速恢復
有了雙機集群系統,並不能高枕無憂。在此基礎上,還為系統設計了磁盤陣列和數據定期備份等多種方式,以保證系統和數據的可靠性。以現有備份手段分析,目前采用的備份措施在硬件一級有磁盤鏡像、磁盤陣列和雙機容錯等; 在軟件一級有數據拷貝。
可以看到,前3種措施都屬於硬件級備份,對火災、水淹、線路故障造成的系統損壞和邏輯損壞則無能為力。只有第4種措施,即數據拷貝可以防止任何物理故障;在有嚴格的備份方案和計劃的前提下,能夠在一定程度上防止邏輯故障。
用最新的備份恢復系統數據,即使一切順利,這一過程也至少需要2~3天時間,尤其是一個具有幾百萬條大記錄的數據庫系統,這麼漫長的恢復時間,對於信息系統的用戶,幾乎是不可忍受的。
由於HP Alpha服務器設備比較大,對環境要求高,不適合特殊環境下的系統恢復,為了保證在特別情況下,能將綜合信息數據庫及時轉移,並迅速提供服務,我們利用了數據庫的復制技術,將HP Alpha上的Oracle數據庫,通過定時自動復制,在HP LH系列PC服務器上建立一個完全的數據庫備份。這樣,可以保證系統在特殊情況下,系統可隨時轉移,大大增強了系統的可靠性。
我們設計了采用異步復制技術的多主復制方案支持全表在主數據庫和備用數據庫間的對稱復制,允許主數據庫和備用數據庫對主表都有更新操作的權利。主數據庫上和備用數據庫上復制表的更新都會被傳播到對方。在傳播數據的變化時,如果其中的一個遠端數據庫系統沒有准備好,傳播變化的延遲遠程過程調用就會保存在其遠端系統的本地隊列中,等到系統准備好以後再執行。
采用異步復制技術的多主復制方案,當HP Alpha服務器因磁盤陣列發生硬件故障或其他原因而造成系統停機和服務中斷時,系統事務可以立刻轉移到備用數據庫上,當主數據庫恢復後,備用數據庫上的數據的變化將被復制到主數據庫。這種機制大大提高了系統的可靠性。
三、改進系統的薄弱環節
在信息服務系統中,系統整體的可用性是依據系統中服務能力最低的環節來衡量的,所以找到系統的瓶頸並加以克服是大型信息服務系統成功的重要環節。
在綜合信息數據庫系統中,數據庫系統采用HP Alpha服務器,而用戶訪問最為頻繁的Web服務器采用的是PC服務器,這樣Web服務是整個系統的薄弱環節。根據綜合信息數據庫系統的特點,定制了基於Linux的Web服務集群解決方案。
在大型綜合數據庫系統中,隨著用戶數和網絡流量以幾何級數增長,對網絡服務的可伸縮性提出很高的要求。為用戶提供訪問的Web站點會因為被訪問次數急劇增長和不能及時處理用戶的請求,而導致用戶長時間的等待。綜合信息數據庫系統采用Browser/Web/ Database的三層結構為用戶提供服務,後台采用HP Alpha主機作為數據庫服務器,具有良好的性能和穩定性,而系統Web服務器采用HP的PC服務器,成為系統中的瓶頸。針對以上需求,采用了基於IP層負載平衡調度的解決方法,將一組服務器構成一個實現可伸縮的、高可用網絡服務的服務器集群,稱為Linux虛擬服務器(Linux Virtual Server,LVS)。在LVS中,具體使用以下技術:Linux內核IP層中的負載平衡調度、基於NAT的報文改寫技術、帶權值的輪轉調度算法。
Web虛擬服務器是實現高可伸縮、高可用網絡服務的Web集群。在Linux內核中實現了基於IP層負載平衡調度的方法,能靈活高效地將一組服務器組成一個高可伸縮的、高可用的網絡服務。這種服務器集群的結構對客戶是透明的,客戶訪問集群提供的網絡服務就像訪問一台高性能、高可用的服務器一樣。客戶程序不受服務器集群的影響,不需做任何修改。通過在服務器集群中透明地加入和刪除結點實現系統的伸縮性,通過檢測結點或服務進程故障和正確地重置系統達到高可用性。
基於IP層負載平衡調度技術的實現原理是:在操作系統核心空間中將IP層上的TCP/UDP請求均衡地轉移到不同的服務器上,且調度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。為此,在設計時需要考慮系統的透明性、可伸縮性、高可用性和易管理性。 LVS集群的體系結構如圖2所示,有3個主要組成部分。
1.負載平衡器(Load Balancer),它是整個集群對外面的前端機,負責將客戶請求的發送到一組服務器上執行,而客戶認為服務是來自一個IP地址上的。
2.服務器池(Server Pool),是一組真正執行客戶請求的服務器,執行的服務有Web、E-Mail、FTP和DNS等。
3.後端存儲(Backend Storage),它為服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容提供相同的服務。
負載平衡器采用IP層負載平衡調度技術。當客戶請求到達時,負載平衡器根據負載情況從服務器池中選出一個服務器,將該請求轉發到選出的服務器,並記錄這個調度。所有的操作都是在操作系統核心空間中完成的,它的調度開銷很小,所以它能調度很多服務器,而本身不會成為系統的瓶頸。服務器池的結點數目是可變的。當整個系統收到的負載超過目前所有結點的處理能力時,可以在服務器池中增加服務器來滿足不斷增長的請求負載。對大多數網絡服務來說,結點與結點間不存在很強的相關性,所以整個系統的性能可以隨著服務器池的結點數目增加而線性增長。
負載平衡器采用基於NAT的IP負載平衡技術。NAT的工作原理是報文頭(目標地址、源地址和端口等)被正確改寫後,客戶相信它們連接一個IP地址,而不同IP地址的服務器組也認為它們是與客戶直接相連的。由此,可以用NAT方法將不同IP地址的並行網絡服務變成在一個IP地址上的一個虛擬服務。
在綜合數據庫系統的應用中,後台采用HP Alpha主機作為數據庫服務器,具有良好的性能和穩定性,而系統Web服務器采用多台PC服務器,利用LVS構建Web群集服務,並可根據訪問的情況動態地增加新節點,完成系統的發布服務。在系統的應用中,Web服務器軟件采用基於Windows NT/2000的IIS Web服務器,文件同步采用File Sync,硬件采用相同配置的PC機作為Web服務器,使用了一台高檔PC作為LVS負載平衡器,並有一台作為備份。在LVS中,采用了NAT的IP負載平衡技術和輪轉調度算法,在系統的使用中,取得了良好的效果。
因內網數據庫發布子系統采用Web集群技術為用戶提供穩定高效的綜合情報資料查詢服務。為了准確掌握用戶的分布、用戶查詢的情報數據的類別以及訪問次數,系統對終端用戶的查詢情況進行了自動記錄,記載每個訪問用戶的服務器名和IP地址、訪問的數據類型、登錄時間、提供服務的服務器IP地址等信息。根據這些用戶信息可進行多角度的統計,分析有哪些用戶需要數據、對什麼數據感興趣、主要訪問的時間段等。到目前為止,已有大量的訪問記錄,統計分析的結果指導綜合信息數據庫更科學合理地收集和組織數據,為用戶提供更好的服務,同時也可為進一步建設綜合信息數據倉庫創造條件。