• 实现基于tomcat集群会话保持


    1、实验环境

      我们需要准备两台虚拟机,把这两台虚拟机组成集群,实现会话保持。

    2、配置server1

    2.1 修改nginx配置文件

    [root@server1 ~]# vim /etc/nginx/nginx.conf
    
          upstream tomcat_cluser {
    	        #ip_hash;
    	        server 192.168.37.111:8080 weight=1;
    	        server 192.168.27.122:8080 weight=2;
    	    }
    	    
            location / {
                #index  index.php index.html index.htm;
                proxy_pass http://tomcat_cluser;
            }
    
            location ~* .(jsp|do)$ {
                proxy_pass http://tomcat_cluser;
            }
    

      修改完成之后,重启我们的nginx服务。

    2.2 修改tomcat配置文件

    [root@server1 ~]# vim 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="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.MessageDispatch15Interceptor"/>
    		</Channel>
    		<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="/"/>
    		<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
    		<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
    	</Cluster>
    

    2.3 创建一个session页面

    [root@server1 webapps]# mkdir test
    [root@server1 webapps]# vim test/session.jsp
    	<%@ page language="java" %>
    	<html>
    		<head><title>TomcatA</title></head>
    		<body>
    			<h1><font color="blue">TomcatA</h1>
    			<table align="centre" border="1">
    				<tr>
    					<td>Session ID</td>
    					<% session.setAttribute("abc","abc"); %>
    					<td><%= session.getId() %></td>
    				</tr>
    				<tr>
    					<td>Created on</td>
    					<td><%= session.getCreationTime() %></td>
    				</tr>
    			</table>
    		</body>
    	</html>
    

    2.4 修改web.xml

    [root@server1 webapps]# cd test/
    [root@server1 test]# ls
    session.jsp
    [root@server1 test]# mkdir WEB-INF/
    [root@server1 test]# cp /usr/local/tomcat/conf/web.xml WEB-INF/
    [root@server1 test]# cd WEB-INF/
    [root@server1 WEB-INF]# ls
    web.xml
    [root@server1 WEB-INF]# vim web.xml
    

      在web.xml下 在</web-app>上方加入<distributable/>
      设置一个标签

      修改完成之后,重启我们的tomcat服务:

    [root@server1 WEB-INF]# catalina.sh stop
    [root@server1 WEB-INF]# catalina.sh start
    

      接着,我们就去修改第二台机器。

    三、配置server2

    3.1 修改tomcat配置文件

      本台机器和第一台机器的设置相似,直接把文件拷过来就可以了:

    [root@server1 ~]# scp /usr/local/tomcat/conf/server.xml root@192.168.37.122:~
    root@192.168.37.122's password: 
    server.xml                                                                                         100% 8026     7.8KB/s   00:00    
    [root@server2 conf]# cp ~/server.xml .
    cp: overwrite ‘./server.xml’? yes
    

    3.2 创建一个session页面

    [root@server2 webapps]# mkdir test
    [root@server2 webapps]# vim test/session.jsp
    	<%@ page language="java" %>
    	<html>
    		<head><title>TomcatB</title></head>
    		<body>
    			<h1><font color="blue">TomcatB</h1>
    			<table align="centre" border="1">
    				<tr>
    					<td>Session ID</td>
    					<% session.setAttribute("abc","abc"); %>
    					<td><%= session.getId() %></td>
    				</tr>
    				<tr>
    					<td>Created on</td>
    					<td><%= session.getCreationTime() %></td>
    				</tr>
    			</table>
    		</body>
    	</html>
    

    3.3 修改web.xml

    [root@server2 webapps]# cd test/
    [root@server2 test]# ls
    session.jsp
    [root@server2 test]# mkdir WEB-INF/
    [root@server2 test]# cp /usr/local/tomcat/conf/web.xml WEB-INF/
    [root@server2 test]# cd WEB-INF/
    [root@server2 WEB-INF]# ls
    web.xml
    [root@server2 WEB-INF]# vim web.xml
    

      在web.xml下 在</web-app>上方加入<distributable/>
      设置一个标签

      修改完成之后,重启我们的tomcat服务:

    [root@server2 WEB-INF]# catalina.sh stop
    [root@server2 WEB-INF]# catalina.sh start
    

    四、测试

      我们直接去网页测试我们的会话保持实现没有:


      可以看出,我们的会话保持已经实现。
      实验完成。

  • 相关阅读:
    软件上线标准
    rap使用手册
    微服务
    什么是集合?
    什么是maven?maven中的pom文件是做什么的?
    什么是连接池?
    架构
    什么是反射?
    产品
    描述下fastJSON,jackson等等的技术
  • 原文地址:https://www.cnblogs.com/keerya/p/7899830.html
Copyright © 2020-2023  润新知