計算機羣集技術概述(二)轉載


  二、並行應用程序技術


應用程序決定了計算過程中的指令流和數據流,所以應用程序能否並行化是能否利用並行計算機的硬件架構的關鍵所在。以下是一些對並行應用程序常用技術的簡單介紹。


■ 數據和功能並行化:

這時將計算任務分配到多個處理器上執行的最基本方法。數據並行化是指將需要處理的數據劃分到不同的處理器上,然後所有處理器執行相同的指令流來處理各自 的數據。設想一下一個求1000個數的正弦函數的程序,如果您有1000個處理器,您可以爲每個處理器分配一個計算正弦函數的任務,然後讓1000個處理 器同時開始執行。這是一種SIMD的實現技術。功能並行化是指將應用程序中的不同功能分配到不同的處理器/內存上去完成,是一種MIMD的實現方法。

■ 循環級並行化:

對於大多數科學計算任務而言,大部分的時間花費在循環計算之中。在共享內存架構的系統中,"並行編譯器"可以檢測到循環中互無關聯的計算步驟並將它們分配給不同的處理器去執行。


■ 數組語句(Array Syntax):

SIMD的另一種實現方法。在程序設計語言中包含對數組成員進行一次性賦值和計算的語句。在並行系統上,並行編譯器會自動對這些賦值和計算進行並行化處理。


■ 信息傳遞(Message passing):

在分佈式內存架構上,每個處理器只能訪問自己的內存。當處理器之間需要進行數據交換時,信息傳遞是目前最爲廣泛使用的技術。從程序員的角度來看,這種技 術就是一系列發送與接收調用的組合。當應用程序變得比較龐大而複雜時,這種技術的使用會變得非常複雜和容易出錯,比如一個處理器等待的消息永遠無法收到等 等。但是一旦程序設計成功,這種技術在分佈式內存系統和共享內存系統上都能夠獲得很好的性能。


三、常用的並行計算工具軟件


並行計算工具軟件是指那些幫助程序設計人員更好或更簡單地利用並行架構的工具。下面我們介紹最常用的幾種。


■ 編譯器(Compiler):

編譯器在並行計算中的作用分爲兩個層面,一是像在串行系統上一樣生成優化的代碼序列,二是將可以並行執行的部分進行並行化處理。儘管編寫出能夠把傳統 的、串行結構的應用程序編譯爲完美的並行代碼的編譯器是幾乎不可能的任務,但計算機科學家們的不懈努力正在使編寫並行程序越來越容易。目前很多的編譯器可 以藉助程序員寫在程序中的簡單編譯指導生成高質量的並行代碼,如數組語句的處理等。在目前的多數共享內存架構的系統上,編譯器已經可以進行循環級的並行 化。


■ 調試器(Debugger):

調試器可以說是程序設計的必備工具。在並行計算系統中,特別是分 布式內存架構的系統中,一個調試器通常面臨以下的挑戰:必須能夠反映出信息傳遞的過程和狀態;在查看變量時,必須能夠查看每個處理器上的同名變量的狀態; 由於在科學計算中大數組的廣泛應用,必須能夠以直觀的方式表示出數組成員的值,等等等等。

■ 性能監測/分析工具:

由於並行計算所帶來的程序並行執行的複雜性和不可預見性,您會需要一個功能強大的性能監測/分析工具來幫助您完成分析並行化程度、信息傳遞特性以及判定系統瓶頸等工作,以便使並行系統投入產能應用時能夠有最好的性能狀態。


■ 並行化工具/API:

並行化工具是指將串行源代碼轉化爲並行源代碼的工具,通常只需要程序員在程序中插入簡單的宏,就可以完成向並行源代碼的轉化。並行API主要是指實現了完整信息傳遞功能的軟件包,使得程序員指需要進行簡單的調用就可以實現信息傳遞,而無須自己實現其中的每一個細節。


綜上所述,一個成功的並行計算系統的核心是硬件架構、應用程序和輔助軟件。目前廣爲應用的硬件架構是共享內存和分佈式內存,前者可以簡化程序設計但成本 高,可擴展性差;後者成本低,擴展性好但會導致程序設計複雜化。應用程序在設計上會因爲硬件架構的不同而有所不同,其中信息傳遞技術雖然設計複雜但在兩種 硬件架構上都能夠獲得高性能。恰當的輔助工具不僅使程序設計更爲簡單,而且實際上,在大規模的應用系統中,沒有這些工具幾乎不可能實現穩定的、高性能的並 行計算。

