Tomcat集群 session共享

  • 使用场景: 用web服务器代理后台多个tomcat, 做负载均衡,有用户重复登录的问他,原因在于session 没有共享

1, 配置tomcat session nonsticky

配置参考:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

1.1 配置tomcat: conf/context.xml


[root@c7-docker conf]# cat context.xml
<?xml version="1.0" encoding="UTF-8"?>
    <!--
	    <Manager pathname="" />	
	    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
	       memcachedNodes="redis://:[email protected]:6379,redis://:[email protected]:6380"
	       failoverNodes="redis://:[email protected]:6380"
	       requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" />
	    
	     <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
	        memcachedNodes="n1:localhost:11211,n2:localhost:11212"
	        failoverNodes="n1"
	        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  />	   
    -->
     <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
	    memcachedNodes="n1:localhost:11211,n2:localhost:11212"
	    sticky="false"
	    sessionBackupAsync="false"
	    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" />         
</Context>


[root@c7-docker conf]# ls ../lib/|egrep 'mem|jedi'
jedis-3.0.0.jar
memcached-session-manager-2.3.2.jar
memcached-session-manager-tc8-2.3.2.jar
spymemcached-2.12.3.jar

2, 测试用户登录

2.1 自带的servlets样例测试

http://192.168.56.117:8090/examples/servlets/servlet/SessionExample
查看session信息是否一致( id, 创建时间)
在这里插入图片描述

2.2 自带的manager登录页面测试

配置tomcat用户和权限,来访问manager页面,参考:https://blog.csdn.net/eyeofeagle/article/details/105864895
在这里插入图片描述
httpd 代理 tomcat集群:https://blog.csdn.net/eyeofeagle/article/details/114259928

[root@c7-docker ~]# cat /etc/httpd/conf.d/a.conf
Listen 83
<proxy balancer://ajp_tom_cluster>
  BalancerMember ajp://192.168.56.117:8010   loadfactor=10
  BalancerMember ajp://192.168.56.6:8009 	 loadfactor=10
</proxy>
<VirtualHost *:83>
  ProxyRequests Off
  ErrorLog "logs/83-error_log"
  CustomLog "logs/83-access_log" common
  ProxyPass 	   / balancer://ajp_tom_cluster/
  ProxyPassReverse / balancer://ajp_tom_cluster/
  Header set Access-Control-Allow-Origin *
</VirtualHost>

测试过程:

  • 第一:先启动一个TomcatA, 测试正常登录并显示出状态信息
  • 第二:停止TomcatA, 启动TomcatB, 刷新页面看是否正常显示(如果一切照常,不弹出登录页面就说明配置是成功的)
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/eyeofeagle/article/details/114300237