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回到在线状态