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 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

SpringCloud负载均衡spring-cloud-starter-loadbalancer解读

《SpringCloud负载均衡spring-cloud-starter-loadbalancer解读》:本文主要介绍SpringCloud负载均衡spring-cloud-starter-loa... 目录简述主要特点使用负载均衡算法1. 轮询负载均衡策略(Round Robin)2. 随机负载均衡策略(

Nginx配置location+rewrite实现隐性域名配置

《Nginx配置location+rewrite实现隐性域名配置》本文主要介绍了Nginx配置location+rewrite实现隐性域名配置,包括基于根目录、条件和反向代理+rewrite配置的隐性... 目录1、配置基于根目录的隐性域名(就是nginx反向代理)2、配置基于条件的隐性域名2.1、基于条件

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分

一文详解Nginx的强缓存和协商缓存

《一文详解Nginx的强缓存和协商缓存》这篇文章主要为大家详细介绍了Nginx中强缓存和协商缓存的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、强缓存(Strong Cache)1. 定义2. 响应头3. Nginx 配置示例4. 行为5. 适用场景二、协商缓存(协