当前位置: 首页 > news >正文

nginx负载均衡机制实现用户无感更新服务

项目用户数量比较多时,项目发布时用户不能访问,对用户来说体验很不好,对企业来说来说也是一种损失,如何无感知平滑稳定的升级,下面开始介绍。

当前文章用的方法是,后端服务器配置多个节点:在 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

  1. 这里是用 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
    
  2. 重启 nginx

    ./nginx -s reload
    

测试

访问项目默地址登录之后,这里是 http://ip,每次请求 nohup.out 都会有日志打印,把 8080 和 8081 的服务都停掉,你会发现 8082 的服务才启用,这是 8082 服务会接收所有请求的流量

依次替换项目包进行升级,重新启动服务即可


http://www.mrgr.cn/news/57415.html

相关文章:

  • Spring 定时任务
  • vue,java,webSocket通讯,服务端主动给多客户端发消息
  • 常用分布的数学期望、方差、特征函数
  • 记录:网鼎杯2024赛前热身WEB01
  • Erric Gamma 关于resuable code的采访
  • MySQL【知识改变命运】06
  • 郑州市风景园林专项设计资质人员设置类别
  • 【蓝队技能】【Python规则开发】文件分析微步在线推送文件变化监控流量分析
  • 用Python实现批量解压所有ZIP文件
  • 债券的基础知识(一)
  • L1.【Leetcode笔记】删除有序数组中重复项
  • 从React Hooks看React的本质
  • mongoDB(初识(一)基本概念 ACID、 CAP、 BASE)
  • ECharts饼图-饼图34,附视频讲解与代码下载
  • C语言中#error的作用
  • STM32应用详解(7)USART接收数据的程序(查询方式)
  • 【力扣刷题实战】设计循环队列
  • 工作繁忙的同时,如何兼顾到CSDN的持续分享呢
  • Python中tkinter使用详解
  • Lucas带你机器学习实战——KNN预测未来的爆品
  • 递归算法之组合生成(Combinations)详细解读
  • 事务挂起的原因分析
  • css动画烟花秀__烟花效果
  • 基于开源AI智能名片2+1链动模式S2B2C商城小程序的顾客消费记录价值转化深度研究
  • pytorch dataloader学习
  • 动态规划算法专题(八):01 背包问题