Linux HPC Cluster


HPC(高性能計算)雖然已經有很多年的歷史了,但是其普及程度一直不是很高。主要原因不外乎以下幾點:


價格昂貴。相對較小的生產規模使得相關的部件成本極高,價格常常使用戶望而卻步。


不容易擴展。由於沒有使用市面上通用的模塊,HPC系統的擴展要麼不容易在技術上實現,要麼成本難以令用戶接受。


對使用環境要求苛刻。過去,一套大的HPC系統可能需要像籃球場那麼大的機房去安裝,可以想見配套的建築、電源、佈線和散熱措施的準備會有多麼複雜和昂貴。

近年來,隨着計算機技術的進步,一種新的HPC系統正迅速崛起,這就是使用運行Linux操作系統的Intel平臺的計算機來構建HPC Cluster。這是一種分佈式內存的HPC架構,針對上面提出的三個問題,它能夠提供如下的好處:


由於使用Linux操作系統和通用的Intel平臺,集羣中的各個節點(計算機)的價格將會相對低廉;


由於使用通用的硬件平臺和標準的網絡組件,集羣的擴展容易實現而且價格低廉;

不難看出,Linux HPC最大的優點是廉價!這一特點使得更多的"計算飢渴"的用戶可以選擇使用HPC系統。作爲HPC技術最先進的公司,幾年前IBM就已經幫助包括殼牌石 油在內的許多客戶建立了1000節點以上的Linux HPC系統,這些系統至今仍然在全世界最快速的計算機系統中佔據着一席之地。


一個好的Linux HPC系統完全不會在任何方面遜色於其它的分佈式內存HPC系統,但問題是想要構建一個好的Linux HPC系統事實上是很難的。請考慮以下這些問題:


您想要一個廉價的Linux HPC系統。您應該購買什麼樣的計算機來構成這個系統才能避免在實施和使用中的問題?


您有64臺Intel平臺的計算機來運行Linux系統。爲了把它們組建成爲一個HPC系統,您還需要購買哪些硬件設備?


爲了放置這些硬件設備,您需要多少個標準機架和什麼樣的機房來安裝?


爲了將新的HPC系統整合到您的網絡環境中,您需要多少個額外的IP地址?您應該怎樣分配它們?


爲了將新的HPC系統整合到您的網絡環境中,您需要多少根網線?如果數目很多的話,您如何保證在安裝的時候不會弄錯?


您打算怎麼爲這些計算機安裝系統?如果系統崩潰了,您又如何保證在最短的時間裏讓它們恢復運作?


您的應用程序打算使用什麼並行API開發?


您打算使用什麼樣的程序調度機制和哪一個調度器?


您如何做到像管理一臺計算機一樣管理這個HPC Cluster?
負載平衡技術

LoadBalance(負載均衡)羣集


負載均衡羣集系統使應用程序處理負載或網 絡流量負載可以在計算機羣集中儘可能平均地分攤處理。這樣的系統非常適合於運行同一組應用程序的大量用戶。每個節點都可以處理一部分負載,並且可以在節點 之間動態分配負載,以實現平衡。對於網絡流量也如此。通常,網絡服務器應用程序接受了太多的入網流量,以致無法迅速處理,這就需要將流量發送給在其它節點 上運行的網絡服務器應用。還可以根據每個節點上不同的可用資源或網絡的特殊環境來進行優化。在網站,電子郵件提供商,VOD(Video On Demand)方面有廣泛的應用。


以下將介紹負載均衡羣集。


什麼是負載均衡羣集?-- 解釋(定義,一般的框架結構,策略,哪些產品,技術區別,發展)


負載均衡羣集就是帶均衡策略(算法)的服務器羣集。負載均衡羣集在多節點之間按照一定的策略(算法)分發網絡或計算處理負載。負載均衡建立在現有網絡結構之上,它提供了一種廉價有效的方法來擴展服務器帶寬,增加吞吐量,提高數據處理能力,同時又可以避免單點故障。


