nginx负载均衡中的session共享
16lz
2021-03-19
根据之前做好的配置,接下来考虑遇到的数据共享问题。 因为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没有过期。那么是不是也会出现丢失的情况。
配置比较简单:
个人感觉第二种方案比较稳当。如果有更多方法,希望大神能指点一下。
©著作权归作者所有:来自51CTO博客作者陆小鹿的原创作品,如需转载,请注明出处,否则将追究法律责任好知识,才能预见未来
赞赏
0人进行了赞赏支持
更多相关文章
- postgresql copy使用
- HMS Core . Sparkle金融创新沙龙,邀您参加
- 大数据啊大数据!
- 什么是分布式文件系统?为什么要学习分布式文件系统?数据存储的重要
- 数据管理服务的本质是什么?
- 介绍一款免费好用的可视化数据库管理工具
- “小而美”的数据治理实践
- Python爬虫如何去抓取qq音乐的歌手数据?
- 网易数据库运维自动化演进与 AIOps 探索