Tomcat+memcached+Nginx实现session共享
2013-10-10 10:27
579 查看
Tomcat+memcached+Nginx实现session共享 |
MSM(memcached-session-manager)支持tomcat6和tomcat7,利用Value(Tomcat阀)对Request进行跟踪。Request请求到来时,从memcached加载session,Request请求结束时,将tomcat session更新至memcached,以达到session共享之目的,支持sticky和non-sticky模式。 Sticky 模式:tomcat session 为主session,memcached 为备session。Request请求到来时,从memcached加载备session 到tomcat (仅当tomcat jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。Non-Sticky模式:tomcat session为中转session,memcached1为主sessionmemcached 2 为备session。Request请求到来时,从memcached 2加载备session 到tomcat,(当容器中还是没有session 则从memcached1加载主session 到tomcat,这种情况是只有一个memcached节点,或者有memcached1出错时),Request请求结束时,将tomcat session更新至主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的。 |
tc6和tc7分别对应tomcat6和tomcat7,若需添加一个jar便可。 必须jar:memcached-session-manager-${version}.jar memcached-session-manager-tc6-${version}.jar memcached-session-manager-tc7-${version}.jarspymemcached-2.7.3.jar根据序列化选择jar:kryo效率在高可用时效率最高,但并发量不大时比较一般。 kryo-serializer: msm-kryo-serializer, kryo-serializers, kryo, minlog, reflectasm, asm-3.2 javolution-serializer: msm-javolution-serializer, javolution-5.4.3.1 xstream-serializer: msm-xstream-serializer, xstream, xmlpull, xpp3_min flexjson-serializer: msm-flexjson-serializer, flexjson |
1.sticky 2.non-sticky |
配置内容及官方截图如下: sticky:#nano /usr/local/tomcatA/conf/context.xml 在< Context>< /Context>中加入以下内容<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.1.123:11211,n2:192.168.1.129:11211" failoverNodes="n1" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/> non-sticky<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:192.168.1.146:11211,n2:192.168.1.1145:11211,n3:192.168.1.146:11212" sticky="false" sessionBackupAsync="false" lockingMode="uriPattern:/path1|/path2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>官方截图: |
t1(m1): 192.168.1.145 t2(m2):192.168.1.146 t1配置n1:192.168.1.145:11211 n2:192.168.1.146:11211 t2配置n1:192.168.1.146:11211 n2:192.168.1.145:11211 <t1><t2> . \ / . . X . . / \ . <m1><m2>sticky:采用Sticky配置时,tomcat默认维持向n2的session访问(建议不要把n2放在本机上,以防t1的机子宕机时tomcat等全部被关闭),当n2宕掉时,会转而访问n1的session。 non-sticky:采用Non-sticky时,tomcat会分发请求,并不维持对同一个tomcat的访问,而是通过轮询的方式随机访问。即tomcat随机对n1、n2的访问,建议搭载成三个memcached,三台机的session互为备份,当其中一个memcached失效时一台转为主要memcached,另外一台依旧可以备份。 |
n1:192.168.1.146:11211,n2:192.168.1.145:11211,n3:192.168.1.146:11212输入内容:save.jsp<body><FORM METHOD=POST ACTION="index.jsp">What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><P><INPUT TYPE=SUBMIT></FORM> </body>获得sessionid:index.jsp <body> <% String name = request.getParameter( "username" ); session.setAttribute( "theName", name ); %> This is my JSP page. <br> <%=session.getId()%> <A HREF="next.jsp">Continue</A> </body>得到sessionid及session值: next.jsp<body> <%=session.getId()%><br> Hello, <%= session.getAttribute("theName")%> </body>查看memcached是否启动。#ps –A|grep memcached Memcached未宕机时: 可知145访问的是n2的session,宕掉145的memcached,再次访问next.jsp,访问结果如下: 如上图所示,宕掉n2后,转而访问n3的session,得到session值依旧是123,再次宕掉n3,访问截图如下: 宕掉n1: 至此,所以session均被清空,重启三台memcached后,session值为null。 |
要求web项目需要序列化,否则,类似于后台登陆系统会报未必序列化错误。 |
剩余步骤中,只需实现nginx+tomcat的负载均衡和动静分离便可,详细请打开,此处不做详细实现。 \hdmusic\trunk\docs\系统部署\Nginx\Nginx+Tomcat实现负载均衡动静分离.doc |
配置内容及相关命令在表格 |
相关文章推荐
- Nginx +Tomcat 集群+memcached 实现负载均衡和session共享[理论篇]
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- 详解之:linux下tomcat、nginx的负载均衡及memcached对session共享的实现
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
- nginx+tomcat+memcached实现session共享
- tomcat8、nginx1.8、memcached1.4.20实现集群和session共享
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- nginx+tomcat+memcached实现session共享
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- Nginx +Tomcat 集群+memcached 实现负载均衡和session共享[实践篇Windows]
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- nginx+memcached+tomcat实现负载均衡和session共享
- NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享
- linux下nginx+tomcat+msm+memcached实现session共享(测试)
- 详解之:linux下tomcat、nginx的负载均衡及memcached对session共享的实现配置详细总结
- nginx+memcached+tomcat实现负载均衡和session共享