首页 > 其他 > 详细

nginx负载均衡中的session共享

时间:2021-03-19 18:04:03      阅读:44      评论:0      收藏:0      [点我收藏+]
         根据之前做好的配置,接下来考虑遇到的数据共享问题。
  因为niginx将原本请求的一台机器分为了2台机器,那么如果当用户信息或者一些临时数据存储在
  session中的话会数据时有时无,因为session存在服务端的,比如第一次在192.168.0.123存了
  session,第二次在192.168.0.321登录的时候发现数据没得了。
  那么我这里总结了几个解决方案,不足的地方希望大神指点下小弟。

第一:将session数据存在cookie中

因为cookie是存在请求用户客户端的。所以数据不会出现时有时无的症状,如果你session存的只是用户名,
登录状态这些小数据,那基本上肯定是够用。存的时候用户信息要加密,验证的时候解密对比啊。缺点就是
浏览器清理会被清理掉,而且存储重要数据安全性有问题。

第二:将session数据存在数据库中

可以在数据库里创建一个session表用来存储session数据。
我这里cookie只保存登录信息,数据库用来存储当前登录用户的一些其他信息。
其实已经有点像某些公司的中间件了,如果用户量巨大也可以单独一个服务器存储这些数据。
下面是我的数据表结构:
技术分享图片
UserName就是属于哪个登录用户名的记录。

第三:nginx的ip_hash

ip_hash负载均衡根据个人理解:例如多个用户通过nginx访问到了后端的服务器集群,这个时候
因为有不同用户,所以ip也不同,ip+hash算法计算的hash值都传到了服务器,nginx就记录了这
个ip和hash值,那么下次同一个ip过来还是会分配到这个服务器,那么如果当前ip的服务器挂了,
这个时候用户请求过来,session没有过期。那么是不是也会出现丢失的情况。
配置比较简单:
技术分享图片

个人感觉第二种方案比较稳当。如果有更多方法,希望大神能指点一下。

nginx负载均衡中的session共享

原文:https://blog.51cto.com/15034497/2665562

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!