首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

基于nginx的tomcat负载均衡跟集群(超简单)

2012-10-06 
基于nginx的tomcat负载均衡和集群(超简单)?今天看到基于apache的tomcat负载均衡和集群配置这篇文章成为j

基于nginx的tomcat负载均衡和集群(超简单)

?

今天看到"基于apache的tomcat负载均衡和集群配置"这篇文章成为javaEye热点。

略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法。

?

要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了。

?

你可以自己写tomcat的扩展来保存SESSION到memcached。

这里推荐使用memcached-session-manager这个开源项目(http://code.google.com/p/memcached-session-manager/),下面简称msm。


如何安装nginx、memcached、tomcat这些就不多说了。


先说明一下测试环境:

tomcat1、nginx、memcached安装在192.168.1.11

tomcat2安装在192.168.1.101


下面分步实现基于nginx的tomcat负载均衡和集群配置

?

一,tomcat集群

??? 1,先下载msm及其依赖包

??? http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar

?

??? http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar

?

http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar

?

http://spymemcached.googlecode.com/files/memcached-2.4.2.jar


http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar

?

2,将这5个包放到$TOMCAT_HOME/lib目录下


3,修改$TOMCAT_HOME/conf/server.xml

?

    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>set page</title>
</head>
<body>

<br/>

<%
session.setAttribute("id", request.getParameter("id"));
%>

<%
System.out.println("set id to " + request.getParameter("id"));
%>

set id to <%=request.getParameter("id")%>

</body>
</html>


get.jsp
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>get page</title>
</head>
<body>
get id is
<%=session.getAttribute("id")%>
<%
System.out.println(session.getAttribute("id"));
%>
</body>
</html>


先对一个tomcat打开set.jsp页面,跟上参数id=1 ,即 http://.../set.jsp?id=1
然后分别打开两个tomcat的get.jsp页面,即 http://.../get.jsp
可以看到session中的值是一样的

接着再对一个tomcat打开set.jsp页面,跟上参数id=2 ,即 http://.../set.jsp?id=2
然后分别打开两个tomcat的get.jsp页面,即 http://.../get.jsp
可以发现一个输出的是1,一个输出的是2

请问这种情况如何解决?    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>set page</title>
</head>
<body>

<br/>

<%
session.setAttribute("id", request.getParameter("id"));
%>

<%
System.out.println("set id to " + request.getParameter("id"));
%>

set id to <%=request.getParameter("id")%>

</body>
</html>


get.jsp
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>get page</title>
</head>
<body>
get id is
<%=session.getAttribute("id")%>
<%
System.out.println(session.getAttribute("id"));
%>
</body>
</html>


先对一个tomcat打开set.jsp页面,跟上参数id=1 ,即 http://.../set.jsp?id=1
然后分别打开两个tomcat的get.jsp页面,即 http://.../get.jsp
可以看到session中的值是一样的

接着再对一个tomcat打开set.jsp页面,跟上参数id=2 ,即 http://.../set.jsp?id=2
然后分别打开两个tomcat的get.jsp页面,即 http://.../get.jsp
可以发现一个输出的是1,一个输出的是2

请问这种情况如何解决?

大哥 看看主题 你这完全违背了楼主的意思 都用memcached缓存了 都是在它上面取 怎么就不一致了 27 楼 dongcb678 2012-05-14   楼主在吗?请教个问题,今天没事测试了一下,遇到了和25楼同样的问题,session不能及时共享,要重启tomcat才行。望解答...

cheng888qi 写道我用lz方法在tomcat-6、nginx-0.8.51
memcache-session-manager用的lz给出的jar包,测试session不能及时共享,tomcat重启时才行。
请问下lz配置成功的环境是什么?是否是tomcat6?

热点排行