雙機(jī)熱備特指基于高可用系統(tǒng)中的兩臺(tái)服務(wù)器的熱備(或高可用),因兩機(jī)高可用在國(guó)內(nèi)使用較多,故得名雙機(jī)熱備,雙機(jī)高可用按工作中的切換方式分為:主-備方式(Active-Standby方式)和雙主機(jī)方式(Active-Active方式),主-備方式即指的是一臺(tái)服務(wù)器處于某種業(yè)務(wù)的激活狀態(tài)(即Active狀態(tài)),另一臺(tái)服務(wù)器處于該業(yè)務(wù)的備用狀態(tài)(即Standby狀態(tài))。而雙主機(jī)方式即指兩種不同業(yè)務(wù)分別在兩臺(tái)服務(wù)器上互為主備狀態(tài)(即Active-Standby和Standby-Active狀態(tài))。
組成雙機(jī)熱備的方案主要的三種方式分別為:基于共享存儲(chǔ)(磁盤(pán)陣列)的方式,全冗余方式和復(fù)制方式。
基于共享存儲(chǔ)(磁盤(pán)陣列)的方式
共享存儲(chǔ)方式主要通過(guò)磁盤(pán)陣列提供切換后,對(duì)數(shù)據(jù)完整性和連續(xù)性的保障。用戶(hù)數(shù)據(jù)一般會(huì)放在磁盤(pán)陣列上,當(dāng)主機(jī)宕機(jī)后,備機(jī)繼續(xù)從磁盤(pán)陣列上取得原有數(shù)據(jù)。
如下圖所示這種方式因?yàn)槭褂靡慌_(tái)存儲(chǔ)設(shè)備,往往被業(yè)內(nèi)人士稱(chēng)為磁盤(pán)單點(diǎn)故障。但一般來(lái)講存儲(chǔ)的安全性較高。所以如果忽略存儲(chǔ)設(shè)備故障的情況下,這種方式也是業(yè)內(nèi)采用最多的熱備方式。
全冗余方式
全冗余方式就是雙機(jī)雙存儲(chǔ),基于單臺(tái)存儲(chǔ)的傳統(tǒng)雙機(jī)熱備方式,確實(shí)存在存儲(chǔ)單點(diǎn)故障的情況,為實(shí)現(xiàn)存儲(chǔ)冗余,存儲(chǔ)高可用也已經(jīng)越來(lái)越多的被用戶(hù)接受。我們從理解上可以看出,雙機(jī)熱備最早是為解決服務(wù)器的計(jì)劃性停機(jī)與非計(jì)劃性宕機(jī)的解決方案,但是我們無(wú)法實(shí)現(xiàn)存儲(chǔ)的計(jì)劃性停機(jī)與非計(jì)劃性宕機(jī)帶來(lái)的服務(wù)器停機(jī),而存儲(chǔ)作為雙機(jī)熱備中唯一存儲(chǔ)數(shù)據(jù)的設(shè)備,它一旦發(fā)生故障往往會(huì)造成雙機(jī)熱備系統(tǒng)全面崩潰。
隨著科技的進(jìn)步,云存儲(chǔ),云計(jì)算發(fā)展,對(duì)于存儲(chǔ)熱備已經(jīng)進(jìn)入了成熟及快速發(fā)展階段,雙機(jī)熱備也隨著技術(shù)的進(jìn)步,進(jìn)入到了沒(méi)有單點(diǎn)故障的全冗余雙機(jī)熱備方式。如圖:
這種方式的特點(diǎn)在于:
1、存儲(chǔ)之間的數(shù)據(jù)復(fù)制不經(jīng)過(guò)網(wǎng)絡(luò),而是由存儲(chǔ)之間進(jìn)行復(fù)制。
2、兩個(gè)存儲(chǔ)之間的復(fù)制是完全實(shí)時(shí)的,不存在任何時(shí)間延時(shí)。
3、主備存儲(chǔ)之間的切換時(shí)間小于500ms,以確保系統(tǒng)存儲(chǔ)時(shí)不產(chǎn)生延時(shí)。
4、硬盤(pán)盤(pán)符及分區(qū)不因?yàn)橹鱾浯鎯?chǔ)之間的切換而改變。
5、服務(wù)器的切換,不影響存儲(chǔ)之間的初始化,增量同步及數(shù)據(jù)復(fù)制。
6、某一存儲(chǔ)設(shè)備的計(jì)劃性停機(jī),不影響整個(gè)服務(wù)器雙機(jī)熱備系統(tǒng)的工作。
7、存儲(chǔ)設(shè)備之間使用重復(fù)數(shù)據(jù)刪除技術(shù),完成增量同步工作。
8、真正的7X24小時(shí)或切換的全冗余方案。
復(fù)制方式
這種方式主要利用數(shù)據(jù)的同步方式,保證主備服務(wù)器的數(shù)據(jù)一致性。
基于數(shù)據(jù)復(fù)制的方式有多種方法,其性能和安全也不盡相同,其主要方法有以下幾種:
A、單純的文件方式的拷貝不適用于數(shù)據(jù)庫(kù)等應(yīng)用,因?yàn)榇蜷_(kāi)的文件是不能被復(fù)制的,如果要復(fù)制必須將數(shù)據(jù)庫(kù)關(guān)閉,這顯然是不可以的。以文件方式的復(fù)制主要適用于WEB頁(yè)的更新,F(xiàn)TP上傳應(yīng)用,對(duì)主備機(jī)數(shù)據(jù)完整性,連續(xù)性要求不高的情況下使用。
B、利用數(shù)據(jù)庫(kù)所帶有復(fù)制功能,比如SQLServer2000或2005所帶的定閱復(fù)制,這種方式用戶(hù)要根據(jù)自己的應(yīng)用小心使用,原因主要是:
(1)SQLServer的定閱復(fù)制會(huì)在用戶(hù)表上增加字段,對(duì)那些應(yīng)用軟件編程要求較高,如果在應(yīng)用軟件端書(shū)寫(xiě)時(shí)未明確指定字段的用戶(hù),而使用此功能會(huì)造成應(yīng)用程序無(wú)法正常工作。
(2)數(shù)據(jù)滯留,這個(gè)限制怕也是最要命的,因?yàn)镾QLServer在數(shù)據(jù)傳輸過(guò)程中數(shù)據(jù)并非實(shí)時(shí)的到達(dá)主備機(jī),而是數(shù)據(jù)先寫(xiě)到主機(jī),再寫(xiě)到備機(jī),如此一來(lái),備機(jī)的數(shù)據(jù)往往來(lái)不及更新,此時(shí)如果發(fā)生切換,備機(jī)的數(shù)據(jù)將不完整,也不連續(xù),如果用戶(hù)發(fā)現(xiàn)已寫(xiě)入的數(shù)據(jù)在備機(jī)找不到,重新寫(xiě)入的話(huà),則主機(jī)修復(fù)后,就會(huì)發(fā)生主備機(jī)數(shù)據(jù)嚴(yán)重沖突,數(shù)據(jù)庫(kù)會(huì)亂掉。
(3)復(fù)雜應(yīng)用切莫使用定閱復(fù)制來(lái)做雙機(jī)熱備,包括數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)過(guò)程的處理,觸發(fā)器和序列,一旦發(fā)生沖突,修改起來(lái)非常麻煩。
(4)服務(wù)器性能降低,對(duì)于大一點(diǎn)的數(shù)據(jù)庫(kù),SQLServer2000或2005所帶的定閱復(fù)制會(huì)造成服務(wù)器數(shù)據(jù)庫(kù)運(yùn)行緩慢。
總之SQLServer2000或2005所帶的定閱復(fù)制主要還是應(yīng)用于數(shù)據(jù)快照服務(wù),切莫用他來(lái)做雙機(jī)熱備中的數(shù)據(jù)同步。
C:硬盤(pán)數(shù)據(jù)攔截,目前國(guó)際國(guó)內(nèi),比較成熟的雙機(jī)熱備軟件通常會(huì)使用硬盤(pán)數(shù)據(jù)攔截的技術(shù),通常稱(chēng)為鏡像軟件即Mirror軟件,這種技術(shù)當(dāng)前已非常成熟,攔截的方式也不盡相同。
(1)分區(qū)攔截技術(shù),以Pluswell熱備份產(chǎn)品為例,他采用的是一種分區(qū)硬盤(pán)扇區(qū)攔截的技術(shù),通過(guò)驅(qū)動(dòng)級(jí)的攔截方式,將數(shù)據(jù)寫(xiě)往硬盤(pán)的數(shù)據(jù)提取,并首先寫(xiě)到備用服務(wù)器,以保證備用服務(wù)器的數(shù)據(jù)最新,然后再將數(shù)據(jù)回寫(xiě)到主機(jī)硬盤(pán)。這種方式將絕對(duì)保證,主備機(jī)數(shù)據(jù)庫(kù)的數(shù)據(jù)完全一致,無(wú)論發(fā)生哪種切換,都能保證數(shù)據(jù)庫(kù)的完整性與連續(xù)性。由于采用分區(qū)攔截技術(shù),所以用戶(hù)可以根據(jù)需要在一塊硬盤(pán)上劃分適合大小的分區(qū)來(lái)完成數(shù)據(jù)同步工作。
(2)硬盤(pán)攔截技術(shù),以Symantec的Co-Standby為例,也是一種有效的硬盤(pán)攔截軟件,他的攔截主要基于一整塊硬盤(pán),往往在硬盤(pán)初始化時(shí)需要消耗大量的時(shí)間。
雙機(jī)熱備中需要指出的幾個(gè)概念