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错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Nginx更新SSL证书的实现步骤

《Nginx更新SSL证书的实现步骤》本文主要介绍了Nginx更新SSL证书的实现步骤,包括下载新证书、备份旧证书、配置新证书、验证配置及遇到问题时的解决方法,感兴趣的了解一下... 目录1 下载最新的SSL证书文件2 备份旧的SSL证书文件3 配置新证书4 验证配置5 遇到的http://www.cppc

Nginx之https证书配置实现

《Nginx之https证书配置实现》本文主要介绍了Nginx之https证书配置的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起... 目录背景介绍为什么不能部署在 IIS 或 NAT 设备上?具体实现证书获取nginx配置扩展结果验证

Nginx 访问控制的多种方法

《Nginx访问控制的多种方法》本文系统介绍了Nginx实现Web访问控制的多种方法,包括IP黑白名单、路径/方法/参数控制、HTTP基本认证、防盗链机制、客户端证书校验、限速限流、地理位置控制等基... 目录一、IP 白名单与黑名单1. 允许/拒绝指定IP2. 全局黑名单二、基于路径、方法、参数的访问控制

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng