首先介紹一下iSCSI技術(shù)
iSCSI技術(shù)于2003年2月11日,由IETF(Internet Engineering Task Force,互聯(lián)網(wǎng)工程任務(wù)組)正式通過;它由IBM、思科共同發(fā)起,是一種基于網(wǎng)絡(luò)的數(shù)據(jù)存儲(chǔ)技術(shù),具有硬件成本低廉,操作簡單,擴(kuò)充性強(qiáng),傳輸速度快等特點(diǎn)。
iSCSI(互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口)是一種在Internet協(xié)議網(wǎng)絡(luò)上,特別是以太網(wǎng)上進(jìn)行數(shù)據(jù)塊傳輸?shù)臉?biāo)準(zhǔn)。它是由Cisco 和IBM兩家發(fā)起的,并且得到了IP存儲(chǔ)技術(shù)擁護(hù)者的大力支持。是一個(gè)供硬件設(shè)備使用的可以在IP協(xié)議上層運(yùn)行的SCSI指令集。簡單地說,iSCSI可以實(shí)現(xiàn)在IP網(wǎng)絡(luò)上運(yùn)行SCSI協(xié)議,使其能夠在諸如高速千兆以太網(wǎng)上進(jìn)行路由選擇。
iSCSI對(duì)于大多數(shù)用戶,比FC SAN更具有競爭力
iSCSI技術(shù)和產(chǎn)品的出現(xiàn),使得用戶構(gòu)架一個(gè)基于IP的SAN 環(huán)境變得更加容易,由于目前市場上基于iSCSI的存儲(chǔ)產(chǎn)品越來越多,通過這些產(chǎn)品構(gòu)架一個(gè)SAN存儲(chǔ)環(huán)境相對(duì)構(gòu)架一個(gè)FC SAN環(huán)境整體投入相當(dāng)?shù)牡?。這是由于FC SAN需要專用的存儲(chǔ)光纖交換機(jī)、HBA卡、FC存儲(chǔ)設(shè)備等,這些設(shè)備目前還是相當(dāng)?shù)陌嘿F,對(duì)于一般用戶來講,這個(gè)投入可能不是很值得。當(dāng)然FC SAN環(huán)境速度相當(dāng)快,對(duì)于一些大規(guī)模數(shù)據(jù)庫應(yīng)用、并發(fā)度高的用戶環(huán)境,這種配置是必須的。而大多數(shù)應(yīng)用環(huán)境,對(duì)存儲(chǔ)處理能力的要求并不是想象中的那么嚇人,往往連用戶自己都不知道自己需要什么樣的處理能力的存儲(chǔ)。實(shí)際上,iSCSI環(huán)境下的性能瓶頸主要在網(wǎng)絡(luò)上,因?yàn)閕SCSI是通過以太網(wǎng)傳輸存儲(chǔ)數(shù)據(jù)的。當(dāng)然,在iSCSI存儲(chǔ)設(shè)備端和服務(wù)器端存在封包和解包過程,這些會(huì)占用一些系統(tǒng)資源,如果使用專用的iSCSI卡,這種處理都在iSCSI卡上完成,不會(huì)占用系統(tǒng)資源。只有我們直接使用普通千兆以太網(wǎng)卡來連接到IP SAN環(huán)境中,才需要更多的系統(tǒng)資源。而隨著網(wǎng)絡(luò)的傳輸能力越來越強(qiáng),服務(wù)器處理能力越來越強(qiáng),這些都不是主要問題了。我們完全可以在相當(dāng)?shù)偷念A(yù)算范圍內(nèi),甚者僅僅是以前的一個(gè)DAS(直接連接存儲(chǔ),比如SCSI接口磁盤陣列柜)設(shè)備的投入,就可以完成一個(gè)IP SAN環(huán)境的構(gòu)建。
下表可以了解一下,通過兩種方式,構(gòu)建一個(gè)SAN環(huán)境所需要的設(shè)備列表:
設(shè)備 | FC SAN | IP SAN |
磁盤陣列存儲(chǔ) | 外部FC 接口(2GB/4GB) | 外部以太網(wǎng)接口(千兆) |
磁盤模塊 | SATA/SAS/SCSI/FC | SATA/SAS/SCSI |
交換機(jī) | 2GB/4GB存儲(chǔ)交換機(jī) | 千兆網(wǎng)絡(luò)交換機(jī) |
HBA卡 | 2GB/4GB光纖HBA卡 | iSCSI卡或千兆以太網(wǎng)卡 |
線纜 | 存儲(chǔ)光纖用線纜 | 網(wǎng)絡(luò)線纜 |
iSCSI環(huán)境下,構(gòu)建一個(gè)集群IP SAN的構(gòu)建,使得我們的用戶可以將網(wǎng)絡(luò)中的各個(gè)服務(wù)器,上的數(shù)據(jù)存放在iSCSI存儲(chǔ)設(shè)備上,并且能夠像FC SAN一樣,在iSCSI磁盤陣列上劃分的分區(qū)(LUN),這些分區(qū)能夠被其它連接在IP SAN中的服務(wù)器所共享,這樣就使得我們構(gòu)架一個(gè)高可用性集群環(huán)境成為可能。
我們知道,在IP SAN環(huán)境下,我們可以不管服務(wù)器存放在何處、iSCSI存儲(chǔ)設(shè)備存放在何處,只要網(wǎng)絡(luò)鏈路能夠通達(dá)就可以加入到這個(gè)SAN環(huán)境中。這樣我們就在這個(gè)IP SAN環(huán)境中實(shí)現(xiàn)了存儲(chǔ)虛擬化。那么怎么實(shí)現(xiàn)集群呢,這里我們討論高可用性集群的實(shí)現(xiàn)。
高可用性集群解決SAN環(huán)境中各個(gè)應(yīng)用系統(tǒng)的高可靠性,簡單的說,就是任何服務(wù)器節(jié)點(diǎn)的宕機(jī),不會(huì)導(dǎo)致運(yùn)行在該服務(wù)器節(jié)點(diǎn)的應(yīng)用系統(tǒng)停止工作,它會(huì)根據(jù)預(yù)定義的備援規(guī)則進(jìn)行轉(zhuǎn)移,這個(gè)轉(zhuǎn)移包括了應(yīng)用系統(tǒng)(服務(wù)、進(jìn)程等)、網(wǎng)絡(luò)資源(IP)、存儲(chǔ)資源(卷)。這些資源通常被捆綁在一起,我們稱為任務(wù)包(Package),它在邏輯上獨(dú)立于服務(wù)器主機(jī)(服務(wù)器節(jié)點(diǎn),Node),這樣實(shí)際上是把處理單元(服務(wù)器節(jié)點(diǎn))和應(yīng)用系統(tǒng)(任務(wù)包)邏輯上完全分開,而任務(wù)包可以在任何可以運(yùn)行的服務(wù)器節(jié)點(diǎn)上運(yùn)行,對(duì)于客戶端訪問者來講,不知道數(shù)據(jù)是存放在哪里,也不知道自己使用的應(yīng)用環(huán)境是運(yùn)行在哪臺(tái)服務(wù)器上,實(shí)現(xiàn)了應(yīng)用環(huán)境的高可用。下面我們以LanderCluster為例,來闡述一下這個(gè)環(huán)境的實(shí)現(xiàn)過程。
LanderCluster是一種集群管理軟件,能夠在IP SAN環(huán)境下,構(gòu)建一個(gè)多種工作方式服務(wù)器互備環(huán)境,這種互備方式,可以是多臺(tái)服務(wù)器相互備份、一臺(tái)備份多臺(tái)、多臺(tái)備份多臺(tái)等。而我們僅僅需要考慮的是集群系統(tǒng)的規(guī)劃,也就是我們前面提到的備援規(guī)則定義,這是高可用集群系統(tǒng)定義的核心。主要要考慮的包括應(yīng)用系統(tǒng)的兼容性、服務(wù)器處理能力等。
應(yīng)用系統(tǒng)兼容性主要是指兩個(gè)或多個(gè)應(yīng)用系統(tǒng)是否可以在同一臺(tái)服務(wù)器環(huán)境上運(yùn)行,比如兩個(gè)同實(shí)例名的ORACLE數(shù)據(jù)庫是不能在同一臺(tái)服務(wù)器上同時(shí)運(yùn)行的,那么必須在備援規(guī)則上予以規(guī)劃,使它們?cè)谌魏螘r(shí)刻不能向同一臺(tái)服務(wù)器上切換。
服務(wù)器處理能力主要是要分析是否兩個(gè)或多個(gè)應(yīng)用如果同時(shí)運(yùn)行在一臺(tái)服務(wù)器上,該服務(wù)器是否會(huì)因?yàn)檫^載而死機(jī)。通常情況是服務(wù)器不會(huì)死機(jī),但會(huì)變得運(yùn)行遲緩,這種情況發(fā)生,說明備援規(guī)則規(guī)劃存在問題。
我們可以看出在服務(wù)器節(jié)點(diǎn)越多的情況下,備援規(guī)則會(huì)越復(fù)雜,但整個(gè)系統(tǒng)的規(guī)劃會(huì)越發(fā)靈活,可靠性會(huì)越高。因?yàn)椴煌陔p機(jī)環(huán)境,每臺(tái)服務(wù)器應(yīng)用只能是另外一臺(tái)做備份服務(wù)器,在集群環(huán)境下,理論上的其它服務(wù)器,只要滿足條件,都可以是備援服務(wù)器。
用LanderCluster構(gòu)建這樣集群
由于集群還是比較復(fù)雜,大多數(shù)用戶和存儲(chǔ)愛好者對(duì)它的認(rèn)識(shí),認(rèn)識(shí)還不夠深刻,不能夠有效的和實(shí)際環(huán)境聯(lián)系起來,也不知道如何下手來實(shí)現(xiàn)這樣的環(huán)境。我們?yōu)橄喈?dāng)多的用戶構(gòu)建了這樣的集群環(huán)境,那么就結(jié)合我們的實(shí)踐經(jīng)驗(yàn)來分享一下這個(gè)概念。下面以大多數(shù)政府用戶的典型環(huán)境進(jìn)行設(shè)計(jì)分析,來理解前面提到的概念。
很多的政府用戶典型的應(yīng)用環(huán)境包括:業(yè)務(wù)數(shù)據(jù)庫服務(wù)器(可能是ORACLE、SQL Server 、MySQL等)、應(yīng)用服務(wù)器(中間件服務(wù)器)、辦公自動(dòng)化服務(wù)器(OA 服務(wù)器,Notes等)、文件服務(wù)器、財(cái)務(wù)服務(wù)器等,這些服務(wù)器往往都是單獨(dú)運(yùn)行的,個(gè)別環(huán)境會(huì)在核心的數(shù)據(jù)庫服務(wù)器做個(gè)雙機(jī)環(huán)境,確保關(guān)鍵部分高可用,而實(shí)際上,現(xiàn)在的用戶系統(tǒng)已經(jīng)是一個(gè)復(fù)雜的多機(jī)協(xié)同提供服務(wù)的環(huán)境了,數(shù)據(jù)庫服務(wù)器是可靠的,那么應(yīng)用服務(wù)器如果宕機(jī),整個(gè)系統(tǒng)環(huán)境同樣是不可靠的,會(huì)因?yàn)槠渲械哪撑_(tái)服務(wù)器宕機(jī)而停止服務(wù),這樣環(huán)境的整體可靠性,取決于整個(gè)環(huán)境中各個(gè)服務(wù)器、應(yīng)用的可靠性。因此,真正能有效提高整體可靠性的手段,就是采用集群技術(shù)。
這些服務(wù)器都可以整合在一個(gè)IP SAN環(huán)境中,通過LanderCluster實(shí)現(xiàn)高可用。我們來分析這個(gè)環(huán)境,這些服務(wù)器環(huán)境的應(yīng)用數(shù)據(jù)都存放在iSCSI存儲(chǔ)設(shè)備的相關(guān)分區(qū)上,iSCSI環(huán)境規(guī)劃參考下表:
注:下表僅僅是參考環(huán)境,取環(huán)境中的幾個(gè)應(yīng)用系統(tǒng)進(jìn)行示范,所有定義內(nèi)容均是參考數(shù)據(jù)
服務(wù)器 | 數(shù)據(jù)庫服務(wù)器 | 應(yīng)用服務(wù)器 | 文件服務(wù)器 | 財(cái)務(wù)服務(wù)器 |
主機(jī)名 | DBserver | WEBserver | FILEserver | FINserver |
應(yīng)用類型(例) | ORACLE | WEBlogic | MySQL | |
iSCSI分區(qū)(LUN) | 1 | 2 | 3 | 4 |
卷定義(Windows環(huán)境,Linux是文件系統(tǒng)) | D: | E: | F: | G: |
IP規(guī)劃 | 192.168.8.1 | 192.168.8.2 | 192.168.8.3 | 192.168.8.4 |
操作系統(tǒng) | Windows/Linux | Windows/Linux | Windows/Linux | Windows/Linux |
在這樣一個(gè)環(huán)境下,我們需要定義備援規(guī)則,首先看這幾臺(tái)服務(wù)器的應(yīng)用系統(tǒng):ORACLE、MySQL、文件服務(wù)、WebLogic 之間沒有沖突,也就是說這些應(yīng)用都可以同時(shí)運(yùn)行在任何一臺(tái)服務(wù)器上,這是最完美的狀況,可以達(dá)到最高的可靠性定義。我們假定服務(wù)器處理能力都能夠滿足處理能力的要求。
那么,備援規(guī)則的定義可以如下表:
服務(wù)器 | 第一備援 | 第二備援 | 第三備援 |
DBServer | FINServer | FILEServer | WEBServer |
WEBServer | FINServer | FINServer | DBServer |
FILEServer | FINServer | DBServer | WEBServer |
FINServer | DBServer | WEBServer | FILEServer |
這是一種完美狀態(tài)的環(huán)境規(guī)劃,在實(shí)際運(yùn)行環(huán)境中,每個(gè)服務(wù)器節(jié)點(diǎn)的備援理論上達(dá)到2個(gè),就已經(jīng)具有非常高的可靠性了,上面的定義包含了各種極端情況都能保證系統(tǒng)不停止提供服務(wù),比如任意3臺(tái)服務(wù)器宕機(jī),那臺(tái)好的服務(wù)器也能提供4個(gè)應(yīng)用的服務(wù)。
簡單的以數(shù)據(jù)庫服務(wù)器為例說明工作方式,在正常運(yùn)行時(shí),四臺(tái)服務(wù)器分別運(yùn)行自己的應(yīng)用。某個(gè)時(shí)刻數(shù)據(jù)庫服務(wù)器宕機(jī),則LanderCluster會(huì)在10 秒鐘之內(nèi)發(fā)現(xiàn),立刻檢索備援規(guī)則表(存放在每個(gè)節(jié)點(diǎn)機(jī)的內(nèi)存中),發(fā)現(xiàn)第一備援機(jī)是財(cái)務(wù)服務(wù)器(FINServer),在確定財(cái)務(wù)服務(wù)器是完好的情況下,將數(shù)據(jù)庫服務(wù)器上的資源包,整體切換到財(cái)務(wù)服務(wù)器上運(yùn)行(包括IP、iSCSI分區(qū)、ORACLE服務(wù)等),切換過程不超過50秒。如果 LanderCluster偵測發(fā)現(xiàn)財(cái)務(wù)服務(wù)器是壞的,則會(huì)檢查第二備援節(jié)點(diǎn)狀態(tài),如果第二節(jié)點(diǎn)文件服務(wù)器(FILEServer)是好的,則切換到文件服務(wù)器上工作,依次類推。這樣我們知道,集群環(huán)境的規(guī)劃相當(dāng)?shù)闹匾?br />
環(huán)境拓?fù)淙缦聢D: