session共享问题

亮飞走了 发布于 2013/04/03 14:13
阅读 5K+
收藏 2
我现在有 两台tomcat服务器、nginx,是java web应用,想是采用memcached-session-manager的方式实现session共享,用nginx做负载均衡,两台服务器用ser1、ser2表示,现在是情况是这样:当都请求到ser1时,sessionid都一样,当请求到ser3时sessionid就会重新生成返回给客户端,sessionid就改变了,只要是切换请求的服务器sessionid就会改变。memcached-session-manager的配置按照说明配置好了,没有报错,但session不能共享,原因就是上面描述的啦


能通过nginx的配置解决吗?对nginx不是特别了解。 现在不知道该怎么做了,看来session在集群中还是个祸害啊。
加载中
0
布谷鸟
布谷鸟
把httpsession的实现类重写呗,会话放到cache中,用一个cookie来替换jsessionid,配置啥的我就不懂了
0
hylent
hylent

同一个ip过来的请求为什么要发到两个不同的服务器上呢?

nginx有iphash指令可以做到限制同样的ip所分配的upstream服务器不变

0
逝水fox
逝水fox
多memcached?
0
亮飞走了
亮飞走了
是的   两个memcache
0
亮飞走了
亮飞走了

引用来自“hylent”的答案

同一个ip过来的请求为什么要发到两个不同的服务器上呢?

nginx有iphash指令可以做到限制同样的ip所分配的upstream服务器不变

但如果这台服务器down了呢? 早晚都有这种可能
0
亮飞走了
亮飞走了

引用来自“逝水fox”的答案

多memcached?

我的配置:

 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
            memcachedNodes="n1:127.0.0.1:11211,n2:192.168.xxx.xxx:11211"
            requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"
            sessionBackupAsync="false"
            sessionBackupTimeout="100"
            transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
            copyCollectionsForSerialization="false"
/>

0
亮飞走了
亮飞走了

引用来自“布谷鸟”的答案

把httpsession的实现类重写呗,会话放到cache中,用一个cookie来替换jsessionid,配置啥的我就不懂了
是个好方法啊,可能还会简单写,不用这些第三方的jar和配置了
0
亮飞走了
亮飞走了

引用来自“亮飞走了”的答案

引用来自“逝水fox”的答案

多memcached?

我的配置:

 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
            memcachedNodes="n1:127.0.0.1:11211,n2:192.168.xxx.xxx:11211"
            requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"
            sessionBackupAsync="false"
            sessionBackupTimeout="100"
            transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
            copyCollectionsForSerialization="false"
/>

写错了一点,改成参考官网的了:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
    sticky="false"
    sessionBackupAsync="false"
    lockingMode="uriPattern:/path1|/path2"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
    />

0
dedenj
dedenj
sessionBackupAsync="false"
      sessionBackupTimeout="100",你的cache挂了更惨
0
亮飞走了
亮飞走了

引用来自“dede.g”的答案

sessionBackupAsync="false"
      sessionBackupTimeout="100",你的cache挂了更惨
哦,我参考官网的已经改了,不是这样配置的,我往这上面发错了
返回顶部
顶部