配置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;
- }
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"/>
<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>
<%@ 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共享成功了。