伺服器群集

伺服器群集

伺服器群集技術最主要的應用即在於網路負載平衡的功能。網路負載平衡使用兩台或更多台一起工作的主機計算機組成的群集,為伺服器提供了高可用性和高伸縮性。

群集的概念


群集由通過輸入/輸出系統互聯的若干伺服器構成。這些伺服器連接到存儲介質中,由分佈資源管理軟體(DRM) 進行管理。其組成部分處在不斷的改進之中:刀片式伺服器,快速InfiniBand I/O技術和更為複雜的DRM軟體,這些部分組合在一起,使得群集成為IT經理們的實用工具。

主要的應用


伺服器群集技術最主要的應用即在於網路負載平衡的功能。網路負載平衡使用兩台或更多台一起工作的主機計算機組成的群集,為伺服器提供了高可用性和高伸縮性。Internet 客戶端使用一個 IP 地址或一組地址訪問群集。客戶端無法區別群集和單一伺服器。伺服器應用程序並不表明它們是在群集上運行的。但是,網路負載平衡群集與運行單個伺服器應用程序的單個主機有很大的區別,因為即使在某個群集主機發生故障的情況下,它也可以提供不間斷服務。群集對客戶端請求的響應也比單個主機快。
如果某個主機發生故障或離線,則網路負載平衡通過將傳入的網路通信重定向到工作的群集主機,從而帶來了高可用性。連到離線主機的現有連接將丟失,但是 Internet 服務仍然是可用的。在多數情況下(例如,就 Web 伺服器而言),客戶端軟體可以自動重試失敗的連接,而且客戶端在接收響應時,只有數秒鐘的延遲。網路負載平衡通過在分配給網路負載平衡群集的一個或多個虛擬 IP 地址(群集 IP 地址)間分配傳入的網路通信,從而帶來了可變化的性能。然後,群集中的主機同時對不同的客戶端請求甚至來自同一客戶端的多個請求做出響應。例如,Web 瀏覽器可以從網路負載平衡群集中的不同主機獲得所有單張網頁中的多幅圖像。這就提高了處理速度,並縮短了對客戶端做出響應的時間。
網路負載平衡使得單個子網上的所有群集主機可以同時檢測群集 IP 地址的傳入網路通信。在每個群集主機上,網路負載平衡驅動程序充當群集適配器驅動程序和 TCP/IP 堆棧間的過濾器,以便在主機間分配通信。

群集的演演算法與原理


網路負載平衡採用一種完全分散式的演演算法,根據傳入客戶端的 IP 地址和埠,以統計方式將其映射到群集主機。此進程的發生不需要主機間進行任何通信。當發現到達的數據包時,所有主機同時執行這種映射,以快速確定哪個主機應當處理這個程序包。這種映射一直保持不變,直到群集主機數發生更改時為止。與集中式負載平衡應用程序相比,網路負載平衡篩選演演算法處理數據包的效率更高,因為前者必須修改和重新傳送數據包。
網路負載平衡通過以下方式,控制從 Internet 客戶端到群集中選定主機的 TCP 和 UDP 通信的分配:配置好網路負載平衡后,群集中的所有主機都接收傳到群集 IP 地址的傳入客戶端請求。網路負載平衡篩選傳到指定 TCP 和 UDP 埠的傳入數據報,之後這些數據報才會到達 TCP/IP 協議軟體。網路負載平衡在 TCP/IP 內管理 TCP 和 UDP 協議,從而逐個埠地控制其操作。
在多播模式下,網路負載平衡可以提供 Internet 組管理協議 (IGMP) 支持,限制交換流。除了指定埠的 TCP 和 UDP 通信以及多播模式中的 IGMP 通信,網路負載平衡不控制任何傳入 IP 通信。它並不篩選其他 IP 協議(例如,ICMPARP),但是下述情況除外。請注意,當使用群集 IP 地址時,應當會看到來自特定點對點 TCP/IP 應用程序(例如 ping)的重複響應。如果需要,這些應用程序可以將專用 IP 地址用於每個主機,以避免這種操作。
為了協調其操作,網路負載平衡主機在群集內周期性地交換檢測信號(詳細信息,請參閱Internet 組管理協議 (IGMP))。IP 多播允許主機監控群集狀態。當群集狀態更改時(例如當主機發生故障、離開或加入群集時),網路負載平衡將調用稱作“聚合”的過程,在該過程中,主機交換數量有限的消息,以確定群集的新的一致狀態,並為主機指定最高主機優先順序,即作為新的默認主機。當所有群集主機在正確的新群集狀態下取得一致后,它們將在 Windows 事件日誌中記錄聚合的完成。完成這個過程一般用不了 10 秒種。
在聚合過程中,其餘主機繼續處理傳入的網路通信。對工作主機的客戶端請求不受影響。完成聚合后,將以故障主機為目標的通信重新分發給仍在工作的主機。經過負載平衡后的通信將在仍在工作的主機間得到重新劃分,以便儘可能好地實現特定 TCP 或 UDP 埠的新的負載平衡。
如果向群集添加了一個主機,則聚合允許該主機接收自己那份經過負載平衡的通信。群集的擴展不影響正在進行的群集操作,而且其實現過程對 Internet 客戶端和伺服器應用程序都是透明的。但是,當選擇了“客戶端相似性”時,它可能影響跨多個 TCP 連接的客戶端會話,因為可能會將客戶端重映射到連接間的不同群集主機。有關相似性的詳細信息,請參閱網路負載平衡和狀態可控的連接。
網路負載平衡假定,主機在群集內正常工作的時間與它同其他群集主機交換檢測信號的時間一樣長。如果在多次檢測信號交換中,其他主機都沒有接收到來自任何成員的響應,則它們將啟動聚合,重新分發本來應由失敗主機處理的負載。

