4

我和我的团队想为我们的网站实施持续部署。持续部署基本上意味着非常频繁地部署到生产环境(一天多次)。据说 Etsy 一直在这样做。

我们的环境是Tomcat + Nginx。我们已经使用 Hudson 和热部署的 Hudson+Cargo 插件对我们的快照服务器(即传统的持续集成)进行任何代码更改的持续部署。

令人惊讶的是,效果很好(尽管随着时间的推移,我们有时必须重新启动 tomcat)。

对于生产来说,这是行不通的,因为我们不能关闭网站。我有一些想法,比如拥有两个网络应用程序并在一个关闭时重定向。

有人有任何想法或以前在真实的生产环境中做过吗?

4

3 回答 3

2

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

实时警报。无论您的部署过程有多好,错误仍然可以通过。最烦人的类型是在部署导致它们的代码数小时或数天后才会出现的错误。要捕获那些讨厌的错误,您需要一个监控平台,它可以让您知道何时出现问题,并让人类参与调试它们。

为了有效地实现对生产的持续部署,您需要良好的监控,否则您将无法了解您的应用程序发生了什么。

于 2011-02-21T15:27:34.087 回答
0

我不知道为什么你认为这是一个好主意,但这取决于你。

我会使用带有两个热系统的平衡器应用程序,这可以在 tomcat 本身中找到,然后在部署、部署和重新启动服务器之前停止服务器。为每个热服务器留出两分钟的窗口,你应该会很好。

编辑:我不会每次都部署。我们也是一家小公司,没有多少 QA (tm),但仍然只需单击构建系统即可上线。

于 2011-02-21T13:52:55.030 回答
0

我们为此使用 apache httpd 2.2 和 mod_proxy

然后我们运行了 2 个 tomcat,一个在端口 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重新上线

于 2011-09-16T13:21:06.577 回答