集群环境下如何解决登录问题 - 图1

如果不处理的话,Session是不能共享的,如果用户请求被Nginx轮询到不同的机器上的话,因为机器上session没有用户信息的话,就让重新登录,假如说这次nginx负载到了Tomcat1上, 那么就得登录一下, 下回nginx负载到了Tomcat2上,那么因为session默认是不能跨机器共享的,所以又得重新登录一下.

0.1.1 解决方式

方式1 nginx
nginx的ip hash 算法 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

缺点:不能充分考虑到各个服务器的性能,有可能同一时刻访问通过ip_hash出来都请求到一台服务器上,而且这台服务器的性能不行???

方式2, 用Redis代替session