大型网站的集群部署(非session复制方式)

网站的集群部署动态部分可以采用tomcat的session复制功能,事实表明,在并发量达到一定数量级的情况下,用session复制功能会引起性能问题,这几天研究了下MSM的一个开源项目,本部署方式也基与此,主要解决:

 

  1. tomcat的单点故障问题;
  2. tomcat集群;
  3. nginx负责均衡,采用默认IP分发方式;
  4. 一个简单的web程序测试
测试环境:Linux CentOS版

步骤如下:

  1. 安装nginx;
  2. 在Linux的/usr/local下放置两个tomcat6,并修改相应的端口;
  3. 在Linux上安装MemCached最新版,启动memcached;
  4. 一个最简单的登录程序部署到tomcat6上,模拟登录;
  5. 修改Tomcat的server.xml,如下(其中memLogin为工程名):
Xml代码 复制代码  收藏代码
  1. <Context path="/memLogin" docBase="memLogin" reloadable="true" source="org.eclipse.jst.jee.server:memLogin">  
  2.  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  3.     memcachedNodes="n1:192.168.1.6:11211"  
  4.     sticky="false"  
  5.     lockingMode="auto"  
  6.     requestUriIgnorePattern=".*\.(swf|ico|png|gif|jpg|css|js)$"  
  7.     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  
  8.     />  
  9. </Context>   
<Context path="/memLogin" docBase="memLogin" reloadable="true" source="org.eclipse.jst.jee.server:memLogin">
 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.1.6:11211"
    sticky="false"
    lockingMode="auto"
    requestUriIgnorePattern=".*\.(swf|ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context> 
 
测试过程(修改hosts文件,将www.test.com到192.168.1.6):

输入:http://www.test.com/memLogin,如下图:


大型网站的集群部署(非session复制方式)_第1张图片
 登录后:



 
可以发现,目前用的是tomcat1,现在在Linux上关闭tomcat1,通过负载均衡让其使用tomcat2,看session是否能保持,关闭后,在当前页面刷新,如下图:


 可以看到,现在已经使用tomcat2了,但session仍然保持着。

以上的部署过程基于nginx+tomcat6!

你可能感兴趣的:(session)