是否有可能部署一个新的.战争的应用程序没有停止的应用程序?
题
嘿,我是新来的技术发展的看法,我想知道关于部署。一旦一个。战争是部署到生产中,如何才能更新应用程序没有停机时间?
解决方案
即使你热部署WAR文件(不重新启动服务器)仍然会有,而上下文重新加载一些停机时间。这不是一个Grails东西作为这样,更多的J2EE / servlet的事情。
由于dogbert说,最好把一个维护页面(使用Apache Tomcat中的前面是一个好主意),并关闭应用服务器,上传新的WAR然后重新启动服务器了。
其他提示
你可能会设置两个tomcat实例Apache mod_proxy_balancer
在它前面,为描述 在这里,.对于重新部署的应用"滚动升级"战略可以适用(假设app1和2都是你的两个tomcat实例):
- 禁止tomcat@app1在Apache的平衡经理
- 重新部署应用程序tomcat@app1
- 做一些测试与app1,看看是否一切正常
- 使tomcat@app1在平衡经理
- 禁止tomcat@2在平衡经理
- 重新部署应用程序tomcat@2
- 使tomcat@2在平衡经理
和你完成。你不需要多个物理或虚拟机这样做的-这也有可能在一个单一的框。如果应用程序升级意味着数据库的变化,要小心。上述可能是封例如在一个 gant脚本, ,这样一个简单的"技术发展的看法集群的重新部署"不你需要的一切。这样一个脚本是目前我的名单上,但是我不知道当这将完成。
如果你使用Tomcat,这是可能的,有什么所谓的平行部署:
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Parallel_deployment
只是名称战争的文件的版本号以描述在doc:
- foo##42.战争
- foo##43.战争
在您的应用程序打包成一个WAR,更改源文件将不会被自动像你使用运行的应用程序传播。总的来说,我认为,特别是对于具有代码编译的代码多数民众赞成有效住所有的时间,这是一个有点冒险进行实时更新。您可以在开发过程中奇部署毛刺处理,但在生产,我宁愿明哲保身,生活与停机时间的一点点。
我所知道的是,你可以改变一个常规文件或.gsp之一,之后将更改保存在浏览器可用,但如果有其他类型的文件,我不完全相信这个功能。