Nginx负载均衡
来源:互联网 发布:js 页面加载后 合计 编辑:程序博客网 时间:2024/05/17 09:14
一、Nginx的反向代理
在没有反向代理时,当我有多个ip拥有相同的服务时,访问相同的服务我需要明确指出我要访问的ip以及端口。
例如:我分别在192.168.0.1:8001、192.168.0.1:8002、192.168.0.2:8001、192.168.0.2:8002上部署了/login
当我需要调用login服务时,我需要明确写明 http://192.168.0.1:8001/login、http://192.168.0.1:8002/login、http://192.168.0.2:8001/login、http://192.168.0.2:8002/login
这样的方式对于用户访问login服务会十分不友好。
于是,nginx的反向代理就好像一个用户与目标之间的代理,当用户访问目标地址时,输入nginx的ip以及端口(默认80)/login后,nginx则会指向其中的一台服务器的login服务
二、nginx的负载均衡
负载均衡是在反向代理的基础上加了一些策略,通俗来讲就是当我的nginx可以指向多个服务器的时候,nginx该指向哪个服务器。
负载均衡的目的在于解决某个服务器压力过大,对用户访问所带来的负载进行分流,将请求转发给一个相对空闲的服务器上。
三、nginx的分配策略
(1)轮询方式(默认):每个请求按照时间顺序逐个分配给服务器,当某一服务器挂了会从nginx的分配列表里自动剔除
(2)指定权重:在nginx.conf中配置每个server的weight,weight值越大,分配到该server的可能性越大
(3)ip绑定:每个请求按照ip的hash结果进行分配,ip所访问的服务器是固定。(注:这种方式可以解决用户访问服务器session丢失问题)
四、缺陷
场景(非ip绑定策略):用户A通过Nginx访问了1号服务器,所有的session都存入了1号服务器,当用户A再次通过Nginx访问时,Nginx可能会将用户A分配给2号服务器上,这时用户A在2号服务器上没有之前访问的session,导致session丢失。
场景(ip绑定策略):由于根据ip进行分配,当某一个用户量集中于某一类ip时,会导致某个服务器负载过重。
五、session丢失解决方案
(1)session复制:将新增的session复制到其他各个服务器上
(2)会话保持
(3)session共享:将服务器获得的session存入redis缓存数据库中,各服务器可通过redis数据库获取session
实战内容详见:实例——session共享解决方案(Docker+Nginx+Spring Boot+Spring Session + Redis)
- nginx负载均衡【nginx】
- nginx配置负载负载均衡
- nginx负载均衡
- Nginx负载均衡
- Nginx 负载均衡 简介
- nginx 负载均衡配置
- Nginx负载均衡
- nginx 负载均衡测试
- Nginx实现负载均衡
- Nginx负载均衡
- 解析Nginx负载均衡
- Nginx负载均衡
- nginx 实现负载均衡
- 【NGINX】负载均衡(upstream)
- nginx 负载均衡
- Nginx 负载均衡示例
- Nginx负载均衡
- Nginx实现负载均衡
- 拦截导弹(规律:下降子序列的个数等于最长上升子序列的长度)
- 使用 eclipse 编写 xtend
- SSM整合时的xml配置参考
- 计算机视觉资源文件--链接整理
- V4,V7,V13兼容包
- Nginx负载均衡
- Android 二级图片缓存,图片优化,图片异步加载框架设计
- Vue2 自定义全局指令Vue.directive和指令的生命周期
- Spring Cloud 父项目建立
- js:for、$.each、 forEach和break和continue
- position 定位属性之absolute与fixed的区别
- Linux中buffer cache 与 page cache的区别
- C语言解题出现的提示
- C/C++ 指针函数返回值的一些问题