网站首页 > 技术教程 正文
背景
上篇讲了负载均衡详细的实现方法,其实已经基本够用了,但是还有一些更为复杂的负载均衡策略配置,今天结合使用场景介绍下。
轮询
轮询是nginx默认的负载均衡实现方式,此时会将没给请求按时间顺序分配到对应server,如下所示:
upstream balance1{ server 47.104.61.1;#tomcat1所在地址 server 47.104.61.2;#tomcat2所在地址 }
对服务器的请求会按顺序分配到47.104.61.1和47.104.61.2。
这种方式下,如果47.104.61.1挂掉了,没事,47.104.61.2还能提供服务。这个nginx能自动检测出。所谓的双机热备,这就是很好的实现方式。所以对应的架构可为:
权重
上面架构在一些公司就出现问题了,由于历史原因,tomcat1所在服务器性能强大,tomcat2所在服务器性能比较垃圾(内存低、带宽低、响应慢),这样tomcat1其实性能都没发挥出来,tomcat2都快要累死了。
这时候也不着急,配置下轮询权重就是了,如下所示,80%的请求由tomcat1处理,20%tomcat2处理,完美。
upstream balance1{ server 47.104.61.1 weight:8;#tomcat1所在地址 server 47.104.61.2 weight:2;#tomcat2所在地址 }
哈希
上面的架构还是有问题啊,如果是需要用户登录之后反复操作的系统,例如商城。
假如用户是在tomat1登录的,然后系统用session保存了登录用户的信息。
结果用户第二个请求发送到了tomcat2,此时悲剧了,tomcat2认为用户没登录。
没关系,nginx已经考了到了这种情况,直接使用哈希策略,此时nginx会自动识别访问者的ip,然后通过哈希算法分配一个固定的服务器给该访问者,所以对同一个用户来说,每次访问都是由一个服务器响应了。
配置如下:
upstream balance1{ ip_hash;#如此简单的配置就能产生重大作用 server 47.104.61.1 weight:8;#tomcat1所在地址 server 47.104.61.2 weight:2;#tomcat2所在地址 }
后端无状态下负载均衡策略的使用
现在都讲究后端无状态,啥是无状态,简单理解就是后端没有session,用户的请求也不用每次都固定到后端一个服务器上。
那如何来识别用户是否登录呢。
此处举个简单的例子,假设咱们的系统是用户商城。
用户登录成功后,咱们生成一个UUID与用户编号一起存到数据库中,标志着会话开始。
用户在前端拿到UUID后,后续每次请求都携带UUID到达后端。
后端通过拦截器,看看UUID是否合法(数据库中存在且不超时),不合法的请求不响应即可。
当然在现实程序中,这种频繁访问数据的场景放到数据库中速度太慢,对数据库拖累严重。
所以可以放到缓存数据库如redis中,这样速度就大大加快了。
此时负载均衡策略的制定就很自由了,因为nginx重启非常迅速,后端接口又没有状态,我们可以通过监控看各个服务器的负载情况,然后动态的调整权重即可。
当所有服务器都不堪忍受的时候,加服务器,然后重新配置nginx即可,完全不会影响业务正常运作。
作者:慕课熊猫
链接:https://www.imooc.com/article/276175
来源:慕课网
猜你喜欢
- 2024-10-09 kubernetes--pod资源的重启策略和健康检查
- 2024-10-09 Jenkins+Gitlab+Nginx发布与回退基于tag的项目(解决重复构建)
- 2024-10-09 HC免费开源物业系统Centos下重启后服务重新启动操作步骤
- 2024-10-09 Nginx之4包罗万象 - (虚拟主机)(nginx 虚拟ip)
- 2024-10-09 jenkins重启(Jenkins重启命令)
- 2024-10-09 nginx 改变您的HTTP服务器的缺省banner
- 2024-10-09 干货!通过Nginx实现中转的功能(nginx转换)
- 2024-10-09 docker容器自动重启配置(docker自动重启机制)
- 2024-10-09 如何在多容器 Docker Compose 应用程序中重启单个容器?
- 2024-09-08 Nginx动静分离简单实现示例讲解(nginx动静分离简单实现示例讲解)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)