文章標籤:網格

辦公室網格計算使用虛擬環境-第4部分

,二零零九年十二月四日(星期五)下午11:59

介紹

我在一家公司上班,我們許多批處理作業處理數據每天數以百萬計的記錄,我一直在想最近所有的機器,周圍坐的每一天做幾個小時沒有運行。 如果我們可以使用這些機器,以增強我們的系統的處理能力,豈不是好? 在這組文章中,我要去看看用人辦公室電網使用虛擬環境的潛在好處。

第三部分中,我們創建我們的虛擬加工機,並成立窗機成為空閒時間工人。

運行最新的代碼

不可避免創建您的工作人員的業務邏輯,將改變後,錯誤會被發現,更快,更高效的代碼將產生,從而使處理數據使用你的工人,周圍坐著老臭代碼 那麼我們如何確保我們總是使用最新和最偉大的版本我們處理腳本?

有幾個很容易簡單的方法,我們可以做到這一點的伎倆,然而,在實現這一目標,以減少處理能力和網絡流量。 讓我們用最簡單的解決方案,並開始慢慢提高了幾個迭代。

第一種方法是簡單地連接到我們的作業控制服務器(通過Samba,FTP,或類似)和拉下來的代碼的最新版本。 不是很有效,但它會做的工作。 讓,有所改善,如何創造一個rsync的腳本和使用,每次來呢? 或者什麼顛覆檢查出的代碼最初投入的最新處理腳本,然後就更新我們的代碼在每次運行時( 使用svn update )呢?

最終我們可能會與一個bash腳本(稱為由cron每10分鐘),它看起來像這樣簡單的:

  #!/ bin / sh的
如果PS斧| grep的-V的grep | grep的PHP >的/ dev / null的
然後
    迴聲“工作目前正在處理,退出”
其他
    呼應“作業未運行,從現在開始”
     CD /路徑/ / /複印工作
     svn update的
     PHP yourJobProcessingScript.php
科幻 

現在我們可以肯定的,每次運行時,我們肯定運行最新的代碼。 我們要確保我們的代碼庫更新每一個時間,我們執行的運行,減少網絡流量,只在我們的網絡傳輸文件的區別。

在我的示範設置,我沒有完全按照以上。 顛覆我的工作處理服務器上安裝了,我只是拉'工人'使用'svn update的'分支的最新代碼。 我還添加了一個版本號標記我的處理腳本返回結果的一部分返回到數據庫。 這樣我可以看到我的代碼被更新,每次我工人分支,即複製到我的樹幹,我肯定是運行最新的處理腳本。

使用最新的數據

如果您的作業處理,在某些時候使用的數據源,那麼這些將要更新過。 除非你叫您的數據源上非常罕見的基礎上,你會湧入與交通網絡盡快為你的工人開始運行停頓帶來的一切。 對於我的解決辦法,我決定,我想我與我的虛擬機的數據源,周圍移動。

握住你的馬有!如果我的數據源是巨大的? 嗯,這真的是我們談論了多少數據的情況下? 它可能是更具成本有效的安裝到每一台機器的一個額外的更大的硬盤驅動器,比購買一個額外的服務器進行處理。 這是一個問題的預算和業務決定。 它也許您的數據源是如此之大,它只是不可行保持在您的工作機的數據量。 在這種情況下,你會做什麼? 那麼我們可以看看在調用本地數據服務器,但是這可能會導致網絡問題。 在這種情況下,如該網格系統可能成為不切實際的,包括在您的辦公環境。 這也可能是替代性的運行策略,例如,你可以看看,只有晚上8點到早上6點之間的工人每天晚上和/或限制的數據源請求調用。

上讓移動100GB的數據說,我們的數據源量。 是的,是一個相當位數據,在網絡上更新移動。 我們如何確保我們在這種情況下,最新的數據副本嗎? Rsync是一種可能性,但我個人認為作業處理服務器上運行您最新的數據源,並設置作為主複製(用一個漂亮的長濱日誌)這可能是要走的路:

複製 通過設置每個工人作為一個奴隸的作業控制服務器更新您的數據源,將涓滴很好地給你的工人沒有大幅增加,在網絡活動(即是,除非你執行一個龐大的數據更新和所有的工人踢一次)。 這比rsync的優勢,你不會得到每個職位的前長時間的停頓; mysql守護你的工人作為數據庫的更新,將不斷更新其數據,同時繼續處理。

