文章目录
- 使用场景: 用web服务器代理后台多个tomcat, 做负载均衡,有用户重复登录的问他,原因在于session 没有共享
1, 配置tomcat session nonsticky
配置参考:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
- 添加jar包: memcached-session-manager (两个: 一个基本模板包,一个tomcat版本包 )
- 添加jar包: spymemcached包 或 jedis包 (取决于:使用哪种缓存数据库)
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://:abcdef@192.168.56.117:6379,redis://:123456@192.168.56.117:6380"
failoverNodes="redis://:123456@192.168.56.117: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, 刷新页面看是否正常显示(如果一切照常,不弹出登录页面就说明配置是成功的)