標籤的帖子:VirtualBox的

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

,四日(星期五)十二月2009 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部分中,我們將著眼於使用工具,以確保您正在運行最新版本的代碼和數據來源,使得到的結果是一直到最新的最新的商業信息和邏輯。

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

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

介紹

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

作為一個PHP開發人員,我要使用的工具,我使用的每一天,即Linux中, MYSQL ,PHP,VirtualBox和顛覆(SVN)的。 不過,我希望本指南將適應其他語言和技術一樣好。

提供解決方案,我將非常鬆散的基礎上處理,我們就需要實現,但是這可能不是通過整篇文章的真實,我會改變為簡單的事情,或產生更有趣的使用場景類型。

這些虛擬環境將Windows機器上運行,因為這是大多數辦事處運行。 辦公室機器做了處理,不應該干涉員工使用這些機器,應該不需要在機器的維修,並很容易地部署到新機,因為他們成為可用。 此外,新的虛擬機,不需要任何額外的配置,因為這大大降低了在可擴展的網格系統的可擴展性和易用性。

為什麼要部署Office的計算網格嗎?

首先,你可能會想,為什麼不使用雲計算資源,如Amazon的EC2平台 原因可能有幾個,例如:

  • 你不會委託到雲計算環境中的某些數據
  • 到雲計算環境中,你不能把某些數據(如數據離開該國)法律上的原因,可能出於法律原因,如NHS的紀錄。
  • 你要保持加工單位關閉,並有超過硬件的完全控制
  • 你沒有項目資金運行雲實例
  • 你的辦公室並沒有連接到互聯網,因此它不可能使用雲資源
  • 你不喜歡雨,雲建議雨,因此你保持良好

我敢肯定,這個名單可以繼續,但我認為這是足夠現在。

一個辦公室計算網格的優點

好吧,讓我們做一些數學(在真實的物理風格讓一些籠統的假設)。 試想一下,你有大的的仡處理服務器上運行100每一天的工作。 在你的辦公室有50台機器,每天16小時處於閒置狀態,這些機器是只要你仡處理SEVER強大的10%。 (四捨五入到這裡所有的結果都低估的性能提升)。

因此,1台* 10%的電力* 2/3的時間= 0.067 1,即在桌面空閒時間處理, 每天可處理6的全面工作

如果你現在擴展這件事,它需要15閒置的台式機,每天處理盡可能多的就業機會,作為你的主服務器進行處理。

因此,在我們假裝辦公室50台機器,我們可以增加1服務器我們4個全處理服務器的處理能力,或者我們可以處理400每一天的工作,而不是100。

通知,貴公司已沒有新的硬件投資只是增加其批量處理能力的4倍 潛在的,你要你的用電量增加,但大多數辦公環境,我去過機一般都留下過夜了,所以你可以看到作為一個綠色倡議。

也意味著,在新的投資(或更新)處理服務器可以被延遲,如果你的辦公室機器充足,為您提高您的辦公設備的電源,你的辦公室網格變得更加強大,自動等優勢。

技術

你需要什麼? (或更正確,我沒有什麼用):

  • 閒置辦公設備(備用的舊的Windows XP的筆記本電腦在我的情況)
  • VirtualBox的(或其他虛擬化客戶端軟件)
  • 與PHP,mySQL的runningÂ切割下來操作系統上運行的虛擬機,我打電話給我的這些LIMP服務器 :)
  • 喬布斯運行
  • 作業服務器(可以是另一台虛擬機的地方)

典型的工作

,該系統被設計為運行工作的類型如下:

  • 系統接收到的數據,這就需要我們以匹配並返回結果列表
  • 符合條件的涉及檢查/尋找數(相當靜態)的數據源
  • 從數據源的結果,可能需要進一步驗證,合併,其他數據源的檢查結果
  • 數據返回匹配的記錄,充分驗證和處理
  • 內工作的每個記錄是獨立的休息

所以基本上我們尋找正在運行的作業,這需要一個數據庫查詢的混合物和一些數字運算,在一個商業環境相當典型的場景。

電網解決方案是處理這種類型的工作,不僅有利。 基本上可以並行運行,任何分裂過程可分為獨立單位。 為例子和詳細信息,請參見本維基百科: 網格計算 ,但幾個著名的例子是SETI @ HOMEBIONC 有運行計算網格框架,這些都值得探討。

我們會實現嗎?

通過這些文章的最後,我希望部署辦公網格,不需要非常昂貴或費時。 我要討論:

  • 設置作業控制系統,工作配置
  • 創建一個適當的處理虛擬機
  • 如何設置在Windows機器上的系統
  • 確保您使用的是最新的代碼和數據
  • 部署和基準
  • 展望未來

我會大樓(我建的,然後寫這)一個示例應用程序來測試使用Windows XP和我GridMachine“虛擬機上的本地機的概念。 我的作業控制服務器將成為我主要的機器上運行Fedora 11中

這絕不是為了展示一個完全工作的強大的系統,它意味著更多的示範和討論顯示,這些東西可以在相當短的時間空間,在較小的代價實現。 請隨時給我任何意見,更正,或改善,我會盡我最大努力保持更新以匹配本文。

下一次

第2部分 ,我會開始在尋找工作控制系統,並考慮工作應該如何進行配置,以達到處理量最大,同時確保每個作業無故障處理。

辦公室網格計算使用虛擬環境-第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機器成為空閒時間的工人。













全景主題 themocracy

9訪客在線
7位,2個機器人,0會員
最大的遊客今天:19在05:00上午UTC
本月26日在2012年4月4日10:27 PM UTC
今年:69在27-02-2012 09:56我
所有時間:130 28-03-2011下午10:40 UTC