Nginx负载均衡之回话保持

2023-10-10 07:30

本文主要是介绍Nginx负载均衡之回话保持,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、服务器扩容

1、硬件扩容

简介:也叫纵向扩容。简单来讲就是通过增加和改价硬件的方式来换取服务器的高性能。比如说买块内存条,换个ssd。

瓶颈:一直扩容下去也是有瓶颈的,比如主板只能支持100G的内存,你插再大的内存条也不管事,主板不支持,所以得再叠加水平扩容。

2、水平扩容

简介:通过集群的方式来提高服务器的性能。

二、水平扩容

1、负载均衡策略之:轮询

这个比较简单,多台机器轮着来,当然你也可以指定权重什么的配置项,这是我之前文章中的配置:

 upstream fzjh {
                server 192.168.186.11 weight=1;
                server 192.168.186.12 weight=5 backup;

                server 192.168.186.13 weight=8 down;

}

server {
                listen 80 default_server;

                location / {

                        proxy_pass http://fzjh;
                }
        }

2、负载均衡策略之:ip_hash

原理:不同的ip地址经过ip_hash后生成不同的hash值,同一个ip经过ip_hash后会是同一个值,比如两台服务器的话,值%2取余就可以打到固定的机器上了。

解决的问题:iphash通常用来解决回话问题,比如我们一个网站,登录后回话session保持到A服务器上,但是第二次请求的时候请求打到了B服务器,此时又得登录一次,这样的用户体验当然是不好的,所以为了保持以后的请求都打到这台机器上,我们可以用ip_hash来做后台nginx的负载均衡策略。配置如下:

upstream iphashserver {

        ip_hash;
        server www.test.com:8002;
        server www.test.com:8003;

    }

 我在8001上配置了8002和8003,浏览器请求8001,nginx服务器转发到了8003上,以后不管你刷新多少次,请求都会打到这个服务器上。

 缺点:该配置适合中小型公司使用,如果是大型项目的话,不太适合。如果后台服务器挂一台,回话就会中断,又需要重新登录,之前的回话保持的数据都消失了,用户体验和安全性不太好。

课外小知识:多台服务器保持回话也有放到Redis里的,但也有个缺点,如果是个大型项目,回话多的时候,Redis也得做分布式。也会增加管理负担。

3、负载均衡策略之:hash $request_uri

原理:请求同一个uri会打到同一个服务器上。(uri:指的是完整的url除了域名部分的后半段)

后端服务器是缓存比较有效。

 upstream iphashserver {

        hash $request_uri;
        server www.test.com:8002;
        server www.test.com:8003;

    }

4、负载均衡之:hash $cookie_xxx

原理和上面的一样,不同的书,hash的对象不一样,

$cookie_xxx:是指cookie里的变量。

upstream iphashserver {

        hash $cookie_grafana_session;
        server www.test.com:8002;
        server www.test.com:8003;

    }

 当然你可以设置php里的sessionID或者Tomcat里的jsessionid,可以达到保持回话的目的。

ip_hash和cookie_jsessionid的什么区别:一个局域网,大家都接到了同一个路由器上,去请求一个服务器的时候,服务器只会认为你们是同一个ip打过来的,都是路由器的ip(网关),所以都会把流量分发到同一台机器,这个时候后台服务器负载就不均衡了。后者是更具回话sessionId做的hash的,这样会平均打倒后端服务上。

这篇关于Nginx负载均衡之回话保持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/178960

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N