如何在没有停机时间的情况下重新部署springboot应用程序



我的资源有限,因此无法使用docker&kubernetes,我的应用程序正在不断地被用户使用。

我必须为每个新版本/热修复程序重新部署我的应用程序,你知道我如何在最短的停机时间内实现这一点吗?

关于我的应用程序的信息:

  • 服务器中的启动持续时间:80 seconds
  • 端口:8080
  • 应用服务器:embedded tomcat
  • 弹簧启动释放:2.0.1.RELEASE
  • 我支持一个公司nginx反向代理
  • 包装:jar
  • 阶段:production

我想到了这个解决方案:

  • 设置内部nginx,该CCD_9侦听端口8080而不是我的应用程序,并转发到新端口
  • 每次我想部署时,我都会在一个新的不同端口启动我的应用程序,并更改nginx-conf,然后重新加载它

以前有人遇到过这个问题吗?或者有没有想过如何实现它?

提前谢谢。

请运行公司nginx代理的人员在应用程序的两个实例之间进行负载平衡,例如一个在microservices0上运行,另一个在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;
}
}

https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/

您需要能够动态配置SpringBoot的服务器端口,以使应用程序在单独的端口上侦听。或者,您也可以让它们在单独的主机上运行。

相关内容

  • 没有找到相关文章

最新更新