我的资源有限,因此无法使用docker&kubernetes设置完整的microservices
体系结构,并且我的应用一直在为用户服务。
我必须为每个新版本/修复程序重新部署我的应用程序,您知道如何在最少的停机时间内实现这一目标吗?
有关我的应用的信息:
80 seconds
。8080
embedded tomcat
2.0.1.RELEASE
。nginx
反向代理。jar
production
我想到了这个解决方案:
nginx
,该端口在端口8080而不是我的应用程序上侦听并转发到新端口。有没有人以前遇到过这个问题?或任何想法如何实现它?
谢谢。
答案 0 :(得分:2)
请运行公司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;
}
}
https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/
您将需要能够动态configure Spring Boot's server port以使应用程序在单独的端口上进行侦听。另外,您也可以使它们在单独的主机上运行。