這是如何設置我的演示服務器。 設置複製,我也跟著上設置複製 MySQL網站(指南),並在20分鐘內,我有我的頭文字工作者,複製作業控制服務器的數據集。 複製設置和過程,對於每一個額外的工人工作,每次當VM被複製。

總結

在本節的文章中,我們看起來簡單,無痛的,它是迄今usingÂrsync或subverion(SVN)的的,做的工作和減少在同一time.Â的網絡流量,讓您的處理代碼,我們還討論了如何允許它滴入每個工人,以保持您的數據源的信息最新。 因此,我們面積,確保我們保持在我們的辦公室電網系統的業務邏輯和信息。 顯然是有無數的替代品,來執行這些任務,但這裡是兩個簡單的例子來證明的解決方案是多麼容易來。

下一次

在這個系列中,恰當地命名為第5部分的最後一部分,我們將討論部署這一系統。 我會總結所學和我設法創造。

辦公室網格計算使用虛擬環境-第3部分

(星期五)二零零九年十二月四日下午11:37

介紹

我在一家公司上班,我們許多批處理作業處理數據每天數以百萬計的記錄,我一直在想最近所有的機器,周圍坐的每一天做幾個小時沒有運行。 如果我們可以使用這些機器,以增強我們的系統的處理能力,豈不是好? 在這組文章中,我要去看看用人辦公室電網使用虛擬環境的潛在好處。

第2部分 ,我們看著一台服務器將運行的工作,工作應該如何進行配置,以達到處理量最大,同時確保每個作業無故障處理。

設置您的工作 - 或跛行服務器

在這個過程中的下一步是建立虛擬的工人。 為了這個,我要去使用CentOS的安裝使用VirtualBox的。 我要安裝MySQLPHP服務器,又稱跛行馬錢,M ySQL,P惠普)SERVERA(我可能這個名字)。

  • 你的Windows機器上安裝VirtualBox的(後續鏈接)
  • 下載並安裝創建的虛擬機內的CentOS(當前版本5.3)

我這有可能是1000“有偉大的教程(OK,這裡有一個:小號下VirtualBox的創建和ManagingÂCentOS的虛擬機 )沒有意義。 我想重要的一點要注意的是,我叫我的虛擬機GridMachine的

至於客戶端虛擬化和操作系統,我選擇去那裡是沒有什麼大的每一個選擇的令人信服的理由。 VirtualBox是什麼,​​我用我家的機器,是由三大操作系統的支持。 我選擇的CentOS作為一個良好的穩定的操作系統,我用我自己的Web服務器。 我偉大的信徒在工作的合適的工具(雖然我申請“用你最快最簡單的心態在這裡),因此, 如果作業系 ​​統X運行你的代碼更快和更有效地使用,而不是 :)

重要的是確保你的虛擬機使用DHCP,為每一個新的虛擬機,否則將需要單獨配置,這是我們不want.By使用DHCP我們不需要工人機器配置網絡設置單獨的DHCP將手出你的IP地址。 因此,你可以複製你的辦公室的虛擬機,無需擔心設置每一個(這提高了可擴展性和降低工人管理)。

應力求實現的過程中,你將獲得一個新的物理機,安裝VirtualBox,然後非常部署沒有太多的其他虛擬形象。 這可能是明智的設置在不同的子網中的所有工人,這樣你至少可以看到有多少機器正在運行。 你還需要設置你的機器上長期租賃或租賃的DHCP無限。

如何運行工人的工作

這是一個有趣的領域,有幾個工人在處理工作的有效方法。 在這裡我只討論兩個最明顯的:

  • 永遠運行腳本:腳本,它是一個shell腳本,或一個PHP腳本執行一次對工人和運行一個無限循環的一部分。 我貼現作為一個腳本的崩潰這種方法,可能你的工人將停止運行,而不某種干預。
  • cron守護進程cron的腳本執行:每隔X分鐘揭開序幕,以你的腳本的呼籲得到的東西去。 如果沒有一些檢查,這可能會導致很多工人腳本運行的副本。

