2008-09-25 227 views
5

任何人都有關於將Perl模塊部署到無共享集羣的方法的建議嗎?將Perl部署到無共享集羣

我們目前的方法是非常手動的。

  1. 取下半羣集
  2. 複印Perl模塊(CPAN風格模塊)被擊落的集羣成員
  3. SSH到每個構件和被安裝在每個模塊上運行perl Makefile.pl; make ; make install
  4. 確認部署
  5. 在服務中,新部署的集羣成員停止服務舊集羣成員並重復步驟2→4

這顯然遠不是最優的,任何人都知道將Perl模塊部署到無共享集羣的好工具鏈?

回答

4

以一個節點脫機,安裝Perl,然後用它來重新映像的其他節點。

至少,這就是我想象你想要在無共享集羣安裝軟件。 Perl只是你正在安裝的應用程序。

2

我過去開發了一個Perl程序,它使用Expect模塊(來自CPAN)基本上自動執行所描述的過程,自動對每個主機進行sshing,複製所有必需的文件並執行安裝。不幸的是,這是爲客戶現場開發的,因此我無法訪問代碼進行分享。如果您熟悉Expect,那麼設置起來應該不會太困難。

0

我不知道一個無共享集羣是什麼,但如果它使用了一些基礎的* nix系統如Fedora,Mandriva的,或Ubuntu。許多perl模塊都是針對特定體系結構進行預編譯的。你可以很容易地運行這些。

如果這些系統都是一樣的拱你可以做別人說,只是在編譯的模塊從系統複製到系統中,只要確保你擁有所有的依賴關係,以及在接收方系統。

2

我們目前有一個羣集Perl應用程序,做數據處理。我們還有許多我們開發的軟件所依賴的CPAN模塊和模塊。當你說'沒有共享'時,我假設你指的是NFS掛載之類的東西。

如果機器具有相同的配置,那麼您可能可以將整個應用程序構建到單個目錄結構中(例如:/ opt/my-app),並且可以成爲您唯一需要的東西推到箱子。

至於它部署在箱子上,您可能能夠使用Capistrano。我們開發了幾個我們自己的集羣實用程序,它們搭載了ssh - 我已經發布了該實用程序的一種形式:parallel-jobs。它的README顯示了一個執行多個並行ssh命令的例子。擴展該程序以便能夠了解您的羣集,然後能夠跨羣集執行相同的命令(而不是一系列不同的命令)是一小步。

3

假設所有的機器都是相同的,你應該能夠保持一個規範的安裝,並使用rsync或其他東西來保持其他更新。

1

Capistrano是一種工具,它允許您在一組服務器上運行命令;它非常適合讓你的任務更容易。

再往下自動化線,而且複雜,是Puppet,允許你做定義一組服務器,給他們的角色,然後推出的代碼集,以每臺機器訂閱了一定的作用。

2

如果您使用的是Debian或Ubunto操作系統,那麼您可以打包您的Perl模塊 - 我已經開源了一些代碼來幫助解決這個問題:Perl module builder它仍然非常粗糙,但可以工作,並且可以使用您自己的代碼作爲CPAN模塊,這會使部署更容易。

還有一個項目可以獲得所有CPAN的RedHat rpms,Dave Cross給出了一個可能有用的談話Perl in RPM-Land

如果你在其他一些沒有打包的系統上,那麼rsync選項(安裝在一臺機器上,然後在其他機器上安裝rsync)也應該可以工作,注意你可以在它上面安裝一個windows共享和rsync unix如果需要的話。

使用中央管理器一樣Puppet使創建並在集羣中保持機器了很多更容易管理,從安裝代碼管理用戶和電子郵件配置。還有一個Perl項目正在進行類似的工作,但尚未公佈。