答案 0 :(得分:7)
如前所述here,您可以在其前面设置两个带有Apache mod_proxy_balancer
的tomcat实例。对于应用程序的重新部署,可能会应用“滚动升级”策略(假设app1和app2是您的两个tomcat实例):
你已经完成了。您不需要多台物理或虚拟机器 - 它也可以在一个盒子上使用。如果应用程序升级意味着数据库更改,请小心。 以上可能被封装,例如在gant script中,所以一个简单的“grails cluster-redeploy”就可以完成你需要的一切。这样的脚本目前在我的列表中,但我不知道何时完成。
答案 1 :(得分:4)
如果您正在使用Tomcat,则可以使用所谓的并行部署:
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Parallel_deployment
只需使用doc:
中所述的版本号命名war文件答案 2 :(得分:2)
即使您热部署WAR文件(通过不重新启动服务器),在上下文重新加载时仍会有一些停机时间。这不是Grails的东西,更像是J2EE / servlet的东西。
正如dogbert所说,最好建立一个维护页面(在Tomcat前面使用Apache是一个好主意)并关闭应用服务器,上传新的WAR然后再次启动服务器。
答案 3 :(得分:1)
将您的应用程序打包为WAR后,对源文件的更改将不会像使用run-app一样自动传播。总的来说,我认为特别是对于编码代码一直有效的代码,执行实时更新有点冒险。你可以在开发过程中应对奇怪的部署故障,但在生产中我宁愿玩它安全,并且需要一点停机时间。
答案 4 :(得分:0)
我所知道的是你可以更改一个groovy文件或.gsp文件,保存更改后可以在浏览器中使用,但是如果有其他类型的文件,我不完全确定这个功能。