ll234012526 发表于 2015-11-18 13:48:18

nginx+memcached+tomcat实现负载均衡和session共享

  如何安装的就不介绍了,自己网上搜。
  


  配置nginx。这个是接着上一篇cas单点登录上配置的。
  upstream 127.0.0.1 {
server 127.0.0.1:18080 weight=2;
server 127.0.0.1:28080 weight=2;
server 127.0.0.1:8080 weight=3;
}

weight是权值,数值越大,表示被访问的机会越大。
  


  分别修改apache-tomcat-6.0.37\conf和apache-tomcat1\conf和apache-tomcat2\conf下的context.xml和server.xml文件,在server.xml内添加:
  <Engine name=&quot;Catalina&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;tomcat6&quot; > jvmRoute分别修改为对应的名字,比如我的apache-tomcat-6.0.37里的就修改为tomcat6,而apache-tomcat1修改为tomcat61,依次类推。


  


  设置jvmRoute的目的是为了区分session是来自那台容器。
  


  在context.xml内分别增加
  


  <Manager className=&quot;de.javakaffee.web.msm.MemcachedBackupSessionManager&quot;
memcachedNodes=&quot;n1:localhost:11211&quot;
requestUriIgnorePattern=&quot;.*/.(png|gif|jpg|css|js)$&quot;
sessionBackupAsync=&quot;false&quot;
sessionBackupTimeout=&quot;100&quot;
transcoderFactoryClass=&quot;de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory&quot;
copyCollectionsForSerialization=&quot;false&quot;/>

记得三个tomcat内都要增加,这个是把tomcat的session交给memcached管理。从这里可以看到依赖jar包。jar我上传上去了,下载后放到tomcat的lib内。这里下载
  


  配置完就差不多了。写一个测试项目吧。在\webapps下建一个nginx文件加,里面建一个index.jsp,内容如下:
  <%@ page contentType=&quot;text/html; charset=GBK&quot; %>
<%@ page import=&quot;java.util.*&quot; %>
<html><head><title>Cluster Test</title></head>
<body>
<%
out.write(&quot;SESSION-ID:&quot; + session.getId()+&quot;);
%>
</body>
</html>




  启动nginx和memcached,然后启动三个tomcat,访问http://127.0.0.1/nginx/index.jsp,不断刷新页面,是不是看到sessionid在不断变化,说明说明问题呢?负载均衡和session共享成功了。
  


  这个就不截图了,很简单。
  



版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: nginx+memcached+tomcat实现负载均衡和session共享