利用Redis实现session共享

负载均衡

首先使用nginx配置一个简单的负载均衡:

upstream myupstream{
    server *.*.*.*:8080 weight=1;
    server *.*.*.*:8081 weight=1;
}
server{
    listen *.*.*.*:80
    local / {
        proxy_pass http://myupstream;
    }
}

session不一致产生的原因

在配置了负载均衡之后,本地发出的请求会被分发到不同的服务器上,第一次请求时,服务器1会产生一个session写到服务器内存中并将sessionid返回到本地浏览器中的cookie中,第二次请求时,本地发起请求同时会携带该sessionid到服务器2,但服务器2内存中并不存在该sessionid,因此会创建一个新的session并返回到本地浏览器中,之后的每一次请求都会循环这个过程,导致用户信息丢失。

解决方案

基于IP_HASH的负载均衡
  • 实现
    设置负载均衡策略为iphash
upstream backserver { 
ip_hash; 
    server *.*.*.*:8080;
    server *.*.*.*:8080;
}
  • 原理:
    同一ip的请求会分发到同一服务器进行处理
  • 优点:
    1、配置简单,无需修改代码,不入侵应用。
    2、便于水平拓展。
  • 缺点:
    1、服务器出现故障或者重启会导
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值