Linux界如今好像處在瘋狂地熱衷於集羣概念之中。幾乎就在幾個月以前,惟一的解決方案還只能是本身編寫集羣
軟件以達到較高的實用性。固然在科學集羣方面,還可使用Beowulf或者傳送消息的集羣庫(例如 PVM)。但除了早先的這些解決方案,Linux在專有和商業集羣的方面上是大大落後的。
但如今的發展看起來使人欣慰了不少。SGI的Failsafe已基本移植;Linux High Availability(高效性Linux)計劃已經啓動;Red Hat 推出了Piranha集羣軟件;等等。
同時還出現了一些可行的科學集羣解決方案,其中最值得推薦的是Mosix。Mosix使用的是單一系統圖形(SSI)集羣器。SSI集羣器之因此受到歡迎是由於它們給用戶的感受像是在一臺巨型計算機上工做,而不是一羣單個的節點。用戶能夠登陸到Mosix集羣器上的任何一個節點,並啓動集羣器中任何節點上運行的程序,只要內核中的集羣軟件認爲這些程序是能夠運行的。若是用戶運行的DNS是正確的,他們只需telnet到cluster.mynet.com,DNS的循環功能會讓他們隨機地登陸到某個節點及其分支程序上,而後再分支,分支。
裝配Mosix集羣器
有些Mosix集羣器能夠達到世界上前50種性能最強的的超級計算機的水平。若是有足夠多閒置的計算機設備的話,就能夠考慮本身動手組裝一個Mosix集羣器。
例如,在以下硬件上安裝Mosix內核:
3臺雙CPU計算機,主頻從500MHz到933MHz,內存總和爲1.5GB左右。
8臺單CPU計算機,主頻從MMX266MHz到933MHz,內存總和爲1.8GB。
而
存儲空間,用了Network Appliance F720,約有120GB的磁盤空間,並使文件系統對全部計算機爲可讀。很是重要的一點是,全部機器都必須有統一的用戶ID和羣組ID,不然訪問數據時就可能會出現問題。
這些機器經過100/1000Mbit的網絡鏈接起來,中心安置一個光學轉換器。
在這個設計中採用的是用 Network Appliance 存儲
服務器來實現中心存儲的方案,全部集羣器節點都圍繞其中。有些節點用的是1000Mbit 的網卡,有些用的是較舊的100Mbit。Mosix 會測得每一個節點之間的等待時間,並在某個節點上負載太高決定將它的程序轉移到其餘節點時考慮這個因素。這裏使用的網卡是Phobos公司的產品,轉換器用的是Nbase公司的。
從上述網
站
下載兩個RPM,並用「rpm -install xxx.rpm」命令進行安裝。其中一個RPM是給2.2.16內核的,其中帶有全部編譯好的 Mosix擴展。另外一個則是爲監測集羣器所用的一套Mosix用戶空間命令而備的。
從新啓動各節點進入Mosix內核,此時,工做就已接近尾聲了,最後要作的就只是讓每一個節點知道其餘節點的位置。要作到這點,編輯一個映射文件/etc/mosix.map,在文件中指定全部其餘的節點和它們的IP地址,這與/etc/hosts文件類似。
檢測一下是否全部節點都能互相看到彼此,運行「mon」監測程序。它將顯示全部工做節點的圖表和各自的負載水平、內存消耗,及其餘信息。
mon監測程序的運行界面
啓動集羣器
如今就實踐一下吧,能夠試着建立一個進程,如distributed.net所說的dnetc RC5破程序。而後再加幾個其餘的進程。此時看一下「mon」程序會發現你的計算機的負載很高,而其餘則仍很低。但很快,你節點上的負載量會逐漸下降,而其餘節點則相應上升,由於你機子上的一些進程被轉移到了其餘更佳的節點上了。Mosix會自動調節轉移的時間和節點位置,而無需用戶對此進行控制。
爲了對這個新集羣器的強大性能有個具體的概念,筆者在集羣器以外的Linux上寫了一組腳本,在某個節點上啓動程序並測定該集羣器的運行狀況。這些程序由質數運算器、互動式空程序,及共享的內存使用進程組成。
當節點在集羣器(雙CPU PIII 933-MHz,768MB RAM)以外時,該機器最高達到20個質數運算器、40個互動式任務,以及大約30個共享內存進程。運行了這些程序後,幾乎連登陸都不能運行,不再能添加額外的負載了。
而在集羣器中的狀況就大爲不一樣了,在最大的節點上能夠運行450個以上的質數運算器、數百個shell和大約210個共享內存任務(內存參考模式規定,共享內存程序不能轉移到其餘節點。)
若是在單個的計算機上要完成這些任務,不知道須要多高的配置,但至少不會低於Sun E6000或HP V2000大型機的水平,它們的價格達十萬美圓之巨。而如今全部這些硬件只須要不到2萬美圓,是Linux使咱們作到了這一點。
在多個節點上建立單一圖形集羣器只有在程序被轉移到另外節點時仍能看到其設備和文件時纔是有意義的。Mosix無需中央存儲器就能作到這一點,具體狀況如何呢?
當一個進程轉移到集羣器中的另外一個節點時,它的代碼存根仍保留在原來的節點上。每當須要輸入/輸出時,該進程會將請求發送到最初節點的代碼存根上,然後代碼存根在本地進行輸入/輸出處理並返回結果。
固然,這會加大輸入/輸出密集的程序的負擔。爲減小這種網絡活動,提升整個輸入/輸出的效率,Mosix開發人員開始將
全局文件系統(Global File System,GFS)移植到Mosix集羣器中。
全局文件系統是Linux的共享盤集羣器文件系統。GFS支持客戶機故障時的日誌和恢復。GFS集羣器節點經過Fibre Channel或共享的SCSI 設備物理共享共同的存儲器。看起來,文件系統在每一個節點上都像是本地機上的,GFS使文件訪問在集羣器中保持同步。GFS是徹底對稱的,也就是說,全部節點都是均等的,沒有哪一個服務器會是瓶頸或出現任何故障。GFS在維護全部Unix文件系統時使用讀/寫緩衝。
可是,GFS也存在着一個缺點,它只能運行在較新的SCSI控制器上,而不能在之前的產品上運行。不過對於裝備了新設備而且確實有集羣必要的用戶來講,GFS是很是好的解決方案。
Mosix GFS執行的時間還不長,但性能確實很好。想一想家裏要是有這麼個功能強大的巨型機該是多麼好的感受。那麼,若是你有好幾臺裝了Linux的閒置機器,又想搞個大型機玩玩的話,就試試Mosix吧。
欲對Mosix有一個全面的瞭解,請訪問網站:http://www.mosix.org/。html