码迷,mamicode.com
首页 > 其他好文 > 详细

nginx笔记4-负载均衡带来的问题以及解决办法

时间:2018-01-21 00:01:54      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:body   容灾   无法   通过   nginx负载均衡   集中   问题   nbsp   带来   

接着笔记3,将笔记三的改造一下,现在分别启动两个Tomcat,在页面获取session。如图所示:

tomcat2的session:

技术分享图片

tomcat1的session:

技术分享图片

 

 根据上图发现,每个tomcat取到的session不一样。因此nginx负载均衡带来的问题就是session不一致,假设用户登陆后请求分发到Tomcat1,下一次请求到tomcat2的话,

那么每一次请求都会要求用户登陆。这必然不行的。

解决session共享问题办法有:

1.应用服务器(即Tomcat)之间进行session同步。通过配置tomcat的server.xml文件中配置相应的端口和地址等等。但是缺点是:应用服务器本身能力有限,再来个session共享的话,会带来很大的网络开销,

因此这种方式基本不用。

2.通过前面的笔记三的负载均衡算法中的源地址哈希算法。通过这个算法,只要IP不变化,请求永远定位到同一台应用服务器。修改nginx.conf文件,配置负载均衡的算法为源地址哈希,如下图所示:

技术分享图片

 

 配置好后,我们再重新刷新浏览器,看一下,请求分发是否还发生变化,如下图:

技术分享图片

正如上图所示,无论怎么刷新,请求的都是用一个应用服务器。

这样做就不存在session问题了。虽然解决的session问题,但是不容灾了。因为如果定位到的那台应用服务器挂了,那么用户是无法访问的。

某些中小型的系统可以使用。但是优缺点。

 

3.通过session外置集中管理。session外置集中管理用的最多的就是NoSQL数据库redis.举个例子,比如用用户账号和登陆系统的时间搓弄成一个token来模拟session。设置一定的过期时间。每次

请求分发到应用服务器的时候,从redis从取token校验即可。这样就解决的session共享问题。

nginx笔记4-负载均衡带来的问题以及解决办法

标签:body   容灾   无法   通过   nginx负载均衡   集中   问题   nbsp   带来   

原文地址:https://www.cnblogs.com/huangjuncong/p/8322207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!