nginx负载均衡解决session问题

问题场景

我们都知道,session是用于在服务器上保存用户的登录信息的,在使用负载均衡时,后端的服务器ip不是固定的,这样就导致了用户刷新网页后登陆信息会失效、订单异常等一系列问题。

解决方式

一般有以下方法来解决这个问题

  1. nginx ip_hash
    通过nginx负载均衡策略中ip_hash来保持数据的持久化,原理就是客户端访问时,nginx会将客户端的ip转换为一个固定的hash值,同一客户端连续的Web请求都会被分发到同一服务器进行处理,从而达到保持请求状态的完整性的目的。

PS:需要注意的是,这种情况仅适用于nginx在最前端的情况下,在大型网站的架构体系中,nginx负载均衡下面可能还有各种中间件等情况,发生这种情况的话,又会发生上述问题了!

upstream example.com  
   {   
            server 192.168.1.101:80;   
            server 192.168.1.102:80;  
            ip_hash;  
   }  
   server  
   {  
            listen 80;  
            location /  
            {  
                   proxy_pass  
                   http://example.com;  
            }  
}  
  1. 使用redis/memcached等缓存服务器
    使用redis是我个人比较喜欢的方式,原因也很简单,因为它是目前市场上用的最多,速度最快的非关系型数据库!它真的非常快、快、快!

当然了,你要先告诉开发,session模块要分开来写,将对系统I/O有较高需求的模块(比如session、缓存、队列数据、临时中专数据等等)都可以通过redis进行存储。需要注意的是,一定要先搭好集群,做好持久化!不然又是一次重大的生产事故了,血崩!

猜你喜欢

转载自blog.csdn.net/qq_36641456/article/details/89044170
今日推荐