开发者社区> 问答> 正文

tomcat+memcached在阿里云ECS上实现session共享不成功

防腐基 2018-07-22 21:23:55 789

首先,配置是在本地经过验证的,可以实现共享。
1、两个tomcat配置都检查了两遍是OK的,启动之后访问页面登录之后也能有session进入到memcached中,说明tomcat和memcached服务器的连接是OK的;
2、使用MSM管理session的那段配置,确定是no-skity的,也查过资料和官网配置,本身配置其实不多,直接照搬来改的,也是OK的。
但是,其中一台tomcat登录后,另一台怎么刷新也还是在登录页,直接访问主页也会被拦截器拦截下来,说明没有session不让登入,观察memcached服务器里面,发现有第一台的session;然后第二台我直接手动登录后,发现memcached又有了第二个session。

反正就是这俩tomcat根本没有共享session,memcached也有值,不知道还有哪里有问题。

第二次测试,我用一个小的test工程打包,里面就只有一个jsp页面来获取session,部署到服务器上去测试了一下,发现只要一刷新,memcached服务器里面就会多一个session值,而且每次刷新都是新的session装入memcached。

日了狗了啊,配置确定没问题,就是导入jar包和修改context.xml,版本也检查过了是正确的。o(╥﹏╥)o

接下来是第三次测试,我直接把项目打包部署在本地自己电脑的两个不同端口的tomcat上,启动后访问,发现竟然可以实现session共享?!连接的memcached服务器依旧是阿里云的,观察session没问题,session共享是OK的!

但是我把项目部署到阿里云的两台机器的tomcat上之后,访问之后发现就不行了,一台登录的时候往memcached塞入了session,但是另一台刷新还是拿不到session,打印出来session值是空的!!

这到底是为什么呢?本地不同端口的两个tomcat就可以session共享,但是搬到阿里云上面就不行了,端口确定都打开了,因为不打开的话根本不能往memcached里面set进值。
那到底还有什么原因呢?难道是阿里云还有啥限制?和本地测试唯一的区别就是,本地是不同端口的两个tomcat测试的,阿里云上的两台是不同的服务器,tomcat的ip和端口都不同,可问题是他们都是互通的啊,Telnet了memcached服务器也都是通的。
郁闷死了!
求大佬给点思路啊!

弹性计算 Java 应用服务中间件 Memcache
分享到
取消 提交回答
全部回答(1)
  • 小毛鹿
    2019-07-17 22:48:20

    是不是延迟了, 多刷新几次呢,不行重启一下

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题