gpt4 book ai didi

spring-boot - 如何在不停机的情况下重新部署 spring boot 应用程序

转载 作者:行者123 更新时间:2023-11-28 22:39:22 25 4
gpt4 key购买 nike

我的资源有限,所以我无法使用 docker 和 kubernetes 设置完整的微服务架构,而且我的应用程序一直在被用户使用。

我必须为每个新版本/热修复重新部署我的应用程序,您知道我怎样才能以最短的停机时间实现这一点吗?

关于我的应用的信息:

  • 服务器启动持续时间:80 秒
  • 端口:8080
  • 应用服务器:嵌入式tomcat
  • Spring-boot 版本:2.0.1.RELEASE
  • 我在企业 nginx 反向代理背后。
  • 包装:jar
  • 阶段:生产

我想到了这个解决方案:

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

有没有人遇到过这个问题?或任何想法如何实现它?

提前谢谢你。

最佳答案

请运行公司 nginx 代理的人员在您的应用程序的两个实例之间进行负载平衡,例如一个在 8080 上运行,一个在 8081 上运行。然后,您可以一次更新一个应用程序。您可能还需要将某些东西外部化,例如在单独的主机上运行任何 session 管理,而不是依赖内存中的 session 处理。

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/

您需要能够动态地 configure Spring Boot's server port 以使应用程序在不同的端口上监听。或者,您也可以让它们在不同的主机上运行。

关于spring-boot - 如何在不停机的情况下重新部署 spring boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53535670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com