應用Win2000創建支持企業級訪問的Web集群服務器
http://www.usingdo.net/usingdonews/usingdo14.asp?typeid=1&usingdottid=4
作為Microsoft公司全力推出的劃時代操作系統,Windows 2000的目標是徹底改變用戶的業務模式,快速建立起商務企業級的互聯網絡信息系統。Internet Information Services 5作為Windows 2000網絡信息服務中的核心部分,更加提供了強大的功能。如何創建支持企業級海量用戶訪問的Web站點?對于例如電子商務網站和ISP客戶的企業級用戶訪問需求,保證服務的可用性和可靠性的最佳途徑是建立Web集群服務器。對于這一問題,Windows 2000 Advanced Server提供了很好的可伸縮性服務。
Web集群是由任意多臺計算機組成的一種Web站點。當設計者創建Web集群時,可以選擇三層Web體系結構(由Web服務器程序,COM+應用程序和數據庫應用程序組成)。三層體系結構的優點是設計者可以將以下的各層次任務分散到不同的服務器上,而不是將它們都結合在一臺服務器上:
? 表示層:發布內容
? 商業邏輯層:運行應用程序
? 數據層:訪問數據庫
使用若干臺低成本服務器,設計者可以很容易地處理大量的客戶請求,而不會產生任何不必要的延時。在多臺計算機之間共享負載對于企業用戶支持重量級應用程序是至關重要的:例如,處理財政事務,訪問數據庫,支持公司Intranet以及執行其他重要的日?;顒?。
一、相關術語
與Web集群相關的兩個重要術語是:集群和負載平衡。下面將簡要地介紹一下這些術語在Web集群中的含義。
1、集群
集群(clustering)是指按組劃分不相互依賴,而又象管理一套單一系統一樣對它們進行管理的一批服務器。一個服務器集群的最低要求如下:
? 至少有兩臺(或多臺)聯網服務器
? 集群管理軟件,例如Network Load Balancing 或 Cluster Service 集群管理軟件。
這些集群軟件執行如下的任務:
? 檢測集群中哪臺計算機有故障
? 從任何故障或服務器過載情況中恢復系統
? 在集群中所有的服務器上平衡請求負載
? 將這批服務器作為一個單一系統進行管理
將服務器集群起來成為一個系統,具有以下的優點:
? 總是能夠處理到來的請求。因為來自于客戶的請求可以在幾臺服務器之間平衡分配,從而減少了某臺服務器過載的可能性。如果一臺服務器過載或故障,負載平衡能夠將請求重新在其余的服務器上分配,從而不會干擾客戶的正常訪問。
? 易于管理。不用單獨地管理每臺服務器,管理員只需將它們作為一個單元進行管理。
? 更大的可擴展性。設計者可以很容易地添加更多的服務器到集群中,或者對已有的服務器升級,而這并不會干擾客戶的請求。
2、負載平衡
負載平衡(load balancing)是指在一個Web集群中的多臺服務器之間均衡地分配客戶請求。一般地,負載平衡能增加系統吞吐率,而同時保持較低的響應時間。通過使用嵌入到Windows 2000 Server中的Network Load Balancing,主機能夠檢測每一個來訪的IP報文,只有符合接收條件的才接收它。每個Network Load Balancing主機可以指定它將處理的報文百分比。作為一個選項,報文也可以平等地在所有的主機之間進行分配。如果一個主機故障,則負載平衡機制就會在剩余的主機之間重新分配報文。
通過使用Network Load Balancing提供的可擴展性,當需求增加時,管理員可以升級已有的服務器或者將新計算機添加到集群中,以處理更多的IP通信量。
二、Windows 2000 Advanced Server的分組負載平衡特性
我們下面將描述一下由Windows 2000 Advanced Server 提供的負載平衡特性:Network Load Balancing和Cluster Service 。
Network Load Balancing 和Cluster Service 可以增強任何設施的安全可靠性。將它們分組是一種功能強大的方法,用來將后端數據庫和事務系統與基于Web的前端相結合,從而有效地提供給用戶所需的可伸縮性、客戶要求的高可用性。下面簡要列出了每個解決方法,并給出如何將它們集成到一個三層配置中的實例:
? Network Load Balancing 平衡那些主要由入站TCP/IP通信產生的負載。管理員可以在第一層上建立Network Load Balancing,并且在集群的Web服務器上平衡站點的訪問。
? Cluster Service是管理員對那些要求高可用性的數據庫服務進行分組的理想選擇,這些數據庫服務可以是Microsoft SQL Server 7.0或其他數據敏感應用。管理員可以在第三層上建立Cluster Service,以完成諸如用戶記帳和數據庫定購的任務。
三、創建一個三層Web集群
通過將這兩個負載平衡的特性結合起來,這些特性將是三層體系結構應用程序的理想支持。例如,如果電子商務網站安裝使用一個基于Web的零售業務,則可以建立如下的集群:
? 在多臺服務器上建立前端、用戶界面(UI)層,使用Network Load Balancing以平衡和分配客戶TCP/IP連接。當通信量增加時,升級已有的集群或者添加計算機到配置中。這樣就保證站點不論什么時候都能夠處理訪問請求。
? 使用Cluster Service,以便為應用程序和三層應用程序的數據服務層提供結點故障接管功能。這將創建一個可靠的平臺用于數據庫、消息和類似的應用服務。
由于傳統的電子商務網站在單一的服務器上存放所有這三個層次,這種拓撲結構將會引入一些新的概念。
圖1顯示了一個示例Web集群的特征,其中箭頭表明內容是怎樣進行復制的。
圖1 示例Web集群服務器結構
下面將舉例說明如何創建Web集群服務器。
1. 計算硬件需求
為了建立一個用于基于Web的零售業務,設計者需要確定實際需要多少臺Web服務器來滿足一個特定的應用??梢韵葟囊慌_服務器開始,對其測試,而后在必要時對其進行升級。
在測試了單臺服務器之后,設計者可能會發現服務器CPU的利用率特別高,而高速緩存命中率很低,并且在隊列服務器中還留有許多請求。此時,可以通過添加處理器、內存、以及其他的硬件設備的方法來增加系統性能。如果這些解決方案也不能改善性能,則可以考慮添加另外的Web服務器。
由于沒有現成的數學公式用于確定需要添加的服務器最佳數目,因此設計者可以從多個Web測試工具中進行選擇,以幫助確定服務器的最佳數目。其中,一種工具是Web Application Stress Tool,該工具允許設計者模擬測試站點上具有幾千個用戶負載的情況。與System Monitor工具相結合,設計者可以很容易地確定一臺單一的Web服務器的負載極限。Web服務器的主要瓶頸在于HTTP層,為了打破該瓶頸,設計者應該增加Web服務器。
在測試了單臺服務器之后,設計者可能決定升級,以便可以有效地處理用戶的Web訪問請求。例如,可以添加兩臺Web服務器以組成Web集群的第一層。
2. 創建第一層
隨著兩個新Web服務器的加入,設計者現在必須通過運行Network Load Balancing來平衡這三個服務器間的請求負載。三臺服務器從客戶角度來看只是一臺服務器。因為設計者只分配一個IP地址給一個集群中的三臺服務器,因此管理集群十分容易。通過配置一臺DNS服務器,設計者可以使用IP地址192.16.1.10建立www.example.com。該IP地址代表了集群中的所有主機(此時為三臺服務器)。關于如何分配一個IP地址,請參考Windows 2000在線文檔中的“Configure TCP/IP Settings(配置TCP/IP設置)”主題。
通過這種配置,設計者可以將站點拓撲結構由一臺Web服務器改變為三臺?,F在可以使用Web Application Stress Tool再次測試應用程序,將會看到性能立即得到了改善。接下來,再次測試集群,但這次要使用幾千個用戶進行模擬,確認站點消耗的資源遠小于單臺計算機運行IIS 5所消耗的資源。如果應用程序需要更高的可用性,則可以添加更多的主機,最多為32臺。
除了創建一個集群外,改善可靠性的另一種方法是禁止開發者在Web服務器上開發產品。通過建立一臺開發服務器(例如dev.example.com),設計者可以在此服務器上發布內容和測試其應用程序。而后能夠將所有的授權和開發移交給服務器。
如果設計者在開發服務器(dev.example.com)上安裝了FrontPage Server Extensions,用戶就可以使用FrontPage連接到一臺開發服務器,寫入內容以及創建應用程序,而不用將應用程序引入到Web產品服務器上。
一旦數據已準備好用于產品,則使用Site Server 3.0的Content Deployment特性將數據從階段服務器復制到Web服務器產品上。在三臺Web服務器間必須相同復制的單元是Web內容。當設計者需要復制數據時,Content Deployment將很容易地實現該過程,從而可以節省大量時間。
當站點規模增長時,需要為每臺服務器設置一個獨立的日志文件。如果三臺服務器在同一個Web集群中,則必須分析三個單獨的日志文件,可以預先地將所有日志導入到一個源中來幫助簡化任務。Site Server Usage Analyst給設計者提供了一種簡易的方法將這些文件導入到一個源中,而后設計者可以生成定制報告來表示Web站點上的所有通信量。
要獲得更高的可靠性和可用性,設計者可以添加另一個集群并將其限制在業務內容客戶上。在圖1中,該集群稱為premium.example.com。這里的策略是將任務緊急的業務請求轉換到premium.example.com,而將www.example.com用于一般公眾服務。
一旦設計者添加了服務器,創建了開發服務器并且簡化了日志,就將會注意到站點變得十分復雜。為了處理增加的復雜性和應用程序數量,設計者可能需要創建其它層,以便維持Web站點的有效性和性能。
3. 創建第二層
當ASP應用程序與Windows 2000組件一起相結合運行時,站點很快會變得更為復雜。ASP應用程序可以被認是為將表示層連接到應用和數據服務層的中介。ASP提供了一種豐富而強有力的開發環境。但如果真的要增加應用程序的整體性能,應考慮添加COM+組件。
使用ASP應用程序調用一個包含用戶業務邏輯的組件,該組件駐留在第二層的應用程序服務器上。一個應用程序服務器可以簡單地是一個Windows 2000 Server,它主要為組件提供處理器功能。
至此,駐留在第一層Web服務器上的ASP應用程序調用第二層應用程序服務器來處理業務邏輯。該處理過程的一部分會請求組件從位于第三層的后端數據庫中提取數據。
4. 創建第三層
為了在第三層獲得高可用性,設計者需要安裝Cluster Service。為了存儲所有組成第三層的后端數據,大多數企業級用戶都需要一臺高端對稱多處理(Symmetric Multi Processing ,SMP)服務器(例如,一個8個處理器的SMP,帶有4GB的RAM),以運行SQL Server 7.0等大型關系數據庫。Cluster Service 可以處理任務緊急的數據庫管理、文件和Intranet數據共享、消息機制以及通用業務應用程序。
最好再添加一臺服務器用于故障處理,而不是僅僅依靠一臺高端Windows 2000 Server。
綜合起來,這兩臺服務器為訪問請求提供了更高的可用性,并且簡化了管理數據和應用程序的任務。Cluster Service不僅允許設計者將兩臺服務器連接到一個集群中,而且也可以自動地檢測并恢復服務器和應用程序故障。另外,它可以巧妙地處理服務器操作的工作負載,使管理員在不必關閉服務器的情況下進行維護規劃。
Cluster Service具有內置機制,可以處理服務器的故障。如果Cluster Service檢測到服務器故障,則它會自動地將資源(例如磁盤驅動器和IP地址)的所屬關系從一臺故障服務器傳送到另一臺正常的服務器上。而后它在正常服務器上重啟故障服務器上的工作負載。從檢測到一個故障到重啟另一臺服務器的整個過程,通?;ㄙM不到一分鐘的時間。
如果一個單獨的應用程序故障(但服務器沒有故障),則Cluster Service將試圖重啟同一服務器上的該應用程序。如果仍然失敗,則Cluster Service將該應用程序的資源轉移到另一臺服務器上,并且在該服務器上重啟該應用程序。關于Cluster Service的詳細信息,請參考Windows 2000 Advanced Server在線文檔。
5. 總結
現在可以很快地概括一下整個網站的創建歷程。在本示例情況下,設計者可以從一臺單一的IIS 5 Web服務器開始,在這里可以完成各種必要的事情。由于用戶的應用程序需要很高的可用性、可伸縮性和性能,因此設計者可以創建一個三層Web體系結構,并且對每個層次使用具有高可用性的Microsoft技術。而后可以使用Web Application Stress Tool測試單臺服務器并實現它。為了獲得更高的可用性,則需要創建Web集群。
為此,應先計算出三臺服務器已經足夠了。而后安裝Network Load Bulancing,并且這三臺服務器實質上被看作一臺服務器。接下來,設計者應該添加第四臺Web服務器作為開發階段服務器,以便用戶可以發布內容到該服務器上。為了復制已開發的內容,設計者在階段服務器和Web服務器產品上應使用Site Server 3.0 的Content Deployment特性。這樣,用戶就可以通過FrontPage連接到開發服務器(dev.example.com),并且設計者能夠容易地將內容復制到Web服務器產品上。
為了增強第二層的性能,設計者要添加一個COM+應用程序,并且使用來自第一層的ASP應用程序來調用來自第二層的預編譯組件。另外,這些第二層組件會調用第三層數據服務。
運行SQL 7.0的一個高端SMP服務器組成了系統的第三層。為了獲得高的可用性,設計者應添加Cluster Service來確保系統是一個具有容錯能力的故障接管系統。這種拓撲結構提供了高可用性和可伸縮性,盡管存在可預見的故障(例如服務停止或硬件升級)或者不可預見的故障(例如硬件故障或軟件完整性丟失)。
如果設計者是一個ISP,則可以為自己的企業級用戶使用該體系結構,該企業級用戶可以運行電子商務站點,或其他任務緊急的Web商務應用程序。設計者也可以將該拓撲結構用于普通或日常的Web站點,其中會有許多用戶參與到這一集群中。