我和我的团队希望为我们的网站实施“Continuous Deployment”。持续部署基本上意味着非常频繁地部署到生产(一天多次)。据说Etsy一直这样做。
我们的环境是Tomcat + Nginx。我们已经使用Hudson和热部署的Hudson + Cargo插件,对我们的快照服务器(即传统的持续集成)进行任何代码更改的持续部署。
令人惊讶的是,它运作良好(虽然随着时间的推移,我们有时需要重启tomcat)。
对于生产而言,这不起作用,因为我们无法关闭网站。 我有一些想法,比如有两个网络应用程序,并在一个人关闭时重定向。
在真实的制作环境中,有人有任何想法或已经做过这个吗?
答案 0 :(得分:2)
来自http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html:
实时警报。无论您的部署过程有多好,错误仍然可以通过。最烦人的变种是在部署导致它们的代码之后几小时或几天才会出现的错误。为了捕获那些令人讨厌的错误,你需要一个监控平台,它可以让你知道什么时候出错了,让一个人参与调试它们。
要有效地实施持续部署到生产,您需要良好的监控,否则您将无法理解您的应用程序发生了什么。
答案 1 :(得分:0)
我不知道为什么你认为这是一个好主意,但这取决于你。
我会使用带有两个热系统的平衡器应用程序,可以在tomcat本身找到,然后在部署,部署和重新启动服务器之前停止服务器。为每个热服务器留一个两分钟的窗口,你应该很好。
编辑:我不会部署EVERYTIME。我们也是一家拥有大量QA(tm)的小公司,但在构建系统中仍然只需点击一下即可上线。
答案 2 :(得分:0)
我们使用apache httpd 2.2和mod_proxy来实现这个
然后我们有两个tomcats在运行,一个在端口8080上,一个在端口88上。 防火墙阻止外部访问这些端口,因此只有端口80打开
Apache HTTPd配置为侦听端口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重新联机