生成session数据文件都是在本地了(a,b,c各自的服务器磁盘上)。负载均衡的目的本来就是要为了平均分配请求,所以没有固定第一次访问和第二次访问是同一台服务器,实际上无法确定的。第一秒访问可能是a服务器,第二秒访问的可能是c服务器。
所以同一个登录会员,实际上就会出现:第一秒访问第一台php服务器,第二秒访问的是第二台服务器。登录的信息一般是保存在session中的。这样子登录保存的session数据就需要进行共享了
第一种办法:把原来存储在服务器磁盘上的session数据存储到客户端的cookie中去。
第一种方案不适合高访问量的情况下,因为高访问量的情况下,每次请求浏览器都要发送session数据给服务器。一般一个cookie大小2k的样子。
要占用很多带宽了(服务器购买带宽是一个很大费用),成本增高。归纳为带宽性能,速度问题。
第二种办法:可以将session数据保存在memcached,redis之类内存数据库中。
memcached是基于内存存储数据的,性能很高,用户并发量很大的时候尤其合适。
在代理机上配置redis并使参加负载均衡的其他下层机连接代理机的reids/memcached。
网友评论