號碼攜帶集中管理系統(tǒng)的高可用技術應用
3.5.2 數(shù)據(jù)庫集群軟件
我們以ORACLE的真正應用集群(Real Application Cluster,RAC)軟件為例,介紹數(shù)據(jù)庫集群軟件的主要特點。
?。?)共享磁盤
與Single-Instance Oracle的存儲方式最主要的不同之處在于RAC存儲必須將所有RAC中數(shù)據(jù)文件存放在共享設備中,以便訪問相同Database的Instance能夠共享。同時,為了能夠使每個Instance能夠獨立操作,也為了系統(tǒng)恢復時其他Instance能找到相關的操作痕跡,RAC數(shù)據(jù)庫與單實例數(shù)據(jù)庫在存儲結構上還存在以下不同:
?。?)每一個Instance都有自己的SGA(系統(tǒng)全局區(qū))。
?。?)每一個Instance都有自己的Background Process。
(3)每一個Instance都有自己的Redo Logs。
?。?)每一個Instance都有自己的Undo表空間。
RAC也不能使用傳統(tǒng)的文件系統(tǒng),因為傳統(tǒng)的文件系統(tǒng)不支持多系統(tǒng)的并行掛載,必須將文件存儲在沒有任何文件系統(tǒng)的裸設備或是支持多系統(tǒng)并發(fā)訪問的文件系統(tǒng)中。
RAC操作要求在所有Instance中對控制共享資源的訪問進行同步。RAC使用Global Resource Directory來記錄Cluster Database中資源的使用信息,Global Cache Service(GCS)和Global Enqueue Service(GES)管理GRD中的信息。每個Instance在進行讀寫操作后,要由GCS或者GES按照嚴格的流程同步到其他Instance的Buffer中。
?。?)緩存融合(Cache Fusion)
在RAC環(huán)境中,每個實例的內存結構和后臺進程都是相同的,它們看起來像單一系統(tǒng)的一樣。每個實例的SGA內有一個緩沖區(qū),使用Cache Fusion技術,每個實例就像使用單一緩存一樣使用集群實例的緩存來處理數(shù)據(jù)庫。Cache Fusion技術可以最大限度地降低磁盤I/O,優(yōu)化數(shù)據(jù)讀寫。節(jié)點之間會產(chǎn)生不小的網(wǎng)絡通信和CPU的開銷,因此雙節(jié)點RAC的性能不會是單節(jié)點性能的兩倍。
(3)透明應用切換
當RAC群集中的一個節(jié)點發(fā)生了故障,故障節(jié)點上所有保存在內存中運行的事務會丟失,Oracle將故障節(jié)點所擁有數(shù)據(jù)塊的控制權限重新轉交給正常節(jié)點,此過程稱為全局緩存服務重置。在全局緩存服務重置發(fā)生時,RAC中所有服務器都會被凍結,所有應用程序將被掛起,GCS將不會響應群集中任何節(jié)點發(fā)出的請求;重置后,Oracle讀取日志記錄,確定并鎖定需要恢復的頁面,并執(zhí)行回滾,此時數(shù)據(jù)庫恢復可用。
3.6 應用軟件的系統(tǒng)恢復方案
即使我們采取了前面所有的措施,也需要考慮在前面方案失敗的情況下,即系統(tǒng)底層軟件或者硬件發(fā)生錯誤而導致系統(tǒng)重啟時的處理辦法。
系統(tǒng)在重啟前,系統(tǒng)中正在運行的有若干個流程,每個流程都處于不同的狀態(tài),應用軟件的恢復方案就是要保證系統(tǒng)重啟后,這些狀態(tài)都能夠恢復并自動運行到結束狀態(tài)。為此,系統(tǒng)在運行過程中,所有消息和流程的狀態(tài)都需要在修改的時候保存在數(shù)據(jù)庫中,而不能僅僅保存在內存中,在System Recover的時候,需要檢查數(shù)據(jù)庫中所有沒有到最終狀態(tài)的消息和流程并進行后續(xù)處理。
CSMS在System Recover后實現(xiàn)過程如下:
(1)恢復所有消息:恢復CSMS發(fā)出的消息,恢復CSMS收到的消息。
?。?)恢復申請流程。
(3)恢復注銷流程。
?。?)恢復停機相關流程。
(5)恢復審計流程。
?。?)檢查當天的生效廣播。
?。?)檢查當天的同步。
?。?)檢查當月的同步。
系統(tǒng)恢復的關鍵就是要清楚每個流程的不同狀態(tài),比如在消息的恢復中,對于從CSMS發(fā)送出去的NP消息,狀態(tài)包括:
●Init(初始)。
●Sending(發(fā)送中):該消息已經(jīng)發(fā)送給SOA/LSMS,等待ACK。
●Wait Send(等待發(fā)送):ACK超時重發(fā)。
●Sent(發(fā)送成功):收到ACK信息。
●Complete(完成):收到該NP消息(請求/指示)的回復(響應/確認),并已經(jīng)成功發(fā)送相應的ACK。
對于CSMS接收到的NP消息,狀態(tài)包括:
●Init(初始)。
●Processing(處理中):表示系統(tǒng)正在處理該NP消息,主要包括將該NP消息保存入系統(tǒng),根據(jù)該NP消息的類型,選擇需要處理的方式。
●Processed(處理結束):表示系統(tǒng)已經(jīng)處理結束該NP消息。
●Replying(正在發(fā)送回復消息):系統(tǒng)將組織好的NP回復消息已經(jīng)發(fā)送到SOA/LSMS,該消息沒有收到ACK。
●Wait Reply(等待回復):ACK超時等待重發(fā)。
●Complete(完成):系統(tǒng)收到該消息的ACK信息。
對于系統(tǒng)的其他恢復流程,方法類似不再贅述。
3.7 磁盤陣列的RAID和磁帶庫備份方案
系統(tǒng)高可靠性最后的考慮就是存儲設備,以目前的技術而言,有效的存儲方案不僅可以保證存儲數(shù)據(jù)的安全可靠,還能夠提高硬盤讀寫的速度,常用的技術就是RAID。
RAID技術按照級別可以分為RAID0,RAID1,RAID5等,不同級別RAID的存儲效率不同,當硬盤出現(xiàn)故障時能夠恢復的時間也不相同,具體技術可以參考相關技術文檔。
為了進一步增加數(shù)據(jù)存儲的保護功能,系統(tǒng)一般還會有其他介質的備份方案,如磁帶庫備份。磁盤陣列的數(shù)據(jù)按照一定的規(guī)則備份到磁帶庫上,一方面可以增加存儲設備的容量,同時對數(shù)據(jù)保護又增加了一層保障。
4 結束語
作為號碼攜帶集中管理系統(tǒng)的重要性能指標之一,高可用性具有十分重要的意義。因為高可用性需要考慮到系統(tǒng)的各個層面,相對也比較復雜。尤其在各種新的IT技術層出不窮的今天,研究各種高可用性技術,選擇合適的高可用性技術方案,應作為系統(tǒng)架構設計者和相關技術研究人員的重點研究內容。本文僅作為拋磚引玉,對號碼攜帶集中管理系統(tǒng)的各種高可用技術進行了簡單的分析和總結,相信這些高可用性技術對類似系統(tǒng)的設計具有一定的參考意義。
評論