zoukankan      html  css  js  c++  java
  • nginx笔记4-负载均衡带来的问题以及解决办法

    接着笔记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共享问题。

  • 相关阅读:
    Windows XP SP1 Privilege Escalation
    A way escape rbash
    A trick in Exploit Dev
    wget.vbs & wget.ps1
    IDEA创建普通java和web项目教程
    初始Mybatis
    JAVA高级面试题
    JVM执行原理
    java-- 位运算
    JAVA---XML
  • 原文地址:https://www.cnblogs.com/huangjuncong/p/8322207.html
Copyright © 2011-2022 走看看