我的资源有限,因此无法使用docker&kubernetes,我的应用程序正在不断地被用户使用。
我必须为每个新版本/热修复程序重新部署我的应用程序,你知道我如何在最短的停机时间内实现这一点吗?
关于我的应用程序的信息:
- 服务器中的启动持续时间:
80 seconds
- 端口:
8080
- 应用服务器:
embedded tomcat
- 弹簧启动释放:
2.0.1.RELEASE
- 我支持一个公司
nginx
反向代理 - 包装:
jar
- 阶段:
production
我想到了这个解决方案:
- 设置内部
nginx
,该CCD_9侦听端口8080而不是我的应用程序,并转发到新端口 - 每次我想部署时,我都会在一个新的不同端口启动我的应用程序,并更改nginx-conf,然后重新加载它
以前有人遇到过这个问题吗?或者有没有想过如何实现它?
提前谢谢。
请运行公司nginx代理的人员在应用程序的两个实例之间进行负载平衡,例如一个在microservices
0上运行,另一个在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的服务器端口,以使应用程序在单独的端口上侦听。或者,您也可以让它们在单独的主机上运行。