nginx+tomcat session 共享

* tomcat1 192.168.10.153

* tomcat2 192.168.10.154

Tomcat 工作模式必须为Nio 模式。

##添加如下内容,         注意更换   address="192.168.10.154"  为本机IP
vim /usr/local/tomcat/conf/server.xml

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.10.154"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
##  修改 web文件,在</web-app>  上面  添加一行内容
vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml

<distributable/>
##添加测试文件
vim      index.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html>
    <head>
        <title>Cluster App Test</title>
    </head>
    <body>
    Server Info: <%  out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%>
    <%
    out.println("
ID " + session.getId()+"
");   // 如果有新的 Session 属性设置
    String dataName = request.getParameter("dataName");
        if (dataName != null && dataName.length() > 0) {
            String dataValue = request.getParameter("dataValue");
            session.setAttribute(dataName, dataValue);
        }
     %>
     </body>
</html>
##配置 nginx负责均衡,进行测试

        upstream tomcatserver {

        server 192.168.10.153:8080 weight=5;
        server  192.168.10.154:8080  weight=5;

        }     

        location    / {

            proxy_pass http://tomcatserver;  #来自jsp请求交给tomcat处理
        }

原文地址:http://blog.51cto.com/hequan/2066415

时间: 2024-11-10 05:45:54

nginx+tomcat session 共享的相关文章

【nginx】nginx tomcat session 共享配置

tomcat,redis下载忽略. 一.从github上下载源码,https://github.com/jcoleman/tomcat-redis-session-manager, 将源码复制到开发工具,打包成jar.注意tomcat版本,此处用tomcat 7.0.72,maven编译环境同样为1.7. 二.准备两个tomcat, 版本为上述7.0.72. 并修改指定端口,8081,8082,将上述jar,redis,commons-pool2 放到tomcat lib目录中. 按照githu

tomcat redis nginx 实现session共享

Redis tomcat nginx 实现session共享 redis3.1   tomcat7    nginx 1.8.1 jar包  jedis-2.7.2.jar   tomcat-redis-session-manage-tomcat7.jar  commons-pool2-2.4.2.jar Redis安装在fedora中 一.将redis设置主从服务器http://blog.csdn.net/qq_27966627/article/details/51249774 端口分别为63

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 ============================= 蕃薯耀 2017年11月27日 http://www.cnblogs.com/fanshuyao/ 代码美化版或附件下载见:http://fanshuyao.iteye.com/blog/2400975 一.Session共享使用tomcat-cluster-redis-session-manager插件实现 插件地址见:https://g

Nginx+tomcat session cluster会话保持实验

Nginx+tomcat session cluster会话保持实验 实验要求: 1.nginx+tomcat 负载均衡 2.会话保持 实验拓扑 ip网络规划 Nginxnode2:172.16.76.20 tomcatAnode3:172.16.76.30 tomcatBnode4:172.16.76.40 基础配置 node2: [[email protected]~]# yum install nginx –y    node3:     [[email protected]~]# yum

.Net Core Web Api实践(二).net core+Redis+IIS+nginx实现Session共享

前言:虽说公司app后端使用的是.net core+Redis+docker+k8s部署的,但是微信公众号后端使用的是IIS部署的,虽说公众号并发量不大,但领导还是使用了负载均衡,所以在介绍docker+k8s实现分布式Session共享之前,就先介绍一下IIS+nginx实现Session共享的方案,两者其实区别不大,所以这篇着重介绍方案,下篇介绍测试的区别以及填坑的方式. 1.环境准备 操作系统:Windows10 IIS:需要安装模块 VS2019.本地Redis数据库.ngnix(win

nginx tomcat session丢失的问题

nginx反向代理tomcat,出现seesion获取不到的问题. 网上搜索到的解决方案大多是集群tomcat共享session共享的问题,但我这个只有一台tomcat服务器,不涉及到服务器集群问题. 但也找了最靠谱的ip_hash方案试了一下,由于配置的时候不小心配到了根路径,所以在测试的时候手动加上了项目名称访问正常,session竟然也正常了... 考虑到刚才的情况,应该是代理多了个项目名导致session路径不一致,所以有两个解决方案: 屏蔽掉项目名称 为项目指定cookie路径

集群tomcat+session共享

1.要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了.你可以自己写tomcat的扩展来保存SESSION到memcached. 多个tomcat要一起协同工作有几种办法,可以考虑的方案有以下几个: 1. 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单.但这个方案的效率比较低,在大并发下表现并不好. 2. 利用nginx的基于访问ip的h

负载均衡下 tomcat session 共享

概述 在分布式部署的情况下,每台tomcat 都会有自己的session ,这样如果 用户A 在tomcat1 下登录,在tomcat2 下并没有session信息.如果 tomcat1宕机,tomcat2 将会变成非登录状态.可以将tomcat的session信息放到 redis上,通过redis统一管理,因为 tomcat1.tomcat2 都在 同一个域名下面,那么即使tomcat1宕机,tomcat 2 还是可以保持登录状态. 部署步骤 1.使用 nginx 配置好负载均衡. 部署两个t

tomcat session共享: 同tomcat不同项目之间的session共享

有时我们会遇到一个大点的项目,为了方便实现有些功能,我们会把项目拆成不同的独立web项目. 但我们在管理这些项目时,只有一个登陆口,然后在其他项目取session来实现身份的验证. 查看tomcat 关于 HTTP Connector中有个emptySessionPath 其解释如下: If set to true, all paths for session cookies will be set to /. This can be useful for portlet specificati