liyeho 发表于 2015-11-18 14:39:20

tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡

  经过从网上查找资料以及参考了几篇文章,总算自己摸索下来了如何进行一系列配置。
  首先:配置tomcat集群 nginx+ tomcat7
  1 安装jdk (可以选择6或者7都可以) 此处不用多说。
  2 下载nginx-1.2.5 (下载附件)
  3 下载 memcached(下载附件)
  4

(注意:nginx负载均衡不会有太大问题,但是,在用memcached配置session共享的时候,tomcat的版本可能成为关系到成败的关键,

目前选用的是tomcat apache-tomcat-7.0.12 版本



5、首先用nginx来搭建三台tomcat服务器的负载均衡环境,如何在一台机器启动三个tomcat请参照我的另外一篇文章

  我的tomcat的端口分别是8181,8282,8383

  解压下载的nginx压缩包,我的路径是D:\tomcat7collection\myserver;

  在D:\tomcat7collection\myserver\nginx-1.2.6\conf 下找到 nginx.conf,该文件为nginx的请求分发配置文件,打开nginx.conf做如下修改:

   (1)在http {…} - server{…} - location / {…}中加入一行:“proxy_passhttp://127.0.0.1;”

    修改后如下:   

location / {
root   html;
indexindex.html index.htm;
proxy_pass    http://127.0.0.1;
}       (2)

在http {…}中加入以下代码:

?

#设定负载均衡的服务器列表


upstream 127.0.0.1 {#weigth参数表示权值,权值越高被分配到的几率越大
server 127.0.0.1:8181 weight=1;
server 127.0.0.1:8282 weight=2;
server 127.0.0.1:8383 weight=3;
}


可以进行请求分发的简单测试,

  启动nginx,打开cmd,进入到 D:\tomcat7collection\myserver\nginx-1.2.6\ 路径下 输入nginx 敲回车,调度处任务管理器看到进程里面有nginx则表示启动成功

  启动三台tomcat

  用eclipse新建一个web项目cluster,该项目下新建一个cluster.jsp文件,编辑该文件内容如下:



<%@ page contentType=&quot;text/html; charset=UTF-8&quot; %>
<%@ page import=&quot;java.util.*&quot; %>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println(&quot;<br> SESSION ID:&quot; + session.getId()+&quot;<br>&quot;);   
// 如果有新的请求,则添加session属性
String name = request.getParameter(&quot;name&quot;);
if (name != null && name.length() > 0) {
String value = request.getParameter(&quot;value&quot;);
session.setAttribute(name, value);
}   
out.print(&quot;<b>Session List:</b>&quot;);   
Enumeration<String> names = session.getAttributeNames();
while (names.hasMoreElements()) {
String sname = names.nextElement();
String value = session.getAttribute(sname).toString();
out.println( sname + &quot; = &quot; + value+&quot;<br>&quot;);
System.out.println( sname + &quot; = &quot; + value);
}
%>
</body>
</html>

修改tomcat\conf\server.xml

?

<Engine name=&quot;Catalina&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;tomcat7-1&quot;>


    对应的另外两台tomcat分别是 tomcat7-2 tomcat7-3

?


  将cluster项目打包成war包分别放到每个tomcat的webapps下

  在浏览器中输入localhost:8080/cluster/cluster.jsp 重复刷新可以看到输出的session值在变化说明分发处理成功


  6 配置session 共享
  将上面下载好的memcached的压缩包解压到 D:\tomcat7collection\memcached
  使用的是memcached-session-manager-tc7-1.6.3 来进行,使用到的jar包如下:
http://blog.iyunv.com/liuzhigang1237/article/details/


  jar包下载地址

下载如下jar包,点击下载spymemcached-2.7.3.jar

其他jar包可以从如下链接找到:http://code.google.com/p/memcached-session-manager/downloads/list
  如果大家懒得挨个去下,我提供了自己下载整理好的下载
tomcate session 共享所需jar包下载
  


  

好了,把上述jar包放到tomcat/lib 目录下,修改每个tomcat的配置文件tomcat\conf\context.xml

  在<context>...</context>标签之间加入如下代码:

?
<Manager
className=&quot;de.javakaffee.web.msm.MemcachedBackupSessionManager&quot;
memcachedNodes=&quot;n1:127.0.0.1:11211&quot;
sticky=&quot;false&quot;
sessionBackupAsync=&quot;false&quot;
lockingMode=&quot;uriPattern:/path1|/path2&quot;
requestUriIgnorePattern=&quot;.*\.(ico|png|gif|jpg|css|js)$&quot;
transcoderFactoryClass=&quot;de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory&quot;/>




关闭所有tomcat,打开cmd 进入memcached解压到的路径D:\tomcat7collection\memcached 输入:memcached.exe –d install 回车安装windows服务

输入:memcached.exe –p 11211 –d start 回车启动memcached服务,启动三个tomcat

在浏览器中输入localhost:8080/cluster/cluster.jsp重复刷新发现session的值不变如下所示,session共享成功

SESSION ID:76AC7C56C4B278ADFDEC6EA782192D15-n1.tomcat7-1


  


  



版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