

摘要:利用現成計算機構建由四臺個人計算機組成的廉價、實用且性能優良的計算機集群。本研究設計是在有四臺個人計算機組成的以太局域網內,建立一個基于Redhat9-Linux和MPI的集群計算環境,并在此基礎上進行并行計算實驗和性能測試。
關鍵詞:Linux;計算機集群;并行計算;MPI
一 Linux簡介
Linux是一類Unix計算機操作系統的統稱。它是一個完全免費的操作系統,它的源程序也完全公開。
Linux作為自由軟件有兩個特點:一是它免費提供源碼,二是愛好者可以按照自己的需要自由修改、復制和發布程序的源碼,并公布在Internet上。
二 計算機集群的背景
伴隨著lntemet的普及和Web技術的發展,計算機網絡提供著越來越多的服務和應用,網絡流量也出現了爆炸式的增長。除了流量的增加,網絡應用本身的發展對服務器性能也提出了更高的要求。依靠增加單一服務器的處理能力并不能很好地解決迅速增長的網絡應用的需求。因為采用單一服務器就意味著單點失效問題的存在,同時服務器的升級往往需要暫時中斷服務。這都難以保證網絡的高可用性,而且采用更高性能的服務器意味著更高的成本投入,由于這些特點,集群技術由此應運而生。
三 軟硬件選擇
做集群需要考慮兩個硬件選擇:節點計算機體系結構和相互連接的網絡。
軟件選擇簡單一些。所需的操作系統要能夠支持局域網、在網絡上從一臺計算機對另一臺的遠程命令執行訪問和可靠的C編譯器。
四 集群系統的網絡拓撲結構
我們用四個集點的集群來舉例:四節點集群由四臺PC構成,有一臺顯示器、鍵盤和鼠標,四條網絡電纜,一個交換機,這就是完整的系統。
四個集群節點的每一個都通過單一電纜連接到交換機。只有本地節點連接了顯示器和鍵盤。(如果四個節點本質上是一樣的,那么任何一個都可以作為本地節點)通過單一的鍵盤和顯示器可以從本地節點訪問每個遠程節點。
集群節點將作為服務器一起工作。在同一網絡中,至少需要一臺外部計算機來運行客戶軟件,它向服務器發送請求。它還要運行性能監視和顯示軟件,來顯示每個服務節點承受多大壓力。
五 集群計算機的實現
(一)安裝前的準備工作
將所有設備按照集群系統體系結構組裝好,如圖:
(二)安裝步驟
1、首先在BIOS中設置默認光盤啟動,用第一張光盤引導計算機。從光盤啟動后會出現一個提示符狀態,可以通過輸入不同的命令來選擇不同的安裝模式。為了避免不必要的麻煩,我們直接按回車鍵,用缺省模式安裝。
2、然后會詢問用戶是否對光盤完整性進行檢查,一般來說選擇\"Skip\"就可以。
3、設置語言、鍵盤配置、鼠標配置。
4、選擇安裝類型: Red Hat提供了三種不同類型的軟件包套件、個人桌面、工作站和服務器,以根據自己的需要選擇不同的安裝類型,這里我們選擇“定制”。
5、硬盤分區:選擇用Disk Druid工具進行分區,我們這里將分成兩個分區,一個Swap和一個根目錄(/),swap空間的大小一般為物理內存的2-3倍,剩下的空間都分給根目錄。
6、網絡配置:分布將四臺機器的IP地址設置為192.168.1.1、192.168.1.2、192.168.1.3、192.168.14,子網掩碼為255.255.255.0。
7、防火墻配置:Red Hat提供了三種安全級別的防火墻配置,可以根據自己的需要進行選擇。在我們設計中,需要開22端口,也就是SSH服務。
8、設置根口令:Linux系統下有一個根用戶,在系統中擁有至高無上的權利,用戶名是root。一般來說只有在對系統進行管理時才使用此用戶。密碼滿足一定復雜性要求。
9、選擇軟件包:在我們集群系統中需要用到GCC編譯器,在定制時需要選擇。接下來就一步一步開始安裝,直到完成Linux的安裝。
(三)創建SSH信任連接
SSH是傳統的telnet的一個替代,它不但是一個很好的交互工具,而且可以用來完成其它復雜的工作,以及和其它應用程序協同工作。
1、密碼認證。
這種認證方式的安全系數是最低的。因為為了使用密碼認證,必需把密碼潛入到要執行的腳本或者放到一個腳本能夠讀到的文件中。無論采取什么措施,具有腳本讀權限的任何人都會獲得密碼。因此,我們不使用這種技術。
2、公開密鑰認證。
在公開密鑰認證中,私鑰是客戶的認證憑證。因此,腳本需要訪問這個密鑰,必須保存在腳本能夠訪問到的地方。
在服務器端,使用公開密鑰認證更有利于帳戶的管理,尤其是在建立批量作業時。
公開密鑰認證不會被惡意服務器竊取認證機密。
3、信任主機認證 。
如果對于安全的要求不是很高,對于批量作業可以使用信任主機的認證方式。
4、批量作業應該注意的問題 。
除了選擇合適的認證方式以外,在編寫腳本時還應該注意以下問題:
盡量減小帳戶的權限;隔離、鎖定運行腳本的帳戶;使用專用的密鑰。
這些問題對于加強系統的安全也非常重要。
(四)RSA密鑰
RSA加密算法是當前最著名、應用最廣泛的公鑰系統,是一個基于數論的非對稱密碼體制。RSA系統是公鑰系統的最具有典型意義的方法,它通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,人們用公鑰加密文件發送給個人,個人就可以用私鑰解密接受。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。
六 MPICH的目標和優點
MPICH的目標是開發一個廣泛應用于編寫消息傳遞程序的標準,紿用戶提供一個高可用性的應用編程接口,兼顧異構環境和可移植性。保證通信的有效性和數據傳輸的可靠性。
它的優點主要是:
1、實現方式多樣化。同一編程界面可以有多種開發工具;
2、能夠實現完全異步通信,計算和通信可以重疊進行;
3、能夠有效地管理消息緩沖區;
4、是一個完全可移植的標準平臺。
七 MPICH發(收)數據
MPICH是通過使用緊迫協議和約定協議來發送數據的。
MPICH發送數據時必須有個緩沖區,該緩沖區用于存儲用戶發送消息的消息標志、長度、消息的源和目的地。我們把上述這些額外的信息稱為消息報頭。
當一個消息到達接收進程時,接收進程端可能有兩種情況:一是接收進程端有與接收到的數據相匹配的消息,二是沒有與接收到的數據相匹配的消息。在第一種情況下,接收端會在接收到消息報頭后對隨后到達的數據提供一個位置。MPICH創建一個隊列,保存已接收到的數據,我們可以把這個隊列想象成個可能到達消息的隊列,稱之為期望隊列。如果一個到達的消息與這個期望隊列中的消息相匹配.則該接收過程就標志為完成,且從期望隊列中將它刪除。第二種情況要顯得較為復雜些,因為接收進程要記住已經到達的消息,并把它存放在某個地方。使用一個非期望隊列,存放設有匹配數據的消息。當一個程序用MPL_Recv實例來接收一條消息時,它要先檢查一下非期望隊列,看看這個消息是否事先已接收過。如果已經接收過,則接收進程就把該消息和對應的數據從非期望隊列中刪除,并完成該接收過程,接收進程則會把該消息的數據存儲起來。
八 并行程序測試
測試1000個100000累加,結果表明:利用一臺計算機來執行這個程序大約需要9秒,而利用我們設計的集群計算機計算只花了大約3秒的時間。這樣,充分發揮我們集群系統的作用,像這樣大量的計算,不必去買價格昂貴的超級計算機,只需要普通的PC經過配置即可以達到超級計算機的計算能力。
參考文獻
[1] 網站,Redhat的官方網站 http://www.redhat.com
[2] 網站,Linux 集群技術
[3] 宋利軍,《RedHat Linux 9.0實用教程》,北京 科學出版社,2003