bing0726 发表于 2015-12-2 18:16:25

nginx+tomcat+memcached 共享session问题,跪求各位大神显圣。

我们的环境是nginx+2台tomcat实现负载,memcached实现session同步。我的tomcat,context.xml配置文件如下。

tomcat1的context.xml配置

    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:10.12.13.202:11211,n2:10.12.13.203:11211"
    failoverNodes="n1"
    lockingMode="all"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    sessionBackupAsync="false"
    sessionBackupTimeout="100"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    copyCollectionsForSerialization="false"
    />

tomat2的context.xml配置

    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:10.12.13.202:11211,n2:10.12.13.203:11211"
    failoverNodes="n2"
    lockingMode="all"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    sessionBackupAsync="false"
    sessionBackupTimeout="100"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    copyCollectionsForSerialization="false"
    />
使用jsp网上写的jsp测试

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println (request.getLocalAddr() + " : " + request.getLocalPort ()+"<br>");%>
<%
out.println ("<br> ID " + session.getId ()+"<br>");
String dataName = request.getParameter ("dataName");
if(dataName != null && dataName.length () > 0) {
String dataValue = request.getParameter ("dataValue");
session.setAttribute (dataName, dataValue);
}
out.print ("<b>Session list</b>");
Enumeration e = session.getAttributeNames ();
while(e.hasMoreElements ()) {
String name =(String)e.nextElement ();
String value = session.getAttribute (name).toString ();
out.println ( name + " = " + value+"<br>");
System.out.println ( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
The time on desktop 20 is:<%= new java.util.Date() %>
测试是正常,session不变

但是正常程序测试的时候报如下错

十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.RequestTrackingHostValve invoke
详细: >>>>>> Request starting: POST /gazelle/common/getToken (requestedSessionId 245c55e4-d946-4ac7-ac98-0c93f46d99d7) ==================
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.SessionIdFormat createSessionId
详细: Creating new session id with orig id 'ping' and memcached id 'd946-4ac7-ac98-0c93f46d99d7'.
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.NodeAvailabilityCache updateIsNodeAvailable
详细: CacheLoader returned node availability 'false' for node 'd946-4ac7-ac98-0c93f46d99d7'.
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.MemcachedNodesManager canHitMemcached
详细: The node d946-4ac7-ac98-0c93f46d99d7 is not available, therefore 245c55e4-d946-4ac7-ac98-0c93f46d99d7 cannot be loaded from this memcached.
十二月 02, 2015 5:41:57 下午 org.apache.shiro.session.mgt.AbstractValidatingSessionManager enableSessionValidation
信息: Enabling session validation scheduler...
十二月 02, 2015 5:41:57 下午 de.javakaffee.web.msm.MemcachedSessionService backupSession
详细: No session found in session map for 946a7c99-da61-42a3-b619-fa64129b26d3

23rwd 发表于 2015-12-9 09:26:10

http://www.iyunv.com/thread-148336-1-1.html 参考这个检查一下
页: [1]
查看完整版本: nginx+tomcat+memcached 共享session问题,跪求各位大神显圣。