一. 什麼是服務器集群
隨著Internet的爆炸性增長,Internet與人的生活越來越息息相關,通過Internet上進行交易也就越來越受關注。近幾年,電子商務的年增長均超過100%。服務器的工作量也迅速增長,所以服務器(特別是一個受人歡迎的WEB服務器)很容易在訪問高峰時期過載。
而另一方面,計算機從1946年單純的科學計算任務到現在大量紛繁復雜的信息處理,工作量越來越大,需要越來越快的處理能力。所以計算機界就不得不不斷研究更快的處理器,存儲器,以適應這一需求。
然而,科學家們意識到,單塊處理器的速度發展空間是有限的,為什麼不能讓計算機象人一樣協同工作,地將工作完成好呢!這時,就掀起了的研究。
舉個例子來說,我們架設了一台WWW服務器,上面構建了一個電子商務網站,然而隨著時間的推移,名聲越來越大,這時點擊率也就越來越高,WWW服務器的負載也就越來越高。這種情況下,我們就必須提升WWW服務器的能力,以滿足以益增長的服務請求。這時,我們就面臨兩種選擇:
1)升級WWW服務器,采用更快的CPU,增加更多的內存,使其更具有POWER;但日益增長的服務請求又會使服務器再次過載,需要再次升級,這樣就陷入了升級的怪圈。還有,升級時還得考慮到服務如何接續,能否中止!
2)增加WWW服務器,讓多台服務器來完成相同的服務。
這種方法就是服務器集群,通過並行技術來大大提升系統性能。也就是這一章的主要內容,這種方法具有很好的擴展性,而且可以最大限度地利用已有投資。
1.1.集群的概念
集群,是一組獨立的計算機系統構成一個松耦合的多處理器系統,它們之間通過網絡實現進程間的通信。應用程序可以通過網絡共享內存進行消息傳送,實現分布式計算機。
近幾年來,微處理器、內存、總線技術、網絡技術有了非常大的進步,軟件的並行技術也有了非常大的進步,這使得讓一組廉價的個人電腦與工作站協同工作成為可能,甚至可以與擁有強大的芯片處理能力的超級計算機競爭。
比如,16個普通微處理器組成的集群系統可以達到億次級浮點計算機能力,而且總的成本小於40萬元。
不幸的是,建造一個集群並不是一件簡單的事件。集群的組成部分必須根據要運行的主要應用進行調整,以使之運行在最佳狀態。這此因素帶來的結果就是,建造集群系統不是只有一個標准的方案,在本章中,我們就會看到許多種建造方案。
集群技術是計算機系統結構的前沿領域,筆者也僅是略有了解,希望本文能起到拋磚引玉之用。 1.2.並行技術這是一個非常簡單的建造四節點的小集群系統的例子,它是構建在Linux操作系統上,通過MPICH軟件包實現的,希望這個小例子能讓大家對集群系統的構建有一個最基本的了解。
二. 使用MPICH構建一個四節點的集群系統
這是一個非常簡單的建造四節點的小集群系統的例子,它是構建在Linux操作系統上,通過MPICH軟件包實現的,希望這個小例子能讓大家對集群系統的構建有一個最基本的了解。
2.1 所需設備
1).4台采用Pentium II處理器的PC機,每台配置64M內存,2GB以上的硬盤,和EIDE接口的光盤驅動器。
2).5塊100M快速以太網卡,如SMC 9332 EtherPower 10/100(其中四塊卡用於連接集群中的結點,另外一塊用於將集群中的其中的一個節點與其它網絡連接。)
3).5根足夠連接集群系統中每個節點的,使用5類非屏蔽雙絞線制作的RJ45纜線
4).1個快速以太網(100BASE-Tx)的集線器或交換機
5).1張Linux安裝盤
2.2 構建說明
對計算機硬件不熟的人,實施以下這些構建步驟會感到吃力。如果是這樣,請找一些有經驗的專業人士尋求幫助。
1. 准備好要使用的采用Pentium II處理器的PC機。確信所有的PC機都還沒有接上電源,打開PC機的機箱,在准備與網絡上的其它設備連接的PC機上安裝上兩塊快速以太網卡,在其它的PC機上安裝上一塊快速以太網卡。當然別忘了要加上附加的內存。確定完成後蓋上機箱,接上電源。
2. 使用4根RJ45線纜將四台PC機連到快速以太網的集線器或交換機上。使用剩下的1根RJ45線將額外的以太網卡(用於與其它網絡相連的那塊,這樣機構就可以用上集群)連接到機構的局域網上(假定你的機構局域網也是快速以太網),然後打開電源。
3. 使用LINUX安裝盤在每一台PC機上安裝。請確信在LINUX系統中安裝了C編譯器和C的LIB庫。當你配置TCP/IP時,建議你為四台PC分別指定為192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4。第一台PC為你的服務器節點(擁有兩塊網卡的那台)。在這個服務器節點上的那塊與機構局域網相連的網卡,你應該為其指定一個與機構局域網吻合的IP地址。
4.當所有PC都裝好Linux系統後,編輯每台機器的/etc/hosts文件,讓其包含以下幾行:
192.168.1.1 node1 server
192.168.1.2 node2
192.168.1.3 node3
192.168.1.4 node4
編輯每台機器的/etc/hosts.equiv文件,使其包含以下幾行:
node1
node2
node3
node4
以下的這些配置是為了讓其能使用MPICH's p4策略去執行分布式的並行處理應用。
1. 在服務器節點,建一個/mirror目錄,並將其配置成為NFS服務器,並在/etc/exports文件中增加一行:
/mirror node1(rw) node2(rw) node3(rw) node4(rw)
2. 在其他節點上,也建一個/mirror目錄,關在/etc/fstab文件中增加一行:
server:/mirror /mirror nfs rw,bg,soft 0 0
3. /mirror這個目錄從服務器上輸出,裝載在各個客戶端,以便在各個節點間進行軟件任務的分發。
4. 在服務器節點上,安裝MPICH。MPICH的文檔可在
http://www.mcs.anl.gov/mpi/mpich/docs.html獲得。
5.任何一個集群用戶(你必須在每一個節點新建一個相同的用戶),必須在/mirror目錄下建一個屬於它的子目錄,如/mirror/username,用來存放MPI程序和共享數據文件。這種情況,用戶僅僅需要在服務器節點上編譯MPI程序,然後將編譯後的程序拷貝到在/mirror目錄下屬於它的的子目錄中,然後從他在/mirror目錄下屬於它的的子目錄下使用p4 MPI策略運行MPI程序。
2.3 MPICH安裝指南
1.如果你有gunzip,就d下載mpich.tar.gz,要不然就下載mpich.tar.Z。也可以使用匿名FTP到ftp.mcs.anl.gov的pub/mpi目錄拿。(如果你覺得這個東西太大,你可以到pub/mpi/mpisplit中取分隔成塊的幾個小包,然後用cat命令將它們合並)
2.解壓:gunzip c mpich.tar.gz |tar xovf-(或zcat mpich.tar.Z|tar xovf-)
3.進入mpich目錄
4.執行:./configure為MPICH選擇一套適合你的實際軟硬件環境的參數組,如果你對這些默認選擇的參數不滿意,可以自己進行配置(具體參見MPICH的配置文檔)。最好選擇一個指定的目錄來安裝和配置MPICH,例如:
./configure -prefix=/usr/local/mpich-1.2.0
5.執行:make >& make.log 這會花一段較長的時間,不同的硬件環境花的時間也就不同,可能從10分鐘到1個小時,甚至更多。
6.(可選)在工作站網絡,或是一台單獨的工作站,編輯mpich/util/machines/machines.xxx(xxx是MPICH對你機器體系結構取的名稱,你能很容易的認出來)以反映你工作站的當地主機名。你完全可以跳過這一步。在集群中,這一步不需要。
7.(可選)編譯、運行一個簡單的測試程序:
cd examples/basic
make cpi
ln s ../../bin/mpirun mpirun
./mpirun np 4 cpi
此時,你就在你的系統上運行了一個MPI程序。
8.(可選)構建MPICH其余的環境,為ch_p4策略使用安全的服務會使得任何啟動速度加快,你可以執行以下命令構建:
make serv_p4
(serv_p4是一個較新的P4安全服務的版本,它包含在MPICH 1.2.0版中),nupshot程序是upshot程序的一個更快版本,但他需要tk 3.6版的源代碼。如果你有這個包,你就用以下命令可以構建它:
make nupshot
9.(可選)如果你想將MPICH安裝到一個公用的地方讓其它人使用它,你可以執行:
make install 或 bin/mpiinstall你可以使用-prefix選項指定MPICH安裝目錄。安裝後將生成include、lib、bin、sbin、www和man目錄以及一個小小的示例目錄,(可選)到此你可以通告所有的用戶如何編譯、執行一個MPI程序。
2.4 費用統計
這個小的集群方案總的費用大致如下:
設備費用:
4台 Pentium II CPU /64MB內存, 2GB的硬盤帶EIDE CD-ROM 的機器: 24000元
5塊快速以太網卡: 800元
1個快速以太網的集線機:2000元
5根雙絞線:50元
軟件費用:
LINUX安裝光盤:50元
MPICH:0元
合計:26900元。
這樣一個集群系統可以用於一些大量的科學計算,信息處理,而且其性價比實在是太好了,僅需不到三萬元。