WIN 2003中的伺服器群集功能


伺服器群集功能最早是為 Microsoft Windows NT® Server 4.0 操作系統設計的,這一功能在 Microsoft Windows Server 2003 Enterprise Edition 和 Windows Server 2003 Datacenter Edition 操作系統中又得到重大改進。您可以藉助伺服器群集功能將多台伺服器連接在一起,從而為在該群集中運行的數據和程序提供高可用性和易管理性。伺服器群集提供了以下三種主要的群集技術優點:
更高的可用性。允許伺服器群集中的服務和應用在硬體或軟體組件故障下或在計劃維護期間仍能不間斷地提供服務。
更高的可擴展性。支持通過增加多個處理器(在 Windows Server 2003 Enterprise Edition 中最多可達 8 個,在 Windows Server 2003 Datacenter Edition 中最多可達 32 個)和額外內存(在企業版中,隨機存取內存 [RAM] 最多可達 8 GB,在 Windows Server 2003 Datacenter Edition 中最多可達 64 GB)來擴展伺服器。
更高的可管理性。允許管理員如同管理單台計算機那樣管理整個群集內的設備和資源。
該群集服務是兩種互為補充的 Windows 群集技術(為了擴展 Windows Server 2003 和 Windows 2000 基礎操作系統而提供的)中的一種。另一個群集技術是網路負載均衡(Network Load Balancing,NLB)。該技術作為伺服器群集的互補,可面向前端應用和服務(如 Internet 或 Intranet 站點、基於 Web 的應用、媒體流以及 Microsoft 終端服務)來支持高度可用和可伸縮的群集。
計算機群集的出現和使用已經有十幾年的歷史。作為最早的群集技術設計師之一,G. Pfister 對群集的定義是,“一種并行或分散式的系統,由全面互連的計算機集合組成,可作為一個統一的計算資源使用”。
將數台伺服器計算機組合成一個統一的群集,多台伺服器將可以在用戶或管理員不必了解細節的情況下分擔計算負載。例如,如果伺服器群集中的任何資源發生了故障,則不論發生故障的組件是硬體還是軟體資源,作為一個整體的群集都可以使用群集中其它伺服器上的資源來繼續向用戶提供服務。
換言之,當資源發生故障時,同伺服器群集連接的用戶可能經歷短暫的性能下降現象,但不會完全失去對服務的訪問能力。當需要更高的處理能力時,管理員可以通過滾動升級過程來添加新資源。該過程中,群集在整體上將保持聯機狀態,它不僅可供用戶使用,而且在升級后,其性能也將得到改善。
Windows Server 2003 Enterprise Edition 和 Windows Server 2003 Datacenter Edition 操作系統是完全針對用戶和業務對群集技術的要求而設計開發的。主要目標是:開發一種能滿足大多數商業機構和組織的群集需求的操作系統服務,而不是僅針對小型和特定的市場段。
Microsoft 市場調查顯示,隨著中小型商業機構的日常運作已越來越離不開資料庫和電子郵件,因此它們對高可用系統的需求很大,而且這種需求日趨旺盛。易於安裝和管理,被認為是這種規模的機構最關鍵的要求。Microsoft 的調查同時顯示,那些對高性能和高可用性具有很高要求的大企業對基於 Windows 的伺服器也日益感興趣。
作為 Windows NT、Windows 2000 和 Windows Server 2003 基礎操作系統的集成化擴展而開發的伺服器群集服務,正是源於此次市場調查。該服務同其設計目標保持了一致,通過它可將多台伺服器和數據存儲組件連接成一個易於管理的單元,即伺服器群集。對於大型和小型企業中運行基於 Windows Server 2003 和 Windows 2000 的應用程序的系統,伺服器群集功能將可以賦予它們高可用性和易管理性。伺服器群集功能還提供了開發可利用伺服器群集的高可用功能並且具有群集意識的新應用程序所必需的應用程序介面和工具。

