• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用 ClusterKnoppix 構建負載平衡集群

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    使用基于 Knoppix 的 LiveCD 構建您自己的超級計算 Linux 集群 級別: 初級 Mayank Sharma (geeky_bodhi@yahoo.co.in) 自由技術文章撰稿人 2005 年 1 月 集群(一組協同工作的計算機)是充分利用計算資源的一個重要概念,因為它能夠將工作負載從一個超載的
    使用基于 Knoppix 的 LiveCD 構建您自己的超級計算 Linux 集群

    級別: 初級

    Mayank Sharma (geeky_bodhi@yahoo.co.in)
    自由技術文章撰稿人
    2005 年 1 月

    集群(一組協同工作的計算機)是充分利用計算資源的一個重要概念,因為它能夠將工作負載從一個超載的系統(或節點)遷移到集群中的另一個系統上。本文將闡述如何使用基于 Knoppix 的 LiveCD 建立一個負載平衡 Linux™ 集群。

    超級計算機(Supercomputer)是一個通用術語,指的是比普通計算執行速度快得多的計算機。集群(cluster)指的是一組計算機,它們能夠(還有其他能力)將工作負載從一個超載的單元遷移到集群中的其他計算機上。這一特性稱為負載平衡(load balancing)。在本文中,您將了解到如何建立一個負載平衡集群。

    集群通過有效地平衡負載提高了自身的效率,并在超級計算機家族中贏得了一席之地。為了轉移負載,集群中的計算機必須彼此連接起來。

    集群中的計算機稱為節點。集群由一個或多個主節點(master node)和若干個從屬節點(drone node)或者從節點(slave node)來管理。在典型的設置中,應用程序在主節點上開始運行。主節點負責根據需要將應用程序遷移到從屬節點上。

    在本文中,您將了解到如何使用基于 Knoppix 的 LiveCD 來建立完全屬于您自己的超級計算機。您可能聽說過 LiveCD;它們是可以在安裝之前進行嘗試的、出色而完整的 Linux 系統,從 CD 光驅就能夠完成對它們的引導。從出現 LiveCD 的時候起,一些用戶和項目就一直使用 LiveCD 作為他們的演示平臺,而且,從早期的“DemoLinux”年代至今,LiveCD 已經歷了一段漫長的歲月。

    但是首先要了解超級計算集群的一些背景。

    什么是超級計算機?
    超級計算機通常用于需要執行大量計算、處理大規模數據庫或者二者兼具的科學上和工程上的應用程序。(超級計算機這一術語也可以是指速度慢了很多但仍然讓人感覺很快的系統。)

    實際上,大部分超級計算機系統是多臺連接到一起的計算機,使用以下兩種普通的并行處理方法之一來進行并行處理:

    • SMP,即對稱多處理(symmetric multiprocessing)。
    • MPP,即大規模并行處理(massively parallel processing)。

    在 SMP(也稱為“緊耦合的(tightly coupled)”多處理和“共享所有”的系統)中,處理器共享內存和 I/O總線或者數據通路,由單一的操作系統來控制這些處理器。在大部分 SMP系統中,通常最多有十六個處理器。當執行在線事務處理(OLTP,在這類處理中,很多用戶使用一組簡單的事務來訪問同一數據庫)時,SMP 系統比MPP 更具優勢。這種裝置中的動態工作負載平衡使得 SMP 可以出色地勝任這類任務。

    MPP 系統(也稱為“松耦合的(loosely coupled)”或者“無任何共享”的系統)的特性是:有很多處理器,每個處理器都有用于自己的操作系統的內存,可以同時處理同一程序的不同部分。系統使用一個消息接口和一組數據通路來使處理器彼此通信。最多可以有 200 個處理器從事同一任務。建立 MPP 系統可能會較復雜,因為當涉及到包裝系統資源以及在處理器間分配任務時,需要制定很多計劃(記住,沒有東西 是共享的)。MPP 系統的優勢在于用戶用來同時搜索數量極多的數據庫的應用程序。

    IBM® Blue Pacific 是高端超級計算機的一個恰當例子。這個擁有 5,800 個處理器、3.9 teraflop 運算能力的系統(有 2.6 萬億字節的內存)是與 Lawrence Livermore National Laboratory 合作構建的,為的是模擬核反應的物理過程。

    集群代表的是低端的超級計算,這是一種更可能自行構建(build-it-yourself)的方法。最流行而且最知名的示例之一是 Beowulf Project,它闡述了如何使用現成的 PC 處理器、快速以太網和 Linux 操作系統來手工構建(handcraft)超級計算機。請參閱下面的參考資料一節,以獲得關于 BeoWulf Project 的更多資料。

    既然您已經在適當的環境中創建了集群,那么現在我將向您介紹如何開始建立您自己的集群。

    不可思議的工具:ClusterKnoppix 和 openMosix
    在開始構建您的集群之前,還要做另外一件事情:快速了解一下您將要使用的主要發行版本 —— ClusterKnoppix,以及它所包含的支持集群的內核:openMosix。

    主要發行版本:ClusterKnoppix
    顧名思義,ClusterKnoppix 是 Knoppix 的衍生版本。ClusterKnoppix 為用戶提供了 Knoppix 的所有益處(豐富的應用程序、run-off-the-CD、不可思議的硬件偵測能力和對多種外部設備的支持)以及 openMosix 集群能力。在參考資料一節,有關于 ClusterKnoppix 和 openMosix 的更多資料的鏈接。

    各種其他基于 CD 的 openMosix 發行版本包括 Bootable Cluster CD(BCCD)、ParallelKnoppix、PlumpOS、Quantian 和 CHAOS。不過,ClusterKnoppix 可能是最為流行的“主節點”發行版本,因為它:

    • 提供了全功能的運行 KDE 的 X 服務器(以及其他桌面)。
    • 提供多種應用程序(比如 GIMP)。
    • 采用了來自 CHAOS 發行版本的安全增強功能。(我將在本文后面部分討論 CHAOS。)

    跨節點管理程序:openMosix
    除了硬件與計算機間的連接之外,您還需要可以管理分布在多個從屬節點上的程序的軟件。

    在非集群的計算機中,操作系統允許將應用程序從存儲媒體(比如硬盤和 CD)加載到內存中并開始運行它。操作系統負責被執行應用程序的完成。

    我選擇了 openMosix —— 一個設計用于單一系統映像集群的 Linux 內核擴展 —— 因為它允許操作系統(在我們的例子中是 Linux 內核)從任何集群節點將應用程序加載到內存并在集群的任何節點上去運行。所有給定的應用程序都被遷移到可用能力或資源最多的節點上。

    一旦安裝了 openMosix,集群中的節點就會開始通信,并且,集群通過優化資源分配,不斷地根據工作負載對自己進行調整。自動發現(Auto Discovery)是 openMosix 的特性之一,它允許在操作集群的同時添加新的節點。

    按照 openMosix Project 的說法,openMosix 可以擴展到 1,000 多個節點。

    構建集群
    為此,我使用了兩臺計算機。主節點是一臺 Pentium™ III 1.7-GHz 計算機,擁有 384 MB 與顯示卡共享的 RAM。從屬節點是一臺 Pentium III 997-MHz 計算機,擁有 256 MB 專用 RAM。兩臺機器都有 CD-ROM 驅動器。兩臺機器上有 RealTek 10/100 Mbps 局域網卡,通過一根標準的交叉網線將它們連接起來。

    如果您的家用網絡設置有兩臺(或者更多)使用網線連接起來的計算機,那么您的設置將與我的類似。

    您還需要 ClusterKnoppix(撰寫本文時,其最新版本為 clusterKNOPPIX V3.4-2004-05-10-EN-cl)。當從屬結點在網絡上引導起來時,ClusterKnoppix 能夠發現它們,不過您需要支持通過網絡引導的特定的局域網卡和 BIOS。由于復制 CD 的代價很低,而且您需要在所有節點上運行 X,所以最簡單的方法是集群中有多少個節點就使用多少張 ClusterKnoppix CD。

    可以為集群中各個的節點使用下面的網絡設置:

    • Network —— 192.168.1.0
    • Netmask —— 255.255.255.0
    • Default Gateway —— 192.168.1.1
    • IP address of Master —— 192.168.1.10
    • IP address of Drone #1 —— 192.168.1.20

    我就不再詳述 Linux 中的網絡。有很多信息可以使用;請參閱下面的參考資料。

    初始化主節點
    openMosix 并不要求將第一個節點初始化為主節點,不過,為了直觀,首先要建立主節點。

    1. 將 ClusterKnoppix CD 放入光驅中并從光驅引導它。
    2. 在出現 boot: 提示符時,按 Enter。

    給 ClusterKnoppix 留一些時間來檢測和引導硬件。默認情況下,將其引導至 KDE。

    1. 進入后,打開一個 root shell。它是任務欄的第二個項。
    2. 現在我們需要配置本地網絡接口。首先,要為網卡 ech0 給定一個 IP 地址:ifconfig eth0 192.168.1.10。
    3. 然后,指定它訪問網關必須遵循的路由:route add -net 0.0.0.0 gw 192.168.1.1。

    這樣就設置好了網絡。

    1. 接下來是初始化 openMosix 系統: tyd -f init。
    2. 最后,聲明這個節點是集群中的主節點:tyd。

    然后,您需要初始化從屬節點。

    初始化從屬節點
    建立一個從屬節點與建立主節點沒有太大區別。重復前面初始化主節點的前三個步驟。嘗試自己使用前面所提到的值來配置從節點的網卡(ifconfig eth0 192.168.1.20ifconfig eth0 192.168.1.20)。

    1. 現在,初始化 openMosix 系統。與上次使用的命令相同:tyd -f init。
    2. 最后,將這個節點加入到集群之中:tyd -m 192.168.1.10。

    就這樣!您的集群已經就緒。

    熟悉跟蹤工具
    您需要檢查集群的狀態;ClusterKnoppix 采用了以下跟蹤狀態的工具:

    openMosixview
    在root shell中輸入這個工具的名稱來打開它。該工具將檢測出集群中節點的數目,并顯示一個精美的、外觀奇特的界面。很快,您就可以看到集群的效率、集群的負載、集群的可用內存、已經使用的內存所占百分比以及其他信息。此時您還不會看到太多的活動,因為幾乎還沒怎么使用集群。用一些時間來讓自己熟悉這個應用程序。

    openMosixmigmon
    這個應用程序顯示已經從主節點遷移到從屬節點的進程。將您的鼠標移到中間的圓圈周圍的正方形。您將得知進程的名稱和它的 ID。為了將某個進程從主節點“遷移”出去,需要拖動正方形并將其放入較小的圓圈中(從屬節點)。

    OpenMosixAnalyzer
    這個簡單的應用程序報告了從初始化集群到完成其創建這段時間內集群以及各個節點的負載情況。

    mosmon
    這個基于命令行的監控器向您實時地顯示集群上的負載、可用的內存、正在被使用的內存以及其他內容??梢圆榭雌涫謨詠砹私馊绾味ㄖ埔晥D。

    mtop
    那些熟悉 top 的人對這個工具會很感興趣。top 保持對計算機上運行的每個進程的跟蹤。mtop 是支持集群的 top 的變體,也會顯示每個進程,而且會給出運行那個進程的節點的附加信息。

    測試集群
    既然集群已經準備就緒,那么現在就可以使其超載。為此,您需要借用好心的 CHAOS 發行版本的開發人員編寫的一個腳本:

    清單 1. 集群測試腳本
    clearcase/" target="_blank" >cccccc">

    // testapp.c Script for testing load-balancing clusters

    #include <stdio.h>

    int main() {
    unsigned int o = 0;
    unsigned int i = 0;

    unsigned int max = 255 * 255 * 255 * 128;

    // daemonize code (flogged from thttpd)
    switch ( fork() ) {
    case 0:
    break;
    case -1:
    // syslog( 1, "fork - %m" );
    exit( 1 );
    default:
    exit( 0 );
    }

    // incrementing counters is like walking to the moon
    // its slow, and if you don't stop, you'll crash.
    while (o < max) {
    o++;
    i = 0;
    while (i < max) {
    i++;
    }
    }

    return 0;
    }

    打開一個字處理器,復制這個腳本,并將其保存為 testapp.c。使集群中的所有節點都可以使用該腳本。

    為了使用這個腳本,需要在所有節點上執行這些命令。首先要編譯這個 C 程序:

    gcc testapp.c -o testapp

    然后,執行 ./testapp。

    在所有節點上至少執行此腳本一次。我在每個節點上執行了三次。

    執行每個實例后,切換到前面描述的應用程序。注意行為的變化。享受看著您自己構建的集群將進程從一個節點遷移到另一個節點的樂趣吧??茨?,它正在平衡負載!

    您剛才都做了些什么?
    既然一切都已經就緒,讓我們來回顧一下都做了些什么。

    首先,配置機器上的網卡,并為它們指定 IP 地址。然后,為它們提供一個通信用的公共路由。最后,使用 tyd 命令初始化 openMosix 系統。(ClusterKnoppix 借用了 CHAOS 項目的 tyd,明確地說是“tidy”。)

    您可以只在集群中的第一個節點上執行 tyd 而不進行任何切換。這個節點不必是主節點。所有后續節點都是通過 IP 地址后的 -m 開關來添加的。

    當初始化第二個節點時,IP 地址必須是第一個節點的地址。不過,當初始化第三個節點時,您可以在節點一和節點二這兩個 IP 地址之間作出選擇。

    接下來做什么?
    當掌握這項技術之后,除了在兩個節點上都使用 ClusterKnoppix 來建立集群以外,還可以建立一個異構的集群。在這類集群中,除了主節點以外,不需要在從節點上運行 GUI。您可以運行一個支持 openMosix 但又像 Linux 內核一樣小的發行版本。在從屬節點上運行的發行版本的最普遍選擇可能是 CHAOS。它占用的內存很少,這將幫助您為集群節約內存,而且它安全、可靠且速度很快。

    還等什么?盡情展示您自己構建的集群吧!

    參考資料

    • 您可以參閱本文在 developerWorks 全球站點上的 英文原文。

    • Beowulf 群集:合眾為一 (developerWorks,2001 年 9 月)是對 Beowulf 風格的集群的一個極好介紹。

    • 教程 使用 Mosix 的 Linux 集群(developerWorks,2001 年 12 月)闡述了什么是 MOSIX,如何構建支持集群的 Linux 系統,以及建立集群可以為您帶來哪些好處。

    • 創建 WebSphere Application Server V5 群集(developerWorks,2004 年 1 月)介紹了用于負載平衡和失效切換支持的集群,并描述了如何使用用于 Linux 的 IBM WebSphere® Application Server 構建一個集群。

    • 在關于 Linux-powered 網絡的 developerWorks 教程系列中可以找到更多關于 Linux 網絡基本概念 的資料。

    • The openMosix Project 提供了這個內核擴展的詳細資料和更新。

    • ClusterKnoppix 站點對這個發行版本進行了說明,并為所提出的問題提供了一個發展中的論壇。

    • Wikipedia 提供了很多關于 LiveCDs 的資料。

    • 在 developerWorks Linux 專區 可以找到更多為 Linux 開發人員準備的參考資料。

    • 通過參與 developerWorks blogs 加入 developerWorks 社區。

    • 在 Developer Bookstore Linux 專欄中訂購 打折出售的 Linux 書籍。
    關于作者
    在過去的 5 年中,Mayank Sharma 一直在從事技術方面的寫作,尤其是免費和開放軟件方面。他幫助創辦了南亞最主要的 FLOSS 月刊 LINUX For You(作為其助理編輯),現在正忙于整理專門論述本地化、培訓和 FLOSS 遷移的基于 Web 的出版物。除了寫作之外,Mayank 還喜歡研究駭客技術;他最新的貢獻是用于Utkarsh 本地化項目的一個安裝器。雖然他正在為計算機科學學位而努力,但對于 Formula One 賽車,他依然興趣不減。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>