集群环境下的session问题
来源:互联网 发布:电话黄页怎么关闭网络 编辑:程序博客网 时间:2024/06/07 02:18
问题
假设我们有4台服务器,1台做负载均衡器,其余3台做web节点服务器,并将这3台服务器做一个负载均衡。我们给这3台服务器标记一下,为1、2、3号服,假设某个用户发出登录请求,正好落在1号服上,登录成功,接着用户又发出了第2个请求,这个时候正好落在了2号服务器上,这里我用的是Nginx服务器,Nginx服务器集群默认采用的是轮询算法,所以会接着落在第2号服务器上,但是尴尬的是,我的用户session信息保存在1号服务器上的,所以会导致第2次请求的时候会显示没有登录。
解决思路
解决方法主要有两种,一种是在负载均衡服务器上配置一个ip_hash
,另一种就是将session保存到mysql
或memcached
中,还可以搭建一个单点的服务器专门用来登录。
设置ip_hash
在负载均衡服务器上设置ip_hash,如:
#服务器池upstream www_server_pools{ ip_hash; server 192.168.1.1 80; server 192.168.1.2 80; server 192.168.1.3 80;}server { listen 80; server_name test.com; location / { proxy_pass http://www_server_pools; }}
配置了ip_hash
的话,只要是一个ip发出的请求都会落在同一台服务器上,这样可以解决session共享问题,但是无法保证1:1的负载均衡,因为在国内大多数公司都是NAT上网模式,多个客户端都对应一个外部IP,所以,这些客户端都会被分配到同一个节点服务器上,从而导致请求分配不均。
将session持久化
用户登录的时候,可以将session信息保存到mysql或者memcached中,这样的话,如果在发出请求,我们从数据库中查询是否存在session信息,然后进行的业务逻辑。
阅读全文
0 0
- 集群环境下的session复制问题
- 集群环境下的session问题
- 集群环境下spring+session+redis,session共享问题
- spring session解决集群环境下session共享问题
- 集群环境下的问题
- spring session,集群环境下的session共享解决方案
- 集群下session共享问题的解决方案.
- Nginx的Sessin sticky模块解决集群环境下session丢失的问题
- web集群环境下session问题得解决方案比较
- 集群的Session问题
- 分布式集群环境下Session共享的简单解决方案
- 集群环境下的一些特殊问题
- 集群/分布式环境下,Session处理策略
- 应用服务器集群下的session保持问题
- Apache JK集群环境session丢失问题
- 集群下的session共享
- 分布式集群的Session问题
- 集群session丢失的问题
- uva 1625 Color Length (dp)
- sar命令
- Rsyslog日志的类型和级别
- 汉诺塔问题-递归
- python的空格和tab混淆而报错
- 集群环境下的session问题
- RISC-V学习第一篇
- java中静态方法中调用非静态方法
- 2017计蒜客第五场初赛 UCloud 的安全秘钥(困难)(哈希算法)
- Python之转置(容易忽略)
- c语言入门:排序算法
- python 获取一个值在某个区间的指定倍数的值
- Android中SpannableString学习以及实现自定义TextView的显示更多(展开)和收起功能
- MySQL数据库备份问题