我正在尝试构建非常轻量级的解决方案,以实现 Java 应用程序的零停机部署。为了简单起见,我们假设我们有两台服务器。我的解决方案是使用:
在“前面”——一些负载均衡器(软件)——我在这里考虑 HAProxy。
在“背面”- 两台服务器,都运行 Tomcat 并部署了应用程序。
当我们即将部署新版本时
我们使用 HAProxy 禁用其中一台服务器,因此只有一台服务器(我们称之为服务器 A,运行旧版本)可用。
在其他服务器(我们称之为服务器 B)上部署新版本,运行生产单元测试(如果我们有它们:-)并使用 HAProxy 启用服务器 B,同时禁用服务器 A。
现在我们又只有一台服务器处于活动状态(服务器 B,带有新版本)。在服务器 B 上部署新版本并重新启用它。
有什么建议如何改进吗?如何自动化?
有现成的解决方案吗?还是我必须使用自己的自定义脚本?
Thanks!
滚动升级确实是一个很好的解决方案,前提是您的负载平衡器支持此选项(服务器饥饿)。
另一个解决方案是使用支持 OSGi 的应用程序服务器来热替换部分或整个应用程序。
我会推荐第一个。 SpringSource 的 AMS 监控控制台可以关闭 tcServer 集群(一个增强版的自定义 tomcat),IIRC 会自动进行滚动升级(但请检查文档)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)