一般的框架結構如下圖(以Web訪問爲例,其它應用類似)。後臺的多個Web服務器上面有相同的Web內容,Internet客戶端的訪問請求首先進入 一臺服務器,由它根據負載均衡策略(算法)合理地分配給某個Web服務器。每個Web服務器有相同的內容做起來不難,所以選擇負載均衡策略(算法)是個關 鍵問題。下面會專門介紹均衡算法。



負載均衡的作用就像輪流值日製度,把任務分給大家來完成,以免讓一個人過度勞累。但是與輪流值日製度不同的是,負載均衡是一種動態均衡,它通過一些工具 實時地分析數據包,掌握網絡中的數據流量狀況,把任務理分配出去。對於不同的應用環境(如電子商務網站,它的計 算負荷大;再如網絡數據庫應用,讀寫頻繁,服務器的存儲子系統系統面臨很大壓力;再如視頻服務應用,數據傳輸量大,網絡接口負擔重壓。),使用的均衡策略 (算法)是不同的。 所以均衡策略(算法)也就有了多種多樣的形式,廣義上的負載均衡既可以設置專門的網關、負載均衡器,也可以通過一些專用軟件與協議來實現。在OSI七層協 議模型中的第二(數據鏈路層)、第三(網絡層)、第四(傳輸層)、第七層(應用層)都有相應的負載均衡策略(算法),在數據鏈路層上實現負載均衡的原理是 根據數據包的目的MAC地址選擇不同的路徑;在網絡層上可利用基於IP地址的分配方式將數據流疏通到多個節點;而傳輸層和應用層的交換(Switch), 本身便是一種基於訪問流量的控制方式,能夠實現負載均衡。

到目前爲止,針對網絡負載均衡的產品主要有兩大類:一是硬件;二是軟 件。硬件產品比軟件產品運行得快但是價格較高。著名的產品有:3Com的智能網卡和DynamicAccess技術結合起來,不用在交換機上做任何設置, 就可以完成分擔任務;Cisco路由器通過對動態環路、旁路技術等功能的提供實踐着負載均衡;Win2000中,專門集成了針對服務器羣集的負載均衡軟 件;IBM的Web專用服務器和Network Dispatcher軟件;Lotus的ICM;還有許多廠商都支持的鏈路聚集、高層交換......實現方法還在不斷地花樣翻新,充實着"負載均衡"的 內容。

負載均衡系統的幾種負載均衡算法(負載均衡策)

目前,基於均衡算法主要有三種:輪循(Round- Robin)、最小連接數(Least Connections First),和快速響應優先(Faster Response Precedence)。輪循算法,就是將來自網絡的請求依次分配給集羣中的服務器進行處理。最小連接數算法,就是爲集羣中的每臺服務器設置一個記數器, 記錄每個服務器當前的連接數,負載均衡系統總是選擇當前連接數最少的服務器分配任務。 這要比"輪循算法"好很多,因爲在有些場合中,簡單的輪循不能判斷哪個服務器的負載更低,也許新的工作又被分配給了一個已經很忙的服務器了。快速響應優先 算法,是根據羣集中的服務器狀態(CPU、內存等主要處理部分)來分配任務。 這一點很難做到,事實上到目前爲止,採用這個算法的負載均衡系統還很少。尤其對於硬件負載均衡設備來說,只能在TCP/IP協議方面做工作,幾乎不可能深 入到服務器的處理系統中進行監測。但是它是未來發展的方向。

綜上所述,負載均衡羣集的使用是非常廣泛的,它的核心內容是運用越來越科學的負載分配算法開發出軟件或硬件,來實現負載的更加合理地分配。

怎麼用?——舉例說明,幷包含需求分析

採用負載均衡羣集的場合很多,本文將以Web/Ftp服務器羣集這個典型的應用爲例進行介紹。 互聯網的出現使信息訪問產生了質的飛躍,但隨之而來的是Web流量的激增(高併發訪問),由於涉及的信息量十分龐大,用戶訪問的頻率也高,許多基於Web 的大型公共信息系統(如電子圖書館、BBS、搜索引擎和遠程教育等)需要在實時性和吞吐量方面都具有較高性能的Web服務器支持。一些熱門的Web站點由 於負荷過重而變得反應遲緩。如何提高Web服務器的性能和效率成爲一個亟待解決的問題。

