Tomcat Session 集群 ---------会话保持

一、 负载均衡、反向代理

环境搭建:  nginx服务器192.168.246.7   tomcat 1服务器192.168.246.8   

                                                                  tomcat 2服务器192.168.246.9

7-1 nginx服务器搭建

[root@zzcentos1 ~]#systemctl stop firewalld
[root@zzcentos1 ~]#setenforce 0
[root@zzcentos1 ~]#yum install epel-release.noarch -y
[root@zzcentos1 ~]#yum install nginx -y
[root@zzcentos1 ~]#rpm -ql nginx
[root@zzcentos1 ~]#systemctl start nginx
[root@zzcentos1 ~]#systemctl status nginx

[root@zzcentos1 ~]#vim /etc/nginx/nginx.conf

upstream tomcat {
    server  192.168.246.8:8080;
    server  192.168.246.9:8080;
    }
location ~* \.jsp$ {
        proxy_pass  http://tomcat;
        }

7-2 和 7-3 tomcat 搭建

7-2 tomcat 搭建、写入主页面

[root@zzcentos2 local]#cd /usr/local/tomcat/webapps/
[root@zzcentos2 webapps]#ls
docs  examples  host-manager  manager  ROOT
[root@zzcentos2 webapps]#cd /usr/local/tomcat/webapps/ROOT/
[root@zzcentos2 ROOT]#ls
asf-logo-wide.svg  bg-middle.png  bg-upper.png  index.jsp          tomcat.css  tomcat.png        tomcat.svg
bg-button.png      bg-nav.png     favicon.ico   RELEASE-NOTES.txt  tomcat.gif  tomcat-power.gif  WEB-INF
[root@zzcentos2 ROOT]#mv index.jsp index.jsp.bak
[root@zzcentos2 ROOT]#ls
asf-logo-wide.svg  bg-middle.png  bg-upper.png  index.jsp.bak      tomcat.css  tomcat.png        tomcat.svg
bg-button.png      bg-nav.png     favicon.ico   RELEASE-NOTES.txt  tomcat.gif  tomcat-power.gif  WEB-INF
[root@zzcentos2 ROOT]#rz -E
rz waiting to receive.
[root@zzcentos2 ROOT]#ls
asf-logo-wide.svg  bg-nav.png    index.jsp          tomcat.css  tomcat-power.gif
bg-button.png      bg-upper.png  index.jsp.bak      tomcat.gif  tomcat.svg
bg-middle.png      favicon.ico   RELEASE-NOTES.txt  tomcat.png  WEB-INF
[root@zzcentos2 ROOT]#cat index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
 ? <meta charset="UTF-8">
 ? <title>tomcat test</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
[root@zzcentos2 ROOT]#

7-3 tomcat搭建、写入主页面

检测:访问代理服务器192.168.246.7/index.jsp

去访问代理服务器会发现,每次调度到192.168.246.8和192.168.246.9上面,sessionID都会改变,我们要让他保持会话连接(sessionID不会变)

客户端访问代理服务器,第一次访问被调度到tomcat1服务器,由于是第一次访问,客户的cookie缓存中不会有sessionid,服务器会生成sessionid 1给 c1客户,c1客户会把sessionid  记录下来

客户端第二次访问代理服务器,由于调度器的原因,不能保证一直去访问tomcat1,如果被调度到tomcat2, tomcat2服务器是没有sessionid 1, 它会认为我要生成新的sessionid 给c1客户,c1客户会更新自己的sessionid变成sessionid2

1.当客户端去访问代理服务器;代理服务器调度给Tomcat1;如果是第一次访问:客户端cookie里面没有sessionID,Tomcat1服务器就给给客户端生成一个sessionID并且发给客户端;客户端会将sessionID存在cookie中;当客户端第二次去访问Tomcat1时,会带着Tomcat1的sessionID,第二次,Tomcat1就不会给客户端生成新的sessionID

2.由于代理服务器调度的原因;不会每次都调度给Tomcat1;当调度给Tomcat2时;cookie带的是sessionID1;Tomcat2上要用sessionID2,他就会生成一个新的ID给客户端

3.所以,来回调度的时候,每次都是新的sessionID

二、会话绑定

方法一:IP  hash

检测:

缺点:服务器也固定了,服务器也不调度了

方法二:​​​​​​​

Apache Tomcat 9 (9.0.87) - Clustering/Session Replication How-To

把官网中,蓝色页面内容全部复制到主配置文件中 

<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="auto"
                      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>

先把之前的ip hash删掉,不影响后续

tomcat配置 7-2

子配置文件:

tomcat配置 7-3

子配置文件配置:

检测:

不管调度7-2还是7-3,不管调度到那个tomcat服务器,sessionID都保持一致,不变化了

相关推荐

  1. Nginx会话保持

    2024-03-17 05:30:07       31 阅读
  2. 分布式如何保证线程安全

    2024-03-17 05:30:07       28 阅读
  3. 保姆级)离线安装mongoDB

    2024-03-17 05:30:07       18 阅读
  4. 使用 Selenium 保持登录会话信息

    2024-03-17 05:30:07       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 05:30:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 05:30:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 05:30:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 05:30:07       18 阅读

热门阅读

  1. 小程序的写法和vue有啥区别?

    2024-03-17 05:30:07       22 阅读
  2. K8S下微服务平滑发布的一些思考与总结

    2024-03-17 05:30:07       19 阅读
  3. Spring-Kafka笔记整理

    2024-03-17 05:30:07       18 阅读
  4. ZooKeeper

    ZooKeeper

    2024-03-17 05:30:07      16 阅读
  5. Spring Boot集成mapstruct快速入门指南

    2024-03-17 05:30:07       17 阅读
  6. 封装promise请求方式

    2024-03-17 05:30:07       19 阅读
  7. OLLAMA:如何像云端一样运行本地大语言模型

    2024-03-17 05:30:07       20 阅读
  8. alibaba cloud linux 3 安装 psql 16

    2024-03-17 05:30:07       21 阅读
  9. Python强大的库和框架——TensorFlow

    2024-03-17 05:30:07       18 阅读
  10. springBoot整合Redis(四、整合redis 实现分布式锁)

    2024-03-17 05:30:07       19 阅读