这几天 看了点关于Nginx 的文章 准备上手搭建起来, 网上的帖子很多 但是感觉似乎大部分都是拷贝过来,根本都跑步起来。
   经过半天的折腾 总算是摸索出来
  使用nginx 做负载均衡 memcached处理session共享
  环境 windows 7  X64
 java : jdk7  
 nginx : 1.5.0  
http://nginx.org/;
 tomcat :6.37.0 X 3
 memecached :
http://memcached.org/;

  一
    1 JDK的安装不多说
  二 安装tomcat
    如何在一台机器上启动多个TOMCAT :
      修改 conf/server.xml 中的三个配置
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca
这里改成三个不同的端口 如 8005,8006,8007
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_02
这里也是一样 不同的三个 如 8010,8020,8030
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_03
这里也是一样 不同的三个 如 8866,8877,8888
保存之后 分别启动三个TOMCAT 控制台无错误

就开始进行下一步
三 : 安装memcached
http://memcached.org/ 到这里下载
       解压开来  
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_04
打开cmd 进入memcached解压到的路径D:\javaNTM\memcached 输入:
memcached.exe –d install 回车安装windows服务
输入:memcached.exe –p 11211 –d start 回车启动memcached服务 -p 表示端口

四:安装Nginx
 下载解压
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_05
 打开CMD 进入 D:\javaNTM\nginx-1.5.10
输入 : start nginx
输入nginx -t  
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_06
这样就表示启动成功

如果启动失败 请修改
conf/nginx.conf 中的
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_07
修改默认的值为utf-8 去掉注释
五:nginx 反向代理
       修改 conf/nginx.conf 文件

在server{
   localhost / {
.....
}
}添加如下代码
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_08
 proxy_pass   http://localhost;
 proxy_redirect    off;
 proxy_set_header   Host $host;
 proxy_set_header   X-Real-IP $remote_addr;
 proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
 client_max_body_size   10m;
 client_body_buffer_size   128k;
 proxy_connect_timeout   90;
 proxy_send_timeout   90;
 proxy_read_timeout   90;
 proxy_buffer_size   4k;
 proxy_buffers   4 32k;
 proxy_busy_buffers_size   64k;
 proxy_temp_file_write_size  64k;
在server 之前添加如下代码
   注入 端口号要和自己的tomcat一致
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_09
upstream localhost {
       server    localhost:8080;
       server    localhost:8010;
       server    localhost:8020;
   }
六:session的共享
下载如下jar包 (就是这些个jar折腾的够呛)

nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_10

JAR 包我已经找好了 在  百度网盘 http://pan.baidu.com/s/1i3DS89B

全部拷贝进TOMCAT/lib中 三个都要哦
然后修改 conf/context.xml
   添加如下代码:
   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   sticky="false"
   memcachedNodes="n1:localhost:11211"
   failoverNodes=""
           lockingMode="all"
   requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico)$"
   sessionBackupAsync="false"
   sessionBackupTimeout="100"
           transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"    
   />

nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_11
因为支持memcached分布式  如果有多台memcached 在 memcachedNodes="nx:IP:port" 即可
注意:这里的端口号要和启动的设置的端口一致
打开cmd 进入nginx 的解压目录 输入 nginx -s -stop ()
       输入 nginx start 重新启动nginx
依次启动三台tomcat

  在TOMCAT \webapps\ROOT 下新增一张页面 demo.jsp

<%@ page contentType="text/html; charset=UTF-8" %>  
<%@ page import="java.util.*" %>  
<html><head><title>Cluster Test</title></head>  
<body>  
<%  
 //HttpSession session = request.getSession(true);  
 System.out.println(session.getId());  
 out.println("<br> SESSION ID:" + session.getId()+"<br>");    
 // 如果有新的请求,则添加session属性  
 String name = request.getParameter("name");  
 if (name != null && name.length() > 0) {  
    String value = request.getParameter("value");  
    session.setAttribute(name, value);  
 }    
   out.print("<b>Session List:</b>");    
   Enumeration<String> names = session.getAttributeNames();  
   while (names.hasMoreElements()) {  
       String sname = names.nextElement();    
       String value = session.getAttribute(sname).toString();  
       out.println( sname + " = " + value+"<br>");  
       System.out.println( sname + " = " + value);  
  }  
%>  
jvm1
</body>  
</html>
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_12
JVM 分别是 1 2 3 分别放进 t1 t2 t3 中 然后打开浏览器

http://localhost/demo.jsp ;
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_13
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_14
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_15

控制台
nginx+tomcat+memcached 集群环境搭建 _nginx java 集群 memeca_16
nginx + tomcat + memcached 环境就搭建好了