數年以來,Microsoft一直致力於對自身伺服器解決方案的伸縮能力、可用性與可靠性進行擴充。群集技術已被證明是實現這一目標的有效途
徑,Microsoft充分支援群集技術理念,並致力於使其成為Microsoft作業系統及相關產品的整合化組成部分之一。隨著Windows
2000的正式發布,Microsoft群集解決方案已經逐漸步入成熟階段。
可伸縮能力、可用性與可靠性
群集是一組通過協同工作方式運行同一套應用程式並針對用戶端及應用程式提供單一系統映像的獨立電腦。群集技術的目標在於通過多層網路結構進一步提高伸縮能力、可用性與可靠性。
可
伸縮性是指一台電腦在維持可接受效能的前提下處理不斷提高的工作負載的能力。硬體裝置延展性(內含式擴充,根據Microsoft的說法)依賴於通過
具備擴充能力的大型電腦來執行各項操作。軟體產品延展性(外延式擴張)依賴於通過協同工作方式組織在一起的多台電腦所形成的群集,它與RAID驅動
器陣列是兩種不同概念。實際上,Microsoft使用了不太正規的術語電腦冗餘陣列(RAC)來稱呼自身的外延式擴張群集。就像可以通過向RAID陣
列中添加磁碟的方式來提高效能一樣,您同樣可以通過向外延式擴張群集中添加節點的方式來提高效能。
可用性與可靠性是兩種緊密相關但又略有不同
的概念。可用性是指存在品質、備用能力、擷取簡便性以及可訪問能力。可靠性則是指系統牢固程度。即便是最為可靠的系統總有一天也會出現問題。硬體裝置製造
商通過在諸如磁碟機、電源供應裝置、網路控制卡和冷卻風扇這樣的關鍵技術領域中提供冗餘的方式提前針對可能出現的故障採取準備措施。然而,在一台計算
機上所提供冗餘無法為使用者避免應用程式故障。如果某台伺服器上的資料庫軟體出現故障,那麼,儘管這台伺服器可能非常可靠,但通過軟體與伺服器相互結合方式
提供的功能仍將無法使用。由此可見,單台電腦根本無法勝任由群集承擔的所有必要延展性、可用性及可靠性挑戰。
群集能夠類比RAID陣列方
式來提供可用性與可靠性。在諸如RAID 1或RAID
5這樣的容錯磁碟配置方案中,所有磁碟均按照冗餘陣列方式協同工作。如果某塊磁碟出現故障,您可以將其拔下並插入一塊新的磁碟,陣列中的其餘部分將繼續運
行--無需配置,無需安裝,最重要的是,不會造成停機。RAID系統自動對新的磁碟機進行重建,以便使其能夠與其它磁碟機協同工作。與此類似,當群集中的
某台電腦出現故障時,您只需使用一套新的系統對其進行替換,整個群集將繼續保持運行狀態。某些群集軟體能夠自動對伺服器進行配置並將其整合到群集當中
--所有相關操作均在群集處於可用狀態下完成。
四種群集解決方案
Microsoft提供了四種基本群集技術:Microsoft群
集服務(MSCS)、網路Server Load Balancer(NLB)、組件Server Load Balancer(CLB)和Application Center
2000。這些服務通過三種解決方案提供:MSCS、NLB和Application Center。CLB是Application
Center的組成部分之一,並且只能通過Application Center加以應用。NLB既可以通過Application
Center使用,也可以作為一種獨立解決方案使用。Windows 2000 Advanced Server與Windows 2000
Datacenter Server本身包含MSCS和NLB,但您必須單獨購買Application Center。
表1總結了這四種群
集技術在不同Windows 2000 Server與Windows NT Server
4.0產品家族成員中的可用性。正如您所想象的那樣,這些技術中沒有一種適用於Windows 2000 Professional或Windows
NT Workstation 4.0。
Microsoft叢集服務
最
初代號為Wolfpack且先後被稱為Microsoft叢集伺服器與Microsoft叢集服務的MSCS是Microsoft在NT群集技術領域中的
首次重拳出擊,它是公認的最佳Microsoft群集解決方案。在MSCS群集中,MSCS軟體最多可以同四台運行在高速網路上的實體電腦建立串連。通
常情況下,群集中的電腦能夠按照“活動--活動”方式共用相同的儲存子系統與功能,這意味著所有群集電腦(節點)均可主動通過共用負載的方式協同完成
工作,並在某個節點出現故障時分擔它的工作。圖1顯示了一個4節點MSCS群集。
圖1 利用Windows 2000 MSCS實現的4節點群集
MSCS
的主要用途是通過自身提供的容錯能力提高應用程式可用性。容錯能力是指將相關處理過程從某個節點上的故障應用程式(由於硬體裝置故障或軟體錯誤等原因所導
致)移植到群集中其它健康節點上的群集功能。當故障應用程式得到恢複後,群集應當能夠對原先的叢集節點實現“故障返回”。MSCS能夠在不丟失任何與故障
應用程式相關資料的前提下對群集上所啟動並執行應用程式進行故障恢複與故障返回管理,並且能夠在故障恢複過程中維護使用者及應用程式狀態。這種類型的群集功能被
稱作有狀態群集功能。與此相反,NLB、CLB和Application
Center在增強可用性的同時,提供無狀態群集功能與動態Server Load Balancer能力(我將在稍後部分中詳細討論這些內容)。
對於諸如電子郵件伺服器、數
據庫應用程式之類的應用程式,MSCS是一種良好的運行方式。假設您決定在一個4節點MSCS群集上運行Microsoft Exchange
2000 Server。當安裝MSCS軟體以及適用於群集的Exchange 2000版本後,您可以對群集進行配置,以便使Exchange
2000能夠在主要節點發生故障時在備份節點上進行故障恢複。當故障發生時,主伺服器上肯定存在處於開啟狀態的使用者會話,然而,MSCS能夠在不丟失任何
資料的情況下快速、自動的完成故障恢複。備份節點將從故障節點上接替工作負載及相關資料,並繼續為使用者提供服務。
MSCS同時還允許使用者在應
用程式升級過程中繼續進行工作。您可以採取滾動升級方式(例如每次在一個叢集節點上升級應用程式並確保其它節點上的應用程式繼續處於可用狀態)而不必在升
級過程中停止使用應用程式。舉例來說,假設您擁有一個雙節點群集。其中節點1運行Exchange 2000,節點2運行Microsoft SQL
Server,您希望對這個群集進行配置,以便使Exchange 2000和SQL Server能夠在必要情況下相互實現故障恢複。當需要對SQL
Server進行升級時,您可以通過MSCS群集管理器在節點2上啟動SQL Server故障恢複功能。當節點1接替SQL
Server運行任務(同時繼續運行Exchange 2000)時,您便可以在節點2上對SQL
Server進行軟體升級。當升級工作完成後,您可以通過故障返回方式將SQL Server從節點1重新移至節點2上運行,並對節點1上的SQL
Server重複執行相同的軟體升級操作。當節點1同樣完成升級後,整個SQL Server軟體便在未影響使用者使用的情況下完成了升級任務。
與
其它三種Microsoft群集解決方案不同,您通常無法利用MSCS面向更多使用者對應用程式進行擴充。MSCS群集無法向NLB、CLB和
Application
Center那樣通過無狀態非共用方式在節點之間提供動態Server Load Balancer能力或實現應用程式分布式運行。實際上,利用MSCS實現應用程式伸縮能力的唯一可行方
式便是在安裝過程中手工將應用程式分配給不同叢集資源。舉例來說,如果需要在Exchange
2000平台上為5000名使用者提供服務,您可以應用2節點活動-活動群集並在每個節點上為2500名使用者提供服務。通過這種方式,您不但可以擷取通過兩
台伺服器為使用者提供服務所實現的效能優勢,同時還能在故障情況下實現必要的可用性。但是,當故障恢複發生時,剩餘節點必須能夠在故障節點恢複使用前單獨為
所有5000名使用者提供服務。