• Nginx + Tomcat7 + redis session一致性问题


            Nginx 作负载均衡时,由于是每次都需要把请求分发到不同的机器,同一个用户在一台机器上创建了 session,下一次的请求很有可能会转发到另外一台机器,会造成 session 丢失。我们可以使用 Redis 来保存 session。具体步骤如下:

    1.  https://files.cnblogs.com/files/langfanyun/redislib.7z  下载解压后,把 jar 包都放在Tomcat 的 lib 目录下;

    2. 编辑 Tomcat下的 conf/context.xml 文件,加入如下配置:

        <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
            host="192.168.137.47"
            port="6379"
            database="0"
            maxInactiveInterval="60" />

       其中 host 为 Redis 的服务器地址。

    3. 修改 Tomcat 下的 conf/server.xml 文件,在 <Engine>节点添加 jvmRoute 属性,不同机器上的Tomcat 设置不同的值:

           <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

    4. 修改 Tomcat 下的 webapps/ROOT/ 下的 index.jsp 文件,把<body>里的内容改成如下。不同机器上的此文件,添加一些不同的值,以区分不同的机器。

    <body>
            SessionID: <%=session.getId()%><br/>
            SessionIP: <%=request.getServerName()%><br>
            tomcat1
        </body>

    5. 启动 Redis 服务器和各个 Tomcat,访问时,多刷新几次,可以看到 sessionID 的值一样,但是其它内容不一样。说明实际上是访问了不同的 Tomcat 下的应用 。

  • 相关阅读:
    Servlet接口实现类开发步骤
    Servlet概述
    Web服务器之HTTP协议与Tomcat服务器
    vant中van-picker选项插入图片
    排序算法-插入排序
    排序算法-快速排序
    排序算法-冒泡排序
    浅谈C#中Dictionary的实现。
    设计模式(23)-备忘录模式
    设计模式(22)-访问者模式
  • 原文地址:https://www.cnblogs.com/langfanyun/p/8502701.html
Copyright © 2020-2023  润新知