實際上,服務器的處理能力和I/O已經成爲提 供Web服務的瓶頸。如果客戶的增多導致通信量超出了服務器能承受的範圍,那麼其結果必然是宕機。顯然,單臺服務器有限的性能不可能解決這個問題,一臺普 通服務器的處理能力只能達到每秒幾萬個到幾十萬個請求,無法在一秒鐘內處理上百萬個甚至更多的請求。顯然,採用高性能的主機系統(小型機乃至大型計算機) 是可行的。但是,除了其價格價格昂貴外,這種高速、高性能的主機系統,很多情況下也不能解決同時處理幾萬個併發。因爲,高速主機系統只是對於複雜單一任務 和有限的併發處理顯得 高性能,而Internet中的Web服務器絕大多數處理是"簡單任務"、高強度併發處理,因此,即便有大資金投入採用高性能、高價格的主機系統 ,也不能滿足Web應用的需要。這就是利用Web服務器羣集實現負載均衡的最初基本設計思想。

早期的服務器羣集通常以主從方式 (Active-Passive)備份。令服務運營商頭疼的問題是:關鍵性服務器一般檔次較高,花了兩臺服務器的錢卻只能得到一臺服務器的性能。隨着 LSANT(Load Sharing Network Address Transfer)技術的推出,這個問題得到了解決。多臺服務器的IP地址被翻譯成一個虛擬IP地址(VIP:Virtual IP),使得每臺服務器均時時處於工作狀態。若能將10臺這樣的服務器組成一個系統,並通過軟件技術將所有請求平均分配給所有服務器,那麼這個系統就完全 擁有每秒鐘處理幾百萬個甚至更多請求的能力。這樣原來需要用小型機來完成的工作現由多臺PC服務器就可以完成,這種彈性解決方案對投資保護的作用是相當明 顯的——既避免了小型機剛性升級所帶來的巨大設備投資,又避免了人員培訓的重複投資。同時,服務運營商可以依據業務的需要隨時調整服務器的數量。至此形成 了Web服務器羣集的理論。

Web服務器羣集的概念最早由伊利諾斯州大學(UIUC:University of Illinois at Urbana-Champaign)的超級計算應用中心(NCSA:National Center of Supercomputing Applications)提出並實現了一個原型系統"NCSA Scalable Web Server Cluster", 它通過連接一組計算機對客戶同時提供服務,實現分佈負載,降低對用戶請求的響應時間,並擴展Web服務器的應用。後來Berkeley的NOW小組、 NSC和科羅拉多大學的Harvest小組、Cisco及IBM公司等也加入此行列,很快推出相應產品。如NCSA使用幾臺工作站構成可擴展並行Web服 務器羣,提供使用其瀏覽器軟件Mosaic、服務器軟件httpd的用戶查詢幫助信息和下載軟件的服務器系統,採用輪循算法選擇羣集中某臺計算機爲當前訪 問請求服務;加州大學SWEB系統採用DNS轉發技術實現服務器IP地址重定向(Yahoo 採用的就是這種方法);Inktomi公司利用NOW構造並行的HotBot檢索引擎,因而系統具有成本低和擴展能力強的特點;此外,IBM公司也提出類 似的可擴展並行Web服務器羣集系統的設計方案。這些系統的成功表明Web 服務器羣集是改善Web服務的一種有效解決方案,並且正在成爲主流技術。

在Web負載均衡羣集的設計中,網絡拓撲被設計爲對稱結構。在對稱結構中每臺服務器都具備等價的地位,都可以單獨對外提供服務。通過負載算法,分配設備 將外部發送來的請求均勻分配到對稱結構中的每臺服務器上,接收到連接請求的服務器都獨立迴應客戶的請求。 如下圖所示。



Web服務器羣集有如下特點:

高性能 :一個Web服務器羣集系統由多臺Web服務器組成,對外部而言,整個羣集就如同一臺高性能Web服務器,系統只有一個對外的網絡地址(主機名或IP地 址),所有的HTTP請求都發到這個地址上。系統中有專門的機制能夠將這些請求按照一定原則分發到羣集中的各臺服務器上,讓它們各自分擔一部分工作。

可擴展性 它是採用同樣的方法或技術高效率地支持較大規模系統的能力。Web服務器羣集系統的組成結構和工作原理決定了它能夠比較容易地達到較好的可擴展性,因爲擴大系統規模非常容易,只要在網絡中增加新的Web服務器計算機即可。

