存儲區域網絡(SAN)的發展,使得更多的應用系統,可以有效的進行存儲集中,更加多的手段來提升數據的安全性。存儲虛擬化、服務器虛擬化,可以引申出應用的虛擬化。“應用虛擬化”的實現是通過服務器集群來實現的。對于應用虛擬化這個概念,可以從我們的其它技術文章中看到詳細描述。而SAN環境構架,曾經是FC SAN的專利,現在隨著iSCSI技術的蓬勃發展,一種基于IP的SAN構架,正在迅速發展壯大起來。這篇文章我們從iSCSI環境構架討論,探討在 iSCSI環境下,集群(應用虛擬化)的實現。
首先介紹一下iSCSI技術
iSCSI技術于2003年2月11日,由IETF(Internet Engineering Task Force,互聯網工程任務組)正式通過;它由IBM、思科共同發起,是一種基于網絡的數據存儲技術,具有硬件成本低廉,操作簡單,擴充性強,傳輸速度快等特點。
iSCSI(互聯網小型計算機系統接口)是一種在Internet協議網絡上,特別是以太網上進行數據塊傳輸的標準。它是由Cisco 和IBM兩家發起的,并且得到了IP存儲技術擁護者的大力支持。是一個供硬件設備使用的可以在IP協議上層運行的SCSI指令集。簡單地說,iSCSI可以實現在IP網絡上運行SCSI協議,使其能夠在諸如高速千兆以太網上進行路由選擇。
iSCSI對于大多數用戶,比FC SAN更具有競爭力
iSCSI技術和產品的出現,使得用戶構架一個基于IP的SAN 環境變得更加容易,由于目前市場上基于iSCSI的存儲產品越來越多,通過這些產品構架一個SAN存儲環境相對構架一個FC SAN環境整體投入相當的低。這是由于FC SAN需要專用的存儲光纖交換機、HBA卡、FC存儲設備等,這些設備目前還是相當的昂貴,對于一般用戶來講,這個投入可能不是很值得。當然FC SAN環境速度相當快,對于一些大規模數據庫應用、并發度高的用戶環境,這種配置是必須的。而大多數應用環境,對存儲處理能力的要求并不是想象中的那么嚇人,往往連用戶自己都不知道自己需要什么樣的處理能力的存儲。實際上,iSCSI環境下的性能瓶頸主要在網絡上,因為iSCSI是通過以太網傳輸存儲數據的。當然,在iSCSI存儲設備端和服務器端存在封包和解包過程,這些會占用一些系統資源,如果使用專用的iSCSI卡,這種處理都在iSCSI卡上完成,不會占用系統資源。只有我們直接使用普通千兆以太網卡來連接到IP SAN環境中,才需要更多的系統資源。而隨著網絡的傳輸能力越來越強,服務器處理能力越來越強,這些都不是主要問題了。我們完全可以在相當低的預算范圍內,甚者僅僅是以前的一個DAS(直接連接存儲,比如SCSI接口磁盤陣列柜)設備的投入,就可以完成一個IP SAN環境的構建。
iSCSI環境下,構建一個集群IP SAN的構建,使得我們的用戶可以將網絡中的各個服務器,上的數據存放在iSCSI存儲設備上,并且能夠像FC SAN一樣,在iSCSI磁盤陣列上劃分的分區(LUN),這些分區能夠被其它連接在IP SAN中的服務器所共享,這樣就使得我們構架一個高可用性集群環境成為可能。
我們知道,在IP SAN環境下,我們可以不管服務器存放在何處、iSCSI存儲設備存放在何處,只要網絡鏈路能夠通達就可以加入到這個SAN環境中。這樣我們就在這個IP SAN環境中實現了存儲虛擬化。那么怎么實現集群呢,這里我們討論高可用性集群的實現。
高可用性集群解決SAN環境中各個應用系統的高可靠性,簡單的說,就是任何服務器節點的宕機,不會導致運行在該服務器節點的應用系統停止工作,它會根據預定義的備援規則進行轉移,這個轉移包括了應用系統(服務、進程等)、網絡資源(IP)、存儲資源(卷)。這些資源通常被捆綁在一起,我們稱為任務包(Package),它在邏輯上獨立于服務器主機(服務器節點,Node),這樣實際上是把處理單元(服務器節點)和應用系統(任務包)邏輯上完全分開,而任務包可以在任何可以運行的服務器節點上運行,對于客戶端訪問者來講,不知道數據是存放在哪里,也不知道自己使用的應用環境是運行在哪臺服務器上,實現了應用環境的高可用。下面我們以LanderCluster為例,來闡述一下這個環境的實現過程。
LanderCluster是一種集群管理軟件,能夠在IP SAN環境下,構建一個多種工作方式服務器互備環境,這種互備方式,可以是多臺服務器相互備份、一臺備份多臺、多臺備份多臺等。而我們僅僅需要考慮的是集群系統的規劃,也就是我們前面提到的備援規則定義,這是高可用集群系統定義的核心。主要要考慮的包括應用系統的兼容性、服務器處理能力等。
應用系統兼容性主要是指兩個或多個應用系統是否可以在同一臺服務器環境上運行,比如兩個同實例名的ORACLE數據庫是不能在同一臺服務器上同時運行的,那么必須在備援規則上予以規劃,使它們在任何時刻不能向同一臺服務器上切換。
服務器處理能力主要是要分析是否兩個或多個應用如果同時運行在一臺服務器上,該服務器是否會因為過載而死機。通常情況是服務器不會死機,但會變得運行遲緩,這種情況發生,說明備援規則規劃存在問題。
我們可以看出在服務器節點越多的情況下,備援規則會越復雜,但整個系統的規劃會越發靈活,可靠性會越高。因為不同于雙機環境,每臺服務器應用只能是另外一臺做備份服務器,在集群環境下,理論上的其它服務器,只要滿足條件,都可以是備援服務器。
用LanderCluster構建這樣集群
由于集群還是比較復雜,大多數用戶和存儲愛好者對它的認識,認識還不夠深刻,不能夠有效的和實際環境聯系起來,也不知道如何下手來實現這樣的環境。我們為相當多的用戶構建了這樣的集群環境,那么就結合我們的實踐經驗來分享一下這個概念。下面以大多數政府用戶的典型環境進行設計分析,來理解前面提到的概念。
很多的政府用戶典型的應用環境包括:業務數據庫服務器(可能是ORACLE、SQL Server 、MySQL等)、應用服務器(中間件服務器)、辦公自動化服務器(OA 服務器,Notes等)、文件服務器、財務服務器等,這些服務器往往都是單獨運行的,個別環境會在核心的數據庫服務器做個雙機環境,確保關鍵部分高可用,而實際上,現在的用戶系統已經是一個復雜的多機協同提供服務的環境了,數據庫服務器是可靠的,那么應用服務器如果宕機,整個系統環境同樣是不可靠的,會因為其中的某臺服務器宕機而停止服務,這樣環境的整體可靠性,取決于整個環境中各個服務器、應用的可靠性。因此,真正能有效提高整體可靠性的手段,就是采用集群技術。
這些服務器都可以整合在一個IP SAN環境中,通過LanderCluster實現高可用。我們來分析這個環境,這些服務器環境的應用數據都存放在iSCSI存儲設備的相關分區上,iSCSI環境規劃參考下表:
注:下表僅僅是參考環境,取環境中的幾個應用系統進行示范,所有定義內容均是參考數據
服務器 數據庫服務器 應用服務器 文件服務器 財務服務器
主機名 DBserver WEBserver FILEserver FINserver
應用類型(例) ORACLE WEBlogic MySQL
iSCSI分區(LUN) 1 2 3 4
卷定義(Windows環境,Linux是文件系統) D: E: F: G:
IP規劃 192.168.8.1 192.168.8.2 192.168.8.3 192.168.8.4
操作系統 Windows/Linux Windows/Linux Windows/Linux Windows/Linux
在這樣一個環境下,我們需要定義備援規則,首先看這幾臺服務器的應用系統:ORACLE、MySQL、文件服務、WebLogic 之間沒有沖突,也就是說這些應用都可以同時運行在任何一臺服務器上,這是最完美的狀況,可以達到最高的可靠性定義。我們假定服務器處理能力都能夠滿足處理能力的要求。
那么,備援規則的定義可以如下表:
這是一種完美狀態的環境規劃,在實際運行環境中,每個服務器節點的備援理論上達到2個,就已經具有非常高的可靠性了,上面的定義包含了各種極端情況都能保證系統不停止提供服務,比如任意3臺服務器宕機,那臺好的服務器也能提供4個應用的服務。
簡單的以數據庫服務器為例說明工作方式,在正常運行時,四臺服務器分別運行自己的應用。某個時刻數據庫服務器宕機,則LanderCluster會在10 秒鐘之內發現,立刻檢索備援規則表(存放在每個節點機的內存中),發現第一備援機是財務服務器