Java应用程序的零停机时间部署 [英] Zero downtime deployment for Java apps

查看:343
本文介绍了Java应用程序的零停机时间部署的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试构建非常轻量级的解决方案,以便为Java应用程序实现零停机部署。为简单起见,我们认为我们有两台服务器。我的解决方案是使用:

I am trying to build the very lightweight solution for zero downtime deployment for Java apps. For the sake of simplicity lets think that we have two servers. My solution is to use:


  1. 在前端 - 一些负载均衡器(软件) - 我在考虑HAProxy这里。

  1. On the "front" -- some load balancer (software) - I am thinking about HAProxy here.

在后面 - 两台服务器上,都运行Tomcat和已部署的应用程序。

On the "back" - two servers, both running Tomcat with deployed application.

当我们即将部署新版本时

When we are about to deploy new release


  1. 我们禁用其中一个具有HAProxy的服务器,因此只有一个服务器(让我们称之为服务器A,运行旧版本)将可用。

  1. We disable one of the servers with HAProxy, so only one server (let's call it server A, which is running old release) will be available.

在其他服务器上部署新版本(让我们称之为服务器B),运行生产单元测试(如果我们有它们:-)并启用服务器B HAProxy,同时禁用服务器A.

Deploy new release on other server (let's call it server B), run production unit tests (in case we have them :-) and enable server B with HAProxy, disabling server A at the same time.

现在我们再次只有一台服务器处于活动状态(服务器B,新版本)。在服务器B上部署新版本,然后重新启用它。

Now we have again only one server active (server B, with the new release). Deploy new release on server B, and re-enable it.

任何建议如何改进?怎么自动化?

Any advises how to improve? How automate?

任何现成的解决方案还是我必须以自己的自定义脚本结束?

Any ready made solutions or do I have to end up with my own custom scripts?

谢谢!

推荐答案

如果您的负载均衡器支持此选项(服务器缺乏),滚动升级确实是一个很好的解决方案。
另一个解决方案是使用支持OSGi的应用程序服务器来热替换部件或整个应用程序。

Rolling upgrade is indeed a good solution, provided your load-balancer supports this option (server starvation). Another solution is to use OSGi-enabled application servers, to hot-replace parts or whole of your application.

我会推荐第一个。 SpringSource的AMS监管控制台可以关闭一个tcServer集群(类固醇上的自定义tomcat),IIRC自动进行滚动升级(但检查文档)。

I would recommend the first one. SpringSource's AMS supervision console can take down a cluster of tcServer (a custom tomcat on steroids), and IIRC do the rolling upgrade automatically (but check the docs).

这篇关于Java应用程序的零停机时间部署的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