安裝配置群集服務


以在Windows Server 2003系統中安裝配置群集服務為例介紹方法:
第1步,依次單擊“開始”→“所有程序”→“管理工具”→“群集管理器”菜單,打開“群集管理器”窗口,並自動打開“打開到群集的連接”對話框。這個對話框為用戶提供了創建新群集、添加節點到群集和打開到群集的連接三個選項。在“操作”下拉菜單中選擇“創建新群集”命令並單擊“確定”按鈕。
第2步,打開“新建伺服器群集嚮導”,在歡迎嚮導頁中單擊“下一步”按鈕。在打開的“群集名稱和域”嚮導頁中輸入一個群集名稱,且該名稱必須是有效的計算機名稱。另外需要選擇一個域名,新的群集將創建在這個域中。採用默認域名,單擊“下一步”按鈕。
第3步,在打開的“請選擇計算機”嚮導頁中提示用戶輸入將要安裝新群集的第一個節點計算機,默認情況下將自動選擇本地伺服器。單擊“下一步”按鈕。
單擊“高級”按鈕並選中“高級(最小)配置”複選框后,則在“新建伺服器群集嚮導”完成最後的步驟后需要手動添加共享設備
第4步,接著“新建伺服器群集嚮導”將使用用戶提供的信息來分析所有為了成功創建群集所必需的因素。嚮導主要通過以下五個方面進行分析:
(1)檢驗現有群集:驗證網路上不存在具有相同名稱的群集;
(2)建立節點連接:連接到目標伺服器並初始化群集創建過程;
(3)檢驗節點可行性:確定目標伺服器是否滿足所有的先決條件;
(4)查找節點上的公共資源:確定共享資源的可用性,包括列舉共享磁碟資源(為了創建仲裁)和網路適配器(為了安裝群集網路);
(5)檢驗群集可行性:驗證群集的創建是可能的並為仲裁指定資源。
嚮導將用對勾表示成功,用叉號表示失敗,而帶有嘆號的黃色三角形表示警告,其中警告標識可以忽略。如果分析中任何一個方面存在問題,則必須清除故障后才能繼續操作。通過分析驗證后單擊“下一步”按鈕。
第5步,打開“IP地址”嚮導頁,這時需要設置群集的IP地址。該地址將作為DNS解析群集名稱時的目標地址,且該地址應該跟“公用連接”的IP地址處於同一個網段。本例中輸入該網段中一個空閑的IP地址10.115.1.168。設置完畢單擊“下一步”按鈕。
第6步,在打開的“群集服務賬戶”嚮導頁中需要提供一個域用戶賬戶,以便對群集進行管理。這個賬戶將被放在本地管理員組(Administrators)中,並被賦予在目標伺服器上的適當許可權。這裡輸入前面創建的群集用戶賬戶Cluster和其密碼,並單擊“下一步”按鈕。
第7步,打開“建議的群集配置”嚮導頁,在該嚮導頁中列出了到目前為止用戶設置的所有信息。確認無誤后單擊“下一步”按鈕。
第8步,嚮導開始創建並啟動伺服器群集,這個過程被分成了4個主要部分:
(1)重新分析群集:重複原先在檢驗群集可行性時選擇的步驟。一旦這種可行性被驗證,群集配置就已經初始化了;
(2)配置群集服務:將群集服務賬戶分配到合適的組,並賦予其合適的用戶權利。然後創建並啟動與群集有關的服務、創建並配置群集資料庫以及創建並啟動Cluster Service(群集服務);
(3)配置資源類型:配置Generic Script和Majority Node Set資源類型;
(4)配置資源:創建、配置並啟動群集組中的資源(包括仲裁資源)。
創建完畢單擊“下一步”按鈕。
群集服務安裝完畢以後會自動連接到群集。
如果由於配置錯誤導致無法連接到群集而需要取消群集配置時,可以在“命令提示符”窗口中輸入命令行“cluster node 節點名稱 /forcecleanup”並按回車鍵來實現。