我的決定是用cron去揭開序幕的shell腳本每10minutes.Â的我的shell腳本執行以下任務:

  1. 獲取進程列表和grep'PHP'。 如果沒有找到,那麼繼續。
  2. 打電話給你的工作代碼,這在我的情況下將根據事情的PHP
  3. 工人腳本完成其運行
  4. 再次準備去下一個合適的呼叫

我的bash腳本看起來像下面這樣:

  #!/ bin / sh的
如果PS斧| grep的-V的grep | grep的PHP>的/ dev / null的
然後
    迴聲“工作目前正在處理,退出”
其他
    呼應“作業未運行,從現在開始”
     PHP yourJobProcessingScript.php
科幻 

注:迴聲的幾乎是完全沒有意義的,但可能有助於未來走來的人嘗試和編輯。

總結了一套工人的虛擬機,快速,簡單,容易複製到每個接收新硬件。 電網系統的“聰明”真的不是在可視化的操作系統,其所有的代碼創建過程中的工作,工作配置,並與在確保工作運行在適當的時候(即當主機處於閒置狀態)。

設置Windows初始化工人

第一項任務是工作需要從Windows命令行中運行虛擬機的命令。 如果你在默認位置安裝了VirtualBox和你命名的工人GridMachine,然後加載你的工作所需的命令是:

 的“C:\ Program Files文件\ Sun \中的VirtualBox \ VBoxManage.exe”startvm GridMachine 

但是在一個“無頭”狀態運行的腳本,我們需要使用:

  “C:\程序文件\ Sun \中的VirtualBox \ VBoxHeadless.exe”startvm GridMachine - VRDP =關閉 

這將啟動虛擬機,沒有GUI,並允許它來保存狀態正常。 第二個參數關閉的RDP,因此不會與Windows RDP的衝突,或給你一個消息監聽端口3389。 虛擬機的名稱是大小寫敏感的!

下一步,我們需要設置窗口,我們工人VM一旦機器已經閒置揭開序幕。 要做到這一點(在Windows XP中),你需要去開始 - >所有程序 - >附件 - >系統工具 - >任務計劃如下:

計劃任務

下一步點擊“添加任務計劃”瀏覽添加一個自定義程序。 導航到您的VBoxManage腳本,然後單擊“確定”。 時間表的任何選項(我們將在一分鐘內改變)你的任務,並繼續。 跳過下一個屏幕後,窗口會問你是誰,你想運行此任務,我建議無論是“管理員”或創建一個新的特權用戶。 請記住我們不想干涉在任何時候,機器上的標準的人員佔。 點擊“下一步”,並檢查顯示此任務的高級選項。

運行文本框的末尾添加“startvm GridMachine'字符串,並確保運行,只有當記錄在左取清選取3.1。 訪問日程任務和改變時間表下拉選項“空閒”時,選擇的時間,你想在機器閒置,然後再移動到下一個標籤。

最後的選項勾去掉其中規定停止任務,如果它已經運行的X時間,但不打勾的選項,以停止任務,如果機器不再是閒置。

時間表

這是Windows主機設置!

總結

在這一部分中,我們已成立了一個虛擬機作為一個工人,以及調用和執行我們的工作處理腳本的方式,我們(給自己一個PHP腳本)。 從這裡,我們來看看如何建立我們的Windows副本在headless模式啟動虛擬機的計算機變為空閒時,保存其狀態,當用戶恢復使用機器。 希望在這一點上,你將看到它是多麼簡單,設立這樣一個系統,並渴望得到一些實驗自己!

下一次

第4部分中,我們將著眼於使用工具,以確保您正在運行最新版本的代碼和數據來源,使得到的結果是一直到最新的最新的商業信息和邏輯。

辦公室網格計算使用虛擬環境-第2部分

(星期五)二零零九年十二月四日下午11:23

介紹

我在一家公司上班,我們許多批處理作業處理數據每天數以百萬計的記錄,我一直在想最近所有的機器,周圍坐的每一天做幾個小時沒有運行。 如果我們可以使用這些機器,以增強我們的系統的處理能力,豈不是好? 在這組文章中,我要去看看用人辦公室電網使用虛擬環境的潛在好處。

第1部分中,我給了我將使用以及討論一些潛在的原因,為什麼你想創建一個辦公室電網系統和技術的概述。

作業控制

