Spring boot 如何在不停机的情况下重新部署springboot应用程序
我的资源有限,因此无法与docker&kubernetes一起设置完整的Spring boot 如何在不停机的情况下重新部署springboot应用程序,spring-boot,tomcat,downtime,hot-reload,Spring Boot,Tomcat,Downtime,Hot Reload,我的资源有限,因此无法与docker&kubernetes一起设置完整的微服务体系结构,我的应用程序正在不断地被用户使用 我必须为每个新版本/热修复程序重新部署我的应用程序,你知道我如何以最少的停机时间实现这一点吗 有关我的应用程序的信息: 服务器中的启动持续时间:80秒 端口:8080 应用服务器:嵌入式tomcat 弹簧靴释放:2.0.1.释放 我支持一个公司nginx反向代理 包装:jar 阶段:制作 我想到了这个解决方案: 设置内部nginx,监听端口8080而不是我的应用程序并转
微服务体系结构,我的应用程序正在不断地被用户使用
我必须为每个新版本/热修复程序重新部署我的应用程序,你知道我如何以最少的停机时间实现这一点吗
有关我的应用程序的信息:
- 服务器中的启动持续时间:
80秒
- 端口:
8080
- 应用服务器:
嵌入式tomcat
- 弹簧靴释放:
2.0.1.释放
- 我支持一个公司
nginx
反向代理
- 包装:
jar
- 阶段:
制作
我想到了这个解决方案:
- 设置内部
nginx
,监听端口8080而不是我的应用程序并转发到新端口
- 每次我想要部署时,我都会在一个新的不同端口启动我的应用程序,并更改nginx conf,然后重新加载它
以前有没有人遇到过这个问题?或者有什么想法如何实现它
提前感谢。请运行公司nginx代理的人员在应用程序的两个实例之间进行负载平衡,例如一个运行在8080
上,另一个运行在8081
上。然后,您可以一次更新一个应用程序。您可能还需要将某些事情外部化,例如,在单独的主机上运行任何会话管理,而不是依赖内存中的会话处理
upstream production {
server 123.456.789:8080;
server 123.456.789:8081;
}
server {
listen 80;
server_name some.host;
location / {
proxy_pass http://production;
}
}
您需要能够动态地使应用程序在不同的端口上侦听。或者,您也可以让它们在不同的主机上运行。对于普通的Tomcat设置,您可以在同一上下文路径上部署多个应用程序。新用户将看到您的应用程序的新版本。但我不知道这在嵌入式Tomcat案例中是如何工作的:@Selaron谢谢你的回答,事实上我已经将Tomcat与springboot一起嵌入,我面临着这个问题。要切换到tomcat,我必须测量影响并复制我的所有配置,还必须更改我的应用程序设计(不包括tomcat和packagin,以及..)。请运行公司nginx代理的人员在应用程序的两个实例之间进行负载平衡,例如,一个运行在8080
上,另一个运行在8081
上。然后,您可以一次更新一个应用程序。您可能还需要将某些事情外部化,例如,在单独的主机上运行任何会话管理,而不是依赖内存中的会话处理。@AlexB+1我很欣赏这个想法,因为nginx中有一个运行状况检查。谢谢作为可能的答案再次感谢您的回答,我将投票表决,当我们投入生产时,我将把它标记为正确答案。