A-A+

LAMT部署jcenter及msm配置

2015年12月25日 站长资讯 暂无评论

1. 需求描述

现在需要配置一个LAMT(Linux+Apache+Mysql+Tomcat)的webapp服务器。
同时由于需要两台Tomcat,需要对会话Session进行处理,故在此采用memcached部署Session集群服务器,实验拓扑如下.

由于条件有限,故可能多个服务可能部署在同一台服务器,敬请谅解。

2. 首先安装Tomcat,并部署一个测试页面

首先安装Java,再安装Tomcat,并导出相应环境变量。

在Tomcat的webapps目录下新建一个test目录,在test目录中分别建立一个index.jsp的文件,内容如下

Lab2

  1. <%@ page language="java" %>  
  2. <html>  
  3.  <head><title>lab2</title></head>  
  4.  <body>  
  5.    <h1><font color="red">lab2.stu21.com</font></h1>  
  6.    <table align="centre" border="1">  
  7.      <tr>  
  8.        <td>Session ID</td>  
  9.    <% session.setAttribute("magedu.com","magedu.com"); %>  
  10.        <td><%= session.getId() %></td>  
  11.      </tr>  
  12.      <tr>  
  13.        <td>Created on</td>  
  14.        <td><%= session.getCreationTime() %></td>  
  15.     </tr>  
  16.    </table>  
  17.  </body>  
  18. </html>  

lab3:

  1. <%@ page language="java" %>  
  2. <html>  
  3.  <head><title>lab3</title></head>  
  4.  <body>  
  5.    <h1><font color="blue">lab3.stu21.com</font></h1>  
  6.    <table align="centre" border="1">  
  7.      <tr>  
  8.        <td>Session ID</td>  
  9.    <% session.setAttribute("magedu.com","magedu.com"); %>  
  10.        <td><%= session.getId() %></td>  
  11.      </tr>  
  12.      <tr>  
  13.        <td>Created on</td>  
  14.        <td><%= session.getCreationTime() %></td>  
  15.     </tr>  
  16.    </table>  
  17.  </body>  
  18. </html>  

此时分别访问lab2和lab3的8080端口,效果如下,并且Session ID一直在变动。

3. msm(memcached-session-manager)配置

1.首先需要将如下jar包放入tomcat安装目录下的lib目录下

  1. javolution-5.5.1.jar  
  2. memcached-session-manager-1.8.2.jar  
  3. memcached-session-manager-tc7-1.8.2.jar(此处的tc7为tomcat版本,要保证于tomcat版本的一致)  
  4. msm-javolution-serializer-1.8.2.jar  
  5. spymemcached-2.10.2.jar  

2.配置tomcat配置文件server.xml,在test的context中加入如下内容

  1. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  2.      memcachedNodes="n1:172.16.21.1:11211" #此处为memcached服务器地址  
  3.      requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" #不为图片等静态内容添加缓存  
  4. transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" />  

3.在memcached服务器安装memcached服务器并启动,接着重启tomcat服务,此时访问tomcat,效果如下

在原来的Session ID后增加了一个”-1”的字符,证明msm配置已经成功。

4. 在httpd上配置负载均衡,配置如下

  1. ProxyVia Off  
  2. ProxyRequests Off  
  3. ProxyPass /jcenter balancer://jcenter/  
  4. ProxyPass /test balancer://test/  
  5. ProxyPassReverse /test balancer://test/  
  6. ProxyPassReverse /jcenter balancer://jcenter/  
  7. <proxy balancer://test>  
  8. BalancerMember ajp://172.16.21.102:8009/test/ loadfactor=10  
  9. BalancerMember ajp://172.16.21.103:8009/test/ loadfactor=10  
  10. </proxy>  
  11. <proxy balancer://jcenter>  
  12. BalancerMember ajp://172.16.21.102:8009/jcenter/ loadfactor=10  
  13. BalancerMember ajp://172.16.21.103:8009/jcenter/ loadfactor=10  
  14. </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下,效果如下:

  1. <Context path="/jcenter" docBase="jcenter" >  
  2. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  3. memcachedNodes="n1:172.16.21.1:11211"  
  4. requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  5. transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" />  
  6. </Context>  

现在我们重启服务器,便可以从172.16.21.1进行访问了.现在无论我们被定向到哪个服务器,都不会存在session丢失,也就不存在登录失效等问题了。

标签:

给我留言