2012-03-19 19 views
3

我的公司有數千個運行應用程序代碼的服務器實例 - 一些實例運行數據庫,其他實例運行web應用程序,還有一些運行API或Hadoop作業。所有服務器都運行Linux。Celery,Resque還是自定義解決方案,用於在我的雲計算機上處​​理作業?

在這個雲計算,開發者通常想做的兩兩件事之一到一個實例:

  1. 升級該實例上運行的應用程序的版本。通常這包括:a)在相關的Subversion存儲庫中標記代碼,b)從該標記構建RPM,以及c)在相關的應用服務器上安裝該RPM。請注意,此操作將觸及四個實例:SVN服務器,構建主機(構建發生的位置),YUM主機(存儲RPM的位置)以及運行應用程序的實例。

    今天,新應用程序版本的推出可能會達到500個實例。

  2. 在實例上運行任意腳本。 該腳本可以用任何語言編寫,只要解釋器​​在該實例上存在。例如。 UI開發人員想要運行他的「check_memory.php」腳本,該腳本在10個UI實例上執行x,y,z,然後在滿足某些條件的情況下重新啓動Web服務器。

我應該看看哪些工具來幫助構建此係統?我見過Celery和Resque以及delayed_job,但他們看起來好像是爲了完成許多任務而創建的。這個系統的負載要小得多 - 可能在一天中有一千個升級作業可能運行,並且會執行幾百次任意腳本。此外,他們不支持用任何語言編寫的任務。

中央「作業處理器」應該如何與實例進行通信? SSH,消息隊列(哪一個),別的?

謝謝你的幫助。

注意:這個雲是專有的,所以EC2工具不是一個選項。

回答

0

我能想到的兩種方法:

  1. 設置在服務器上無密碼的SSH,有一個包含集羣中所有機器的列表中的文件,並直接使用SSH運行的腳本。例如:ssh [email protected]「ls -la」。這與Hadoop的集羣啓動和關閉腳本使用的方法相同。如果您想動態分配任務,您可以隨機選擇節點。

  2. 使用類似Torque或Sun Grid Engine來管理羣集。

包安裝可以在腳本內部被包裹着,所以你只需要解決的第二個問題,並使用該解決方案來解決第一個:)

相關問題