如果你將要運行的作業,然後你會需要一些方法來管理他們。 你的作業控制系統(作業服務器)需要真正深思熟慮之前,甚至試圖運行辦公室電網。 所以,首先,什麼是作業控制系統的任務:

  • 移交後,要求工人工作
  • 告訴工人什麼類型的工作運行
  • 跟踪作業
  • 確保工作只運行一次
  • 向工人提供了就業數據,或至少告訴他們在哪裡得到它

該系統還需要擴展,一個解決方案,適用於在一個單一的情況下,現在可以延長運行幾種類型的業務工作,看到在網格解決方案的價值。 例如,作業可能會獲得優先事項,可能存在一個以上的作業類型(即幾個代碼基地),最終你甚至可以運行多個不同的工作,優化為每個作業類型(雖然不從“一般工人的機器'的想法)。 總是嘗試開發系統時,思考未來,短期視力可導致較長期的挫折和增加開發時間。

作業服務器

我們要去的地方需要控制我們的工作,這應該只在您的網格系統,有一個固定的資源定位器,是一個IP地址,主機名,URL(使用內部DNS)等,這是因為工人需要知道在哪裡找工作,工作人員需要找到作業控制系統(作業控制系統發現工人)。

作業服務器本身並沒有真正有一個複雜的任務(無論如何)的一項基本制度,它需要儲存工作清單,手出來工作,收到成效,並隨後它們存儲供以後檢索。 如何定義這些部件(如“工作”失控),可以是很基本的。 後來,我們可以延長系統包括一個管理界面,添加,編輯,刪除,暫停工作,但這是超出這個練習。

有沒有任何理由,那麼你的工作服務器不能是一個虛擬機,主要加工提供的服務器內運行,它不會消耗太多資源。 然而,作業服務器需要高可用性,如果上週五晚上,你將失去整個週末的處理,可能耗費您值得一兩個星期的處理時間(時相比,你的主要處理服務器單獨) 。 你可能要考慮把你的工作服務器高可用性負載平衡的環境。

基本設置

為我們的工作服務器的基本設置,包括我打電話我LIMP服務器 (這是馬錢ySql,磷HP)。 THEA工人上運行的代碼將實際工作,它可以運行什麼作業與作業控制系統數據庫進行交互。 後來,我們可以創建一個Web服務了工作,實際上手,而不是讓工人做自己的辛勤工作,但現在我們將繼續使用KISS原則 (保持簡單,愚蠢!)。

因此,讓我們創建三個MySQL的表處理工作。 這將是`工作`,`jobRecords`,`jobResults`。

工作表 在這裡,我使用的SQL好友一個偉大的小替代phpMyAdmin的僅僅是因為它很容易安裝在CentOS(別人看: 10到phpMyAdmin大的替代品

此表由5個簡單的領域,

  • ID:唯一標識工作
  • 名稱:可能是一個客戶端參考,或任何其他標識符
  • 狀態:你需要知道在哪裡工作,例如:
    • 0:未開始
    • 1:拿起
    • 2:已完成
  • started_by:誰開始做這項工作? 這不完全是必要的,但有一個很好的。 我建議他們在網絡上的IP地址跟踪工人
  • started_at:工人什麼時候開始工作? 通過跟踪,但沒有X的時間內完成的工作,我們知道我們需要拿起再次工作,並開始由另一名工人處理。 工人可以停止處理/去任何數量的原因,斷電,死機,網絡損失等離線

這是很容易,可以延長一些額外的領域,以便跟踪統計,看到工作了多久,一個櫃檯,看到多少工人拿起工作的結束時間列這個表如何(顯然,這需要往往1),優先就業,名單可以開下去。 在更複雜的工作方案,將有可能指定多少內存工人將需要訪問(因此只能使用合適的工人),甚至是什麼類型的工人將被要求。

讓我們添加一些例如工作:

例如工作

下表是很容易理解,這些都是我們的工作記錄。 他們有聯繫的主要工作表列jobs_id`。 本表非常取決於你需要的數據提供給你的工人,讓一個很簡單的例子,我們有四列:

  • ID:ID記錄
  • 產品名稱:人的名字
  • 地址:人的地址
  • jobs_id:這條記錄鏈接到作業ID

第三個和最後一個結果表中的表組成,它有很多相同的使我們的記錄表,並與另外一些列可能的記錄表中的一部分:

  • job_record_id:鏈接到工作表的結果
  • 結果:結果數據

......,這一切你需要的作業控制! (儘管是在一個非常基本的水平),在我的情況,我指出,我的數據處理另一個位於表,但是這可以很容易地文件,參數運行仿真代碼,你的名字。

選擇工作

如前所述,工人會為我們做什麼,現在我們的工作管理,所以我們真正需要做的是找到一份工作,需要處理和獲取信息。 我們將如何做到這一點? 以及挑選我們的工作選擇標準和找工作,在SQL中我做了以下:

  1. 採取任何不標記為完整,但我們的工人的工作和重置(替換同一個標識符__ ME__,最簡單的將是IP地址):
     更新`工作`設置'狀態'= 0'狀態'= 1,`started_by`= _ ME__; 
  2. 使用我們的工作選擇標準,選擇工作,並告訴工人,這與它打交道的控制系統:
     更新`工作`設置'狀態'= 1,`started_by`= _ ME__,started_at`=現在()'狀態'= 0或
     (`地位`1`started_at`> DATE_SUB(現在(),間隔x小時))ORDER`ID`升序; 

    通過抓工作,但沒有返回結果在X時間,我們確保所有的工作都是在運行崩潰或擅離職守工人的事件數量。

  3. 下一步搶詳情記錄本身的工作:
     選擇*從`工作`WHERE`started_by`= __ ME__極限;
    選擇*`job_records“``ID`= _ JOBID__; 

作業完成後,我們插入了我們的結果記錄和標記為已完成的工作。 請記住,作為作業可以暫停/恢復隨時讓一些在你的腳本的健壯性。 這可能是任務中途暫停通過更新作業控制系統,使檢查工作的結果保存到作業控制系統中的記錄數量,將是一個明智之舉。

此外,雖然這表明如何工作可以選擇從一個SQL查詢幀確實應該管理的控制,使抽象的工作,如果你決定切換到使用一個Web服務,文件系統, XML ,或任何其他多項制度,它不會影響到它上面的代碼。

工作配置

接下來要考慮的方面是工作的大小和配置。 玩作業配置,我們可以取得良好的平衡之間的速度,複製過程和可靠性。 以一對夫婦OFA方案:

  1. 工作1天,每運行,這意味著,你的工人需要15天時間來處理每個作業(記得當時2/3rds的10%的電力)。 這顯然不是一個明智的配置,你的工作規模是太大了! 這將需要至少增加一倍的時間去處理工作,最初的工人應該去擅離職守(拿起時,它已經不返回結果加後處理時間)。 在一個理想的,你必須至少有一個完整的工作很容易清除長期閒置期間的每個年底,這樣你的工作,在最壞的情況下保持計時工作將採取兩天的過程,應該先去失踪。
  2. 工作需要1分鐘運行,這意味著你的工人,約需15分鐘,運行每個作業。 雖然這可能最初似乎理想,你在吃午飯的時候獲得額外的工作處理,茶點,會議等,這種情況使應變系統的其他領域,並介紹了自身的問題。 例如,首先將您的設置/處理時間比去,因此失去了系統的效率。 您的網絡將是不斷流的工作信息,以各種工人的令人沮喪的工作人員,誰是毛澤東他們的日常工作​​。 你還打算把更多的應變作業處理服務器,因為它有很多很多小塊工作定期拋出。 最後,在這種情況下,如果你的工作服務器宕機,你要創建一個未完成的工作的巨大回日誌,而更大的工作可以繼續幸福地意識到加工作業服務器遇到困難。

在現實中會有您的網格設置沒有一個理想的配置,更取決於可用的資源,作業類型,作業的周轉時間的要求,網絡能力,等等​​。 然而,一些準則是:

  • 大小工作,使每個工人可以通過在15小時內(最長可能的空閒時間至少3-4個工作)
  • 發揮作業的大小,使安裝變得相當的處理時間(軸承在考慮到上述點)相比,微不足道。
  • 如果工作不完整的雙倍金額的時間(也許更少),你期望它來完成,它承擔了擅離職守,並開始處理它與另一名工人。 這意味著你可能要等待它來完成(如果後續作業失敗可能更長)工作的正常長度的三倍。 你可能要縮短這個時間,但要小心沒有減少太多,因為你可能會開始定期重複處理任務
  • 工作應該盡可能多的外部要求獨立。 服務器的工作,例如,只應在每一項工作的開始和結束聯絡。
  • 不飽和您的網絡,這將有兩個負面影響,你白天的工作人員會發現,使用網絡的沮喪和問題,可連接超時的問題只會變得更糟,因為你擴展你的網格經歷。
  • 確保工作可以運行在你的工人。 如果工作變得過於內存密集型或磁盤空間密集的工作將啟動中止的唯一的事情,你會發現是在沒有真正的原因與處理的工作數量下降。

提交工作結果

當提交工作結果,它是重要的檢查結果還沒有被提交由另一名工人,特別是如果目前的工人已經蟄伏一段時間。

結果提交時確保結果的數量內的工作相匹配的記錄數。

如前所述,不能過分強調,建設成為工作的檢索結果提交容錯。 工人可以(和最有可能)進入掛起模式在最不方便的時候,這需要照顧。 也再次抽象出來的結果提交將有助於滿足您的作業控制系統更容易處理的未來變化。

總結

在這sectionÂ,我們看著需要做什麼作業控制服務器,以及如何得到一個非常基本的系統設置。 我們討論了如何檢索從控制系統的工作,以及如何最好地配置工作得到大多數我們您的辦公網格系統。 要完成,提出了一個段落或提交結果返回到作業控制服務器。

  • 作業控制服務器管理工作,確保完成所有的工作單位
  • 通過提煉你的工作選擇/結果提交,沒有太多的問題,我們可以改變控制服務器技術
  • 配置您的工作,以確保它們運行您的網絡基礎設施上投入太多的壓力,快速,高效地,並沒有定期重複處理任務。
  • 確保您建立容錯和錯誤checkingÂ到你的程序,工人可以暫停,恢復和最不方便的時間。 記住要檢查,如果結果已提交另一名工人。

下一次

第三部分中,我們將創建我們的虛擬加工機,並成立了我們的windows機器成為空閒時間的工人。

辦公室網格計算使用虛擬環境-第5部分

,四日(星期五)十二月2009 11:03下午

介紹

我在一家公司上班,我們許多批處理作業處理數據每天數以百萬計的記錄,我一直在想最近所有的機器,周圍坐的每一天做幾個小時沒有運行。 如果我們可以使用這些機器,以增強我們的系統的處理能力,豈不是好? 在這組文章中,我要去看看用人辦公室電網使用虛擬環境的潛在好處。

第4部分中,我們看到,在使用工具,以確保我們正在運行最新版本的代碼和數據源,使得到的結果是一直到最新的最新的商業信息和邏輯。

預部署

前,如果有一件事你做一件事單獨部署的網格系統,它是當前系統的基準 無論你告訴同事多少額外的工作,您的系統正在做的,除非你有編號,以備份您的擔保這是什麼。 因此,

  • 你可以處理多少條記錄當前? 每日? 每小時?
  • 多久通常需要扭轉工作?
  • 你有更多的容量多少?

還有其他問題:

  • 如果您的服務器進行處理(或處理服務器)出現故障,這將如何影響你的能力,你會被削弱?
  • 你希望/希望得到來自電網系統有什麼優勢?
  • 是你的辦公室機器能夠運行的工作嗎?
  • 是你(或你的工作可以被轉換),在這種運行方式wrok?

最後一個主要的一點是採取你的時間,像這樣的任何重大變化。 更新您的處理代碼工作再次使用的新方法,基準。 可能成立處理服務器來運行一個虛擬機,所有的服務器進行處理後,將是另一名工人(只是一個非常強大的比較)。 允許新的進程來解決。

部署

我的建議是到辦公室的一個週末彈出執行所有的安裝和設置。 之前剛剛做了兩個星期的假期,這和其他貧困離開章處理的後果......也許不是......

部署這樣的系統需要是緩慢的。 Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Stop!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.













Panorama Theme by Themocracy

7 visitors online now
5 guests, 2 bots, 0 members
Max visitors today: 19 at 05:00 am UTC
This month: 26 at 04-04-2012 10:27 pm UTC
This year: 69 at 27-02-2012 09:56 am UTC
All time: 130 at 28-03-2011 10:40 pm UTC