项目用户数量比较多时,项目发布时用户不能访问,对用户来说体验很不好,对企业来说来说也是一种损失,如何无感知平滑稳定的升级,下面开始介绍。
当前文章用的方法是,后端服务器配置多个节点:在 Nginx
配置中使用反向代理配置将流量分发到这些后端服务器。下面是通过备用节点的方式实现,也可以通过调整反向代理的权重,逐渐将流量从旧版本的服务节点转移到新版本的服务节点实现。
环境准备
前后端项目部署可参考:手把手教你部署前后端分离项目
后端节点部署
后端部署三个节点,一个用于备用节点,分别在服务器项目目录下依次执行以下命令
nohup java -jar ruoyi-admin.jar --server.port=8080 >nohup.out 2>&1 &
nohup java -jar ruoyi-admin.jar --server.port=8081 >nohup1.out 2>&1 &
nohup java -jar ruoyi-admin.jar --server.port=8082 >nohup2.out 2>&1 &
查看是否启动成功,一种是直接查看 nuhuo.out
日志,另一种是浏览器访问 http://ip:8080/swagger-ui/index.html
出现接口文档地址则说明成功
配置 upstream
添加 backup
表示这台服务器是备用服务器,只有其他服务器都停机时才会启用,更新节点也是利用这一特点
upstream 中节点 down 之后,会自动剔除,新的请求会分配到正常能访问的节点
weight=2
表示权重占比为 2/3
,每 3 次请求会转发 2 次到这台服务器上
weight=1
表示权重占比为 1/3
,每 3 次请求会转发 1 次到这台服务器上
upstream backend {
# 权重为2,max_fails=3 fail_timeout=20s表示最大失败3次,20s之内则不会向该节点发送请求
server localhost:8080 weight=2 max_fails=3 fail_timeout=20s;
server localhost:8081 weight=1;
server localhost:8082 backup;
}
修改 proxy_pass 代理地址
代理地址替换为 upstream
后的 backend
即可
proxy_pass http://backend/;
重启 Nginx
-
这里是用
tar
包安装的,在sbin
目录下, 检查nginx
配置是否正确,输入./nginx -t
,出现下列内容则说明配置是正确的[root@aliyun sbin]# ./nginx -t
nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful -
重启
nginx
./nginx -s reload
测试
访问项目默地址登录之后,这里是 http://ip,每次请求 nohup.out
都会有日志打印,把 8080 和 8081 的服务都停掉,你会发现 8082 的服务才启用,这是 8082 服务会接收所有请求的流量
依次替换项目包进行升级,重新启动服务即可
Nginx
域名证书配置可参考:服务器 Nginx 配置域名和证书
原文始发于微信公众号(师小师):Nginx 负载均衡机制实现用户无感更新服务
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/226427.html