4

我的團隊和我想爲我們的網站實施Continuous Deployment。持續部署基本上意味着非常頻繁地部署到生產(每天多次)。據說Etsy總是這樣做。Java/JVM Web應用程序的連續部署

我們的環境是Tomcat + Nginx。我們已經使用Hudson和一個熱門部署的Hudson + Cargo插件,將任何代碼更改連續部署到我們的快照服務器(即傳統的持續集成)。令人驚訝的是,這種方式運行良好(儘管隨着時間的推移我們不得不重新啓動tomcat)。

對於生產,這是不行的,因爲我們不能停止網站。 我有一些想法,如有兩個網絡應用程序和一個關閉時重定向。

有沒有人有任何想法或以前在真實的生產環境中做過?

回答

2

http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html

實時報警。無論您的部署過程多麼出色,錯誤仍然可以通過。最令人討厭的變體是在導致它們的代碼部署後幾小時或幾天內纔會顯示的錯誤。爲了捕捉這些令人討厭的錯誤,您需要一個監控平臺,可以讓您知道什麼時候出現問題,並讓一個人參與調試。

要有效地實現對生產的持續部署,您需要良好的監控,否則您將無法理解您的應用程序正在發生什麼。

+0

是的,我們正在看Nagios(之前使用它),並有一個log4j SMTP記錄器的例外情況。 –

0

我不知道爲什麼你認爲這是一個好主意,但那取決於你。

我會使用一個平衡器應用程序和兩個熱機系統,它們可以在tomcat中找到,然後在部署,部署和重新啓動服務器之前停止服務器。爲每個熱點服務器留出兩分鐘的時間窗口,並且您應該很好。

編輯:我不會部署EVERYTIME。我們也是一家小公司,雖然質量保證(QA)很少,但它仍然只需點擊一下構建系統即可投入使用。

+0

我在考慮這些方面。我強烈建議您在解散前檢查一下(CD)。它當然不適用於每個人,但對於我們沒有質量保證的小型企業來說,這並非如此。 –

+0

http://timothyfitz.wordpress。COM/2009/02/10 /連續部署-AT-IMVU - 做最不可能五十次-A-日/。這就是爲什麼Adam想要執行連續部署 –

+0

您的公司是使用tomcat中的負載均衡器還是外部負載均衡器(即nginx)? –

0

我們使用apache httpd的2.2和mod_proxy的此

然後我們有2個TOMCATS運行,一個端口8080上,和一個在端口88 防火牆阻止對這些端口的外部訪問,因此,只有端口80是開放

Apache正在配置爲偵聽端口80

它是配置過於簡單。 這是一個基本配置(httpd.conf)中,將工作開箱:

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
<Proxy balancer://mycluster> 
    BalancerMember http://localhost:8080 
    BalancerMember http://localhost:88 status=+H 
</Proxy> 
ProxyPass/balancer://mycluster/ 
ProxyPassReverse/balancer://mycluster/ 

的「+ H」意味着它僅作爲一個備份服務器,所以,當8080不可達時,它會在88上運行直到8080回到在線狀態