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