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

目录

一、 负载均衡、反向代理

二、会话绑定

方法一:IP  hash

方法二:

tomcat配置 7-2

tomcat配置 7-3


一、 负载均衡、反向代理

环境搭建:  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

第一次访问到tomcat1不知道id,随机分发的一个为sid1
第三次,用户带着sid2来访问代理服务器但是,tomcat1不知道sid2,所以他又重新分发sid
第二次访问时带着sid1来访问,但是代理服务器随机分发到了tomcat2此时,tomcat2不知道sid1,所以他又重新分发sid2

二、会话绑定

方法一: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都保持一致,不变化了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值