我们正在使用 TeamCity 构建服务器上的 Maven 将应用程序部署到多个 Jelastic Tomcat 环境。这运作良好,并且已经这样做了相当长的一段时间。
现在,我们希望更接近零停机部署,并希望找到一种简单的方法来最小化或消除停机时间。Tomcat 的 Parallel Deploy 功能似乎很合适。
但是,Jelastic Maven 插件似乎不处理并行部署或非标准(即<artifact-name>##<artifact-version>.war
)存档名称。tomcat-maven-plugin 无法与我们的 Nginx 代理/负载均衡器配合使用,声称请求(PUT)太大。100 MB 应该不是问题,对吧...?:)
当我尝试使用 Postman 进行部署时,我还会收到一条错误消息,指出上下文/
已被使用。没错,这就是我想要并行部署的原因......
我已经在本地尝试了所有方法,它就像一个魅力,但远程是另一个问题,有没有人在这种设置中取得成功,或者我错过了什么?
没错,Jelastic Maven 目前不支持在 Tomcat 中并行部署。功能请求已添加到增强列表中。作为目前的替代选项,您可以通过直接 SSH 连接到容器来部署战争存档。或者您可以使用交换域- 创建一个新环境,将新版本部署到这个新环境,对其进行测试,如果一切正常,则在新旧环境之间交换域。
除此之外,我们将发布 Traffic Distributor - 一个用于复杂应用程序的零停机部署的特定模块。它是某种负载均衡器,允许通过拖放或 API 调用在环境之间重新路由部分或全部流量。一个月后就要公开了。
如果您在负载均衡器上使用公共 IP 地址,还有另一种选择(推荐)。
在这种情况下,您可以使用相同的拓扑创建一个全新/独立的环境,在那里部署更新的代码,然后在测试后将公共 IP从旧负载均衡器移动到新负载均衡器。它非常快(只有几个丢包)。
此工作流程非常适合蓝绿部署。