您的位置:首页 > 数据库 > Memcache

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

2013-12-18 09:34 786 查看
如何安装的就不介绍了,自己网上搜。

配置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="Catalina" defaultHost="localhost" jvmRoute="tomcat6" > jvmRoute分别修改为对应的名字,比如我的apache-tomcat-6.0.37里的就修改为tomcat6,而apache-tomcat1修改为tomcat61,依次类推。

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

在context.xml内分别增加

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

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

配置完就差不多了。写一个测试项目吧。在\webapps下建一个nginx文件加,里面建一个index.jsp,内容如下:

<%@ page contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*" %>

<html><head><title>Cluster Test</title></head>

<body>

<%
out.write("SESSION-ID:" + session.getId()+");
%>

</body>
</html>

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

这个就不截图了,很简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息