我的公司有數千個運行應用程序代碼的服務器實例 - 一些實例運行數據庫,其他實例運行web應用程序,還有一些運行API或Hadoop作業。所有服務器都運行Linux。Celery,Resque還是自定義解決方案,用於在我的雲計算機上處理作業?
在這個雲計算,開發者通常想做的兩兩件事之一到一個實例:
升級該實例上運行的應用程序的版本。通常這包括:a)在相關的Subversion存儲庫中標記代碼,b)從該標記構建RPM,以及c)在相關的應用服務器上安裝該RPM。請注意,此操作將觸及四個實例:SVN服務器,構建主機(構建發生的位置),YUM主機(存儲RPM的位置)以及運行應用程序的實例。
今天,新應用程序版本的推出可能會達到500個實例。
在實例上運行任意腳本。 該腳本可以用任何語言編寫,只要解釋器在該實例上存在。例如。 UI開發人員想要運行他的「check_memory.php」腳本,該腳本在10個UI實例上執行x,y,z,然後在滿足某些條件的情況下重新啓動Web服務器。
我應該看看哪些工具來幫助構建此係統?我見過Celery和Resque以及delayed_job,但他們看起來好像是爲了完成許多任務而創建的。這個系統的負載要小得多 - 可能在一天中有一千個升級作業可能運行,並且會執行幾百次任意腳本。此外,他們不支持用任何語言編寫的任務。
中央「作業處理器」應該如何與實例進行通信? SSH,消息隊列(哪一個),別的?
謝謝你的幫助。
注意:這個雲是專有的,所以EC2工具不是一個選項。