2012-08-01 62 views
3

我們正在嘗試將maven部署到許多多個服務器,這些服務器僅在一行中形成我們的集羣。maven部署到一行中的tomcat集羣(多個)

This solution工作得很好,只是我們需要反覆運行它(每個服務器安裝1次)。我們的目標是我們的集成服務器(詹金斯)後做buils一個成功的神器。而具有矩陣功能目前並不是真正的選擇。如果我們只需要部署它,爲什麼要爲每個服務器重新構建項目? (加上花時間做這件事)

我們一直在試驗使用maven配置文件(每個服務器一個,試圖一次激活它們,或者一個大配置文件與所有服務器),但沒有運氣與該選項, tomcat-maven-plugin不能以這種方式工作。

詹金斯似乎有一個是基於貨物一部署插件,但一次只能

有沒有辦法做到這一點處理一臺服務器?要麼使用maven-tomcat插件?還是詹金斯/哈德森插件?

有關如何在構建成功後將戰爭部署到集羣的任何其他想法專家? (我試圖避免一個shell腳本,只是因爲可移植性問題)

回答

1

如果你需要它只發生一行,我建議執行一個CMD,Ant,bash等腳本作爲「線「,並使該腳本做不止一件事。

例如,如果您使用Ant ... 您的一行可能是這樣的:ant DeployToCluster。並且您的build.xml文件可能包含目標DeployToCluster,其中可能包含許多步驟。想想它就像重構了一些代碼的方法,它可以做很多事情。調用你的方法的代碼變成了一行代碼。

你不可能找到一個單一的命令去做你以後的事情,除非它只是執行一個已經寫好的腳本,而其他人已經寫出了你想要的腳本。

無論哪種方式,一次能夠將代碼部署到單個服務器通常是一個好主意。這樣可以隨時保持應用程序/服務的正常運行,因爲您一次只能影響一個節點,而其他節點可以繼續運行。它還具有這樣的優點,即如果出現可怕的錯誤,您可以不重新啓用集羣中的一個節點,並診斷一臺服務器的問題,而不是通過部署錯誤取出整個集羣。部署戰略步驟,我們的腳本如下是:

  1. 單個節點
  2. 的禁用監測拉節點出集羣
  3. 部署新的代碼,它
  4. 驗證節點與新的代碼運行正常
  5. 將節點放回集羣
  6. 重新啓用該節點的監視
  7. 對每個其他節點重複步驟

如果在任何步驟出現任何問題,我們始終爲我們的用戶提供一個工作環境。

+0

如果您需要從maven執行Ant腳本/目標,我以前使用過Ant運行插件,它工作得很好。 HTTP://maven.apache。org/plugins/maven-antrun-plugin/ – 2012-08-01 21:03:28

+0

謝謝你提到了一個很好的一點,當你提到一次只做一臺服務器時。現在,這是用於我們的用戶驗收測試,而實際上發生故障會讓我們注意到這一點。我想我們需要重新評估整個過程 – maverick 2012-08-02 21:42:53

+0

謝謝!我並不是故意要把你的計劃搞砸,但這些都是值得思考的。我想你投入多少努力取決於幾件事情:1)停工是否可以接受?多長時間? 2)你需要這個過程有多可靠?例如如果發生故障,服務器應保留在什麼狀態?祝你好運! – 2012-08-07 19:03:06