高可用性 Web服務器羣集系統將會在各種商業應用領域中佔有舉足輕重的地位。商用系統最重視系統的可靠性和容錯性,二者合在一起稱爲系統的可用性。常用的系統可用 性指標有系統平均無故障時間、期望不間斷工作時間及年平均故障率等。由於Web服務器羣集系統中各臺Web服務器之間相對獨立,採用一些不太複雜的技術就 能使Web服務器羣集系統達到很高的可用性。一些商用產品中已經部分實現了這種技術。

此外,Web服務器羣集系統還具有價格便宜、能夠保護原有投資等特點。

目前比較成熟的產品主要有Cisco的LocalDirector、IBM的Network Dispatcher、HydraWEB的HydraWEB Dispatcher和RND的Web Server Director等等。這些產品的應用非常廣泛,如Yahoo、Net Center和MSN都是用幾百到幾千臺計算機組成Web 服務器羣集來對外提供服務,它們使用了上述產品。

以下是對2個Web服務器羣集產品的分析:

Scalable Web Server Cluster UIUC的NCSA Scalable Web Server Cluster是世界上第一個Web服務器羣集系統。1994年,NCSA爲了緩解其Web站點面臨的大量用戶訪問的壓力,把4臺Sun工作站用FDDI 連接起來組成一個羣集,代替原有單臺Sun工作站的Web服務器,對外提供Web服務。NCSA把這個系統稱爲Scalable Web Server Cluster,它幾乎具備了現代Web服務器羣集系統所具有的一切特徵:用高速局域網連接多臺Web服務器,通過並行處理提高系統的吞吐能力;整個系統 只有一個網絡地址; 通過一臺動態DNS服務器實現請求分配,該DNS服務器對DNS請求採用輪循算法依次返回羣集中各臺Web服務器的IP地址,引導Client將HTTP 請求發送到羣集中不同的Web服務器上,以實現羣集的負載均衡; 採用AFS(UNIX支持的分佈式文件系統)將多臺服務器上的文件系統組合成一個邏輯上單一的分佈式文件系統,用來存儲站點內容,使請求不論被分配到哪臺 Web服務器上都能得到完全相同的應答服務;系統在其中一臺Web服務器發生故障時仍能正常工作,並支持在線增加或減少Web服務器的數量等(其結構如下 圖所示)。



Scalable Web Server Cluster是一個實驗性的Web服務器羣集系統,現代Web服務器羣集系統和產品的大部分概念和方法均來源於它。
LocalDirector Cisco的LocalDirector是一種用來實現請求分配的設備,通過它可以組成Web服務器羣集系統。LocalDirector有2個網絡接 口,一個用於連接Internet,另一個用於連接局域網中的Web服務器羣集,如下圖所示。



LocalDirector採用IP NAT(Network Address Transfer)技術,整個系統對外只有一個IP地址,通過IP地址變換將HTTP請求分配到羣集中不同的Web服務器。羣集中的各臺Web服務器上存 儲的頁面信息要求完全一致。LocalDirector在請求分配時實現了2種不同的負載均衡算法:最小連接數和快速響應優先,用戶在配置 LocalDirector時可以選擇使用其中一種。此外,LocalDirector還支持動態改變羣集規模的大小,即在不停機的情況下增加或減少服務 器。

LocalDirector具有很強的吞吐能力,自身延遲也小,因而能夠支持較大規模的系統,並且可以通過級聯進一步擴大系統的 規模(如下圖所示)。像IBM的Network Dispatcher、HydraWEB的HydraWEB Dispatcher和RND的Web Server Director等在結構和功能上與LocalDirector類似。值得一提的是,這些產品的價格基本上與一臺普通的工作站相當,比大多數高性能計算機 要低許多。



  總 結:
負載均衡羣集的應用提高了Web服務器、FTP服務器,郵件服務器和其它關鍵應用服務器的可用性和可伸縮性。單一計算機只能提供有限級別的服務器可靠性 和可伸縮性。但是,通過將兩個或兩個以上高級服務器的主機連成羣集,網絡負載均衡就能夠提供關鍵任務服務器所需的高可靠性和高性能。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章