Tomcat Session集群---会话绑定

实验配置:

7-1安装Nginx

7-2和7-3安装Tomcat

1.配置7-1

1.做负载均衡,反向代理

[root@localhost ~]# vim /etc/nginx/nginx.conf
 17 http {
 18         upstream tomcat {
 19         server 192.168.91.102:8080;
 20         server 192.168.91.103:8080;
 21 }

 50         location ~* \.jsp$ {
 51         proxy_pass http://tomcat;
 52         }

[root@localhost ~]# nginx -t
[root@localhost ~]# nginx -s reload

2.配置7-2和7-3

1.改一下主页面

[root@localhost local]# cd tomcat
[root@localhost tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat]# cd webapps/ROOT
[root@localhost ROOT]# ls
asf-logo-wide.svg  bg-nav.png    index.jsp          tomcat.gif        tomcat.svg
bg-button.png      bg-upper.png  RELEASE-NOTES.txt  tomcat.png        WEB-INF
bg-middle.png      favicon.ico   tomcat.css         tomcat-power.gif
[root@localhost ROOT]# mv index.jsp index.jsp.bak
[root@localhost ROOT]# ls
asf-logo-wide.svg  bg-nav.png    index.jsp.bak     

2.配置安装环境;替换主页面文件

这个脚本会产生sessionid

###每次调度7-2和7-3时,sessionID都会改变

###我们要让他保持会话连接(sessionID不会变)

3.原理

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

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

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

4.会话绑定方法一:IP  hash

1.去配置7-1

2.网页段查看结果

3.缺点:

服务器不会调度了

5.会话绑定方法二

https://tomcat.apache.org/tomcat-9.0-doc/cluster-howto.html

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

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

          <Manager className="org.apache.catalina.ha.session.BackupManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"
                   mapSendOptions="6"/>
          <!--
          <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="5000"
                      selectorTimeout="100"
                      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"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>

          <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>

1.先把ip hash删掉

2.配置7-2和7-3的主配置文件

[root@localhost tomcat]# vim conf/server.xml

 

2.修改7-2和7-3子配置文件

[root@localhost tomcat]# cd webapps/ROOT
[root@localhost 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@localhost ROOT]# cd WEB-INF
[root@localhost WEB-INF]# LS
bash: LS: 未找到命令...
相似命令是: 'ls'
[root@localhost WEB-INF]# ls
web.xml

[root@localhost WEB-INF]# vim web.xml

3.访问浏览器看结果

结果:不管调度7-2还是7-3;sessionID都保持一致

相关推荐

  1. vue数据

    2024-03-15 20:08:02       57 阅读
  2. vuekey

    2024-03-15 20:08:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 20:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 20:08:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 20:08:02       82 阅读
  4. Python语言-面向对象

    2024-03-15 20:08:02       91 阅读

热门阅读

  1. ElementPlus switch组件初始化触发change事件处理

    2024-03-15 20:08:02       36 阅读
  2. maya自动重定向测试

    2024-03-15 20:08:02       48 阅读
  3. 什么是虚假唤醒?为什么会产生虚假唤醒?

    2024-03-15 20:08:02       44 阅读
  4. python 之yaml库使用总结

    2024-03-15 20:08:02       40 阅读
  5. 详细说说JVM的class文件(一)

    2024-03-15 20:08:02       38 阅读
  6. JVM-4

    JVM-4

    2024-03-15 20:08:02      40 阅读
  7. 【测试知识】业务面试问答突击版1

    2024-03-15 20:08:02       35 阅读
  8. nginx应用

    2024-03-15 20:08:02       45 阅读
  9. C++中的C标准库、注释和条件编译

    2024-03-15 20:08:02       44 阅读