现在需要配置一个LAMT(Linux+Apache+Mysql+Tomcat)的webapp服务器
同时由于需要两台Tomcat,需要对会话Session进行处理,故在此采用memcached部署Session集群服务器,实验拓扑如下.
由于条件有限,故可能多个服务可能部署在同一台服务器,敬请谅解
首先安装Java,再安装Tomcat,并导出相应环境变量
在Tomcat的webapps目录下新建一个test目录,在test目录中分别建立一个index.jsp的文件,内容如下
Lab2
<%@ page language="java" %> <html> <head><title>lab2</title></head> <body> <h1><font color="red">lab2.stu21.com</font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("magedu.com","magedu.com"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html>
lab3:
<%@ page language="java" %> <html> <head><title>lab3</title></head> <body> <h1><font color="blue">lab3.stu21.com</font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("magedu.com","magedu.com"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html>
此时分别访问lab2和lab3的8080端口,效果如下,并且Session ID一直在变动
1.首先需要将如下jar包放入tomcat安装目录下的lib目录下
javolution-5.5.1.jar memcached-session-manager-1.8.2.jar memcached-session-manager-tc7-1.8.2.jar(此处的tc7为tomcat版本,要保证于tomcat版本的一致) msm-javolution-serializer-1.8.2.jar spymemcached-2.10.2.jar
2.配置tomcat配置文件server.xml,在test的context中加入如下内容
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:172.16.21.1:11211" #此处为memcached服务器地址 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" #不为图片等静态内容添加缓存 transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" />
3.在memcached服务器安装memcached服务器并启动,接着重启tomcat服务,此时访问tomcat,效果如下
在原来的Session ID后增加了一个”-1”的字符,证明msm配置已经成功\
ProxyVia Off ProxyRequests Off ProxyPass /jcenter balancer://jcenter/ ProxyPass /test balancer://test/ ProxyPassReverse /test balancer://test/ ProxyPassReverse /jcenter balancer://jcenter/ <proxy balancer://test> BalancerMember ajp://172.16.21.102:8009/test/ loadfactor=10 BalancerMember ajp://172.16.21.103:8009/test/ loadfactor=10 </proxy> <proxy balancer://jcenter> BalancerMember ajp://172.16.21.102:8009/jcenter/ loadfactor=10 BalancerMember ajp://172.16.21.103:8009/jcenter/ loadfactor=10 </proxy>
此时,我们可以通过172.16.21.1来访问后端的tomcat了,并且session不会发生改变,效果如下
每次刷新响应的Tomcat不同,但是Session ID不会改变,此时,我们就可以部署JavaCenter了
访问Lab2,安装Mysql并授权jcenter用户从172.16.21网段及lab.stu21.com,lab3.stu21.com的完全访问jcenter数据库的权限,将安装包解压到webapps目录下,重命名为jcenter,便可以进行访问了,访问172.16.21.102:8080/jcenter/install便可以进行安装,按照提示安装完成.
将jcenter目录通过nfs进行网络共享,允许172.16.21.103进行访问,在lab3上将其挂在到于lab2相同的目录下,此时亦可以进行正常访问,但是要注意数据库的IP,一定要指向172.16.21.2,否则在lab3上可能无法正产访问.
先在我们需要将test下关于msm的配置复制到jcenter下,效果如下
<Context path="/jcenter" docBase="jcenter" > <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:172.16.21.1:11211" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" /> </Context>
现在我们重启服务器,便可以从172.16.21.1进行访问了.现在无论我们被定向到哪个服务器,都不会存在session丢失,也就不存在登录失效等问题了.
原文地址:http://dddbk.blog.51cto.com/6837943/1559204