LAMT部署jcenter及msm配置
1. 需求描述
现在需要配置一个LAMT(Linux+Apache+Mysql+Tomcat)的webapp服务器。
同时由于需要两台Tomcat,需要对会话Session进行处理,故在此采用memcached部署Session集群服务器,实验拓扑如下.
由于条件有限,故可能多个服务可能部署在同一台服务器,敬请谅解。
2. 首先安装Tomcat,并部署一个测试页面
首先安装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一直在变动。
3. msm(memcached-session-manager)配置
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配置已经成功。
4. 在httpd上配置负载均衡,配置如下
- 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了。
5. JavaCenter部署
访问Lab2,安装Mysql并授权jcenter用户从172.16.21网段及lab.stu21.com,lab3.stu21.com的完全访问jcenter数据库的权限,将安装包解压到webapps目录下,重命名为jcenter,便可以进行访问了,访问172.16.21.102:8080/jcenter/install便可以进行安装,按照提示安装完成。 http://www.xiaoxiongboke.com/
将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丢失,也就不存在登录失效等问题了。