Tomcat中session复制技术

一、准备三台机器
主机的服务都正常,nginx与Tomcat构建负载均衡

主机名     IP地址

nginx       192.168.200.111

Tomcat1  192.168.200.112

Tomcat2  192.168.200.113

准备hosts文件,并修改主机名为nginx 、tomcat1 、tomcat2

[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.111 nginx
192.168.200.112 tomcat1
192.168.200.113 tomcat2
[root@localhost ~]# hostname nginx
[root@localhost ~]# bash
[root@nginx ~]# 

使用scp将/etc/hosts文件传到其它两台上

[root@nginx ~]# scp /etc/hosts 192.168.200.112:/etc/hosts
hosts        hosts.allow  hosts.deny   
[root@nginx ~]# scp /etc/hosts 192.168.200.112:/etc/hosts
The authenticity of host '192.168.200.112 (192.168.200.112)' can't be established.
ECDSA key fingerprint is a1:3a:d3:5a:d8:dc:83:73:ee:be:5c:83:73:47:c3:db.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.200.112' (ECDSA) to the list of known hosts.
root@192.168.200.112's password: 
hosts    
————————————————————————
[root@nginx ~]# scp /etc/hosts 192.168.200.113:/etc/hosts
The authenticity of host '192.168.200.113 (192.168.200.113)' can't be established.
ECDSA key fingerprint is d2:9d:0f:d3:4f:8b:35:f7:9d:e4:7c:9b:96:04:bc:25.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.200.113' (ECDSA) to the list of known hosts.
root@192.168.200.113's password: 
hosts   
_________________________________________________________________________
修改主机名
[root@localhost ~]# hostname tomcat1
[root@localhost ~]# bash
[root@localhost ~]# hostname tomcat2
[root@localhost ~]# bash

二、修改Tomcat配置文件开启session复制功能

[root@tomcat2 ~]# vim /usr/local/tomcat/conf/server.xml 
 "Catalina" defaultHost="localhost" jvmRoute="tomcat2">   #另一台改为Tomcat1
      "org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
————————————————————————————————————————
[root@tomcat2 ~]# vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml 

三、准备测试文件,重启服务测试

[root@tomcat1 ~]# vim /usr/local/tomcat/webapps/ROOT/session.jsp
Session ID:<%= session.getId() %>
SessionPort:<%= request.getServerPort() %> <% out.println("This tomcat server 192.168.200.112");%> ———————————————————————————————————————————— [root@tomcat2 ~]# vim /usr/local/tomcat/webapps/ROOT/session.jsp Session ID:<%= session.getId() %>
SessionPort:<%= request.getServerPort() %> <% out.println("This tomcat server 192.168.200.113");%>
[root@tomcat2 ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@tomcat2 ~]# /usr/local/tomcat/bin/startup.sh 

测试结果
Tomcat中session复制技术_第1张图片
Tomcat中session复制技术_第2张图片

四、补充Tomcat官方session复制方式
注:其它更改还需要设置,与上边一样
别忘了加 jvmRoute=“tomcat2”

[root@tomcat2 ~]# vim /usr/local/tomcat/conf/server.xml 

"org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">
          "org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>
          "org.apache.catalina.tribes.group.GroupChannel">
            "org.apache.catalina.tribes.membership.McastService"
                        address="228.25.25.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            "org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.200.112"       #另一台将地址改为113
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>
            "org.apache.catalina.tribes.transport.ReplicationTransmitter">
              "org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            
            "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          
          "org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          "org.apache.catalina.ha.session.JvmRouteBinderValve"/>
          "org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>
          "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          "org.apache.catalina.ha.session.ClusterSessionListener"/>
                                                                                           

测试结果
Tomcat中session复制技术_第3张图片
Tomcat中session复制技术_第4张图片

你可能感兴趣的:(Tomcat中session复制技术)