Java 应用程序的零停机时间部署
我正在尝试构建非常轻量级的解决方案,以实现Java应用程序的零停机时间部署。为了简单起见,让我们假设我们有两台服务器。我的解决方案是使用:
在“前面” - 一些负载平衡器(软件) - 我在这里考虑HAProxy。
在“背面” - 两台服务器,两台服务器都运行已部署应用程序的Tomcat。
当我们即将部署新版本时
我们使用HAProxy禁用其中一个服务器,因此只有一个服务器(我们称之为服务器A,它运行旧版本)可用。
在其他服务器(我们称之为服务器B)上部署新版本,运行生产单元测试(以防万一我们有它们:-)并使用 HAProxy 启用服务器 B,同时禁用服务器 A。
现在,我们再次只有一个服务器处于活动状态(服务器 B,新版本)。在服务器 B 上部署新版本,然后重新启用它。
任何建议如何改进?自动化程度如何?
任何现成的解决方案,还是我必须最终使用自己的自定义脚本?
谢谢!