window7环境下配置nginx+tomcat+memcached集群

From:http://blog.csdn.net/luckykapok918/article/details/39500545

首先整个安装软件说明  :windows7 , nginx-1.7.4  ,memcache1.4.13 ,分别在本机创建了2个服务memcached1 (端口 11211 )和  memcached2(端口 11212 ).

1.首先整个安装软件说明
  windows7
  nginx-1.7.4
 tomcat分别为apache-tomcat-6.0.41 (端口 18081 )和apache-tomcat-7.0.54 (端口 18080),主要是测试不同版本的tomcat的配置

1.1 首先安装nginx,本人使用的版本是nginx-1.7.4,并且把nginx作为系统服务,具体操作见下面:

 http://blog.csdn.net/luckykapok918/article/details/39501259

    window7环境下配置nginx+tomcat+memcached集群_第1张图片

修改nginx的conf文件下的nginx.txt配置文件

[plain] view plain copy print ?
  1. #user  nobody;  
  2. worker_processes  1;  
  3.   
  4. #error_log  logs/error.log;  
  5. #error_log  logs/error.log  notice;  
  6. #error_log  logs/error.log  info;  
  7.   
  8. #pid        logs/nginx.pid;  
  9.   
  10.   
  11. events {  
  12.     worker_connections  1024;  
  13. }  
  14.   
  15.   
  16. http {  
  17.     include       mime.types;  
  18.     default_type  application/octet-stream;  
  19.   
  20.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  21.     #                  '$status $body_bytes_sent "$http_referer" '  
  22.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  23.   
  24.     #access_log  logs/access.log  main;  
  25.   
  26.     sendfile        on;  
  27.     #tcp_nopush     on;  
  28.   
  29.     #keepalive_timeout  0;  
  30.     keepalive_timeout  65;  
  31.   
  32.     #gzip  on;  
  33.     upstream localhost {  
  34.         #ip_hash  
  35.       #ip_hash;  
  36.       server localhost:18081;  
  37.       server localhost:18080;  
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
   	upstream localhost {
   		#ip_hash
      #ip_hash;
      server localhost:18081;
      server localhost:18080;
[plain] view plain copy print ?
  1.       server 192.168.80.128:8080;  
  2.      }  
  3.        
  4.     server {  
  5.         listen       80;  
  6.         server_name  localhost;  
  7.           
  8.           
  9.         location / {  
  10.                     proxy_connect_timeout   3;  
  11.                     proxy_send_timeout      30;  
  12.                     proxy_read_timeout      30;  
  13.                 proxy_pass http://localhost;  
  14.             }  
  15.   
  16.         #charset koi8-r;  
  17.   
  18.         #access_log  logs/host.access.log  main;  
  19.   
  20.   
  21.         #error_page  404              /404.html;  
  22.   
  23.         # redirect server error pages to the static page /50x.html  
  24.         #  
  25.         error_page   500 502 503 504  /50x.html;  
  26.         location = /50x.html {  
  27.             root   html;  
  28.         }  
  29.   
  30.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
  31.         #  
  32.         #location ~ \.php$ {  
  33.         #    proxy_pass   http://127.0.0.1;  
  34.         #}  
  35.   
  36.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
  37.         #  
  38.         #location ~ \.php$ {  
  39.         #    root           html;  
  40.         #    fastcgi_pass   127.0.0.1:9000;  
  41.         #    fastcgi_index  index.php;  
  42.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
  43.         #    include        fastcgi_params;  
  44.         #}  
  45.   
  46.         # deny access to .htaccess files, if Apache's document root  
  47.         # concurs with nginx's one  
  48.         #  
  49.         #location ~ /\.ht {  
  50.         #    deny  all;  
  51.         #}  
  52.     }  
  53.   
  54.   
  55.     # another virtual host using mix of IP-, name-, and port-based configuration  
  56.     #  
  57.     #server {  
  58.     #    listen       8000;  
  59.     #    listen       somename:8080;  
  60.     #    server_name  somename  alias  another.alias;  
  61.   
  62.     #    location / {  
  63.     #        root   html;  
  64.     #        index  index.html index.htm;  
  65.     #    }  
  66.     #}  
  67.   
  68.   
  69.     # HTTPS server  
  70.     #  
  71.     #server {  
  72.     #    listen       443 ssl;  
  73.     #    server_name  localhost;  
  74.   
  75.     #    ssl_certificate      cert.pem;  
  76.     #    ssl_certificate_key  cert.key;  
  77.   
  78.     #    ssl_session_cache    shared:SSL:1m;  
  79.     #    ssl_session_timeout  5m;  
  80.   
  81.     #    ssl_ciphers  HIGH:!aNULL:!MD5;  
  82.     #    ssl_prefer_server_ciphers  on;  
  83.   
  84.     #    location / {  
  85.     #        root   html;  
  86.     #        index  index.html index.htm;  
  87.     #    }  
  88.     #}  
  89.   
  90. }  
      server 192.168.80.128:8080;
     }
	 
    server {
        listen       80;
        server_name  localhost;
		
		
		location / {
            		proxy_connect_timeout   3;
            		proxy_send_timeout      30;
            		proxy_read_timeout      30;
                proxy_pass http://localhost;
            }

        #charset koi8-r;

        #access_log  logs/host.access.log  main;


        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}



1.2.安装memcache,具体操作见下面:

  http://blog.csdn.net/luckykapok918/article/details/10005583

    window7环境下配置nginx+tomcat+memcached集群_第2张图片


1.3.解压tomcat免安装压缩包到,具体如下图:

      window7环境下配置nginx+tomcat+memcached集群_第3张图片



       window7环境下配置nginx+tomcat+memcached集群_第4张图片

         因为是在一台机器上做测试,所以还需对tomcat的配置文件端口、jvm等做修改,以满足一台机器测试所用:


     a. tomcat6需要配置的文件,如下:

    server.xml文件中4处修改(如果是安装在不同机器上则不需要

    第一处端口修改:

Xml代码   收藏代码
  1.   
  2. <Server port="18006" shutdown="SHUTDOWN">  

 
   第二处端口修改:

Xml代码   收藏代码
  1.   
  2. <Connector port="18081" protocol="HTTP/1.1"   
  3.                connectionTimeout="20000"   
  4.                redirectPort="8443" />  
  5.   
  6.    

 

   第三处端口修改:

Java代码   收藏代码
  1. "8009" protocol="AJP/1.3" redirectPort="8443" />  

 

   第四处修改:Engine元素增加jvmRoute属性:

Xml代码   收藏代码
  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  

 

     b. tomcat7需要配置的文件,如下:

    server.xml文件中4处修改(如果是安装在不同机器上则不需要

    第一处端口修改:

Xml代码   收藏代码
  1.   
  2. <Server port="18007" shutdown="SHUTDOWN">  

 
   第二处端口修改:

Xml代码   收藏代码
  1.   
  2. <Connector port="18080" protocol="HTTP/1.1"   
  3.                connectionTimeout="20000"   
  4.                redirectPort="8443" />  
  5.   
  6.    

 

   第三处端口修改:

Java代码   收藏代码
  1. "8010" protocol="AJP/1.3" redirectPort="8443" />  

 

   第四处修改:Engine元素增加jvmRoute属性:

Xml代码   收藏代码
  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">  

 


   c. tomcat6和tomcat7都需要修改的:

     context.xml文件中 增加

         kryo策略模式(一般来说采用kryo模式下的Non-sticky Session方式,性能最好

[html] view plain copy print ?
  1. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  2.    memcachedNodes="n1:localhost:11211,n2:localhost:11212"  
  3.    sticky="false"  
  4.    sessionBackupAsync="false"  
  5.    lockingMode="uriPattern:/path1|/path2"  
  6.    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  7.    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  
  8.    />  
	
[html] view plain copy print ?
  1. <span style="color:#000099;"> javolution策略模式span>  
    javolution策略模式
[html] view plain copy print ?
  1. <pre name="code" class="html">    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  2.     memcachedNodes="n1:localhost:11211,n2:localhost:11212"  
  3.     sticky="false"  
  4.     sessionBackupAsync="false"  
  5.     lockingMode="uriPattern:/path1|/path2"  
  6.     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  7.     transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"  
  8.     />  
	

 d. tomcat6和tomcat7 lib文件夹下添加的MSM(memcached-session-manager) 相关jar
kryo策略模式所需jar包

 
  
[html] view plain copy print ?
  1. <img src="https://img-blog.csdn.net/20140923223300359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja3lrYXBvazkxOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />  

[html] view plain copy print ?
  1. <span style="color:#000099;">javolution策略模式所需jar包span>  
javolution策略模式所需jar包

window7环境下配置nginx+tomcat+memcached集群_第5张图片


1.4.测试web工程ssm,只需要一个index.jsp页面就可以了

   

[html] view plain copy print ?
  1. <%@ page contentType="text/html; charset=GBK" %>   
  2. <%@ page import="java.util.*" %>   
  3. <html><head><title>Cluster App Testtitle>head>   
  4. <body>   
  5.    Server Info:   
  6.    <%   
  7. out.println(request.getLocalAddr() + ":" + request.getLocalPort());  
  8. %>   
  9. <br><br>  
  10.     <%    
  11. out.println("<br> ID " + session.getId()+"<br>");    
  12. String dataName = request.getParameter("dataName");  
  13. if (dataName != null && dataName.length() > 0) {    
  14. String dataValue = request.getParameter("dataValue") ;   
  15. session.setAttribute(dataName, dataValue);    
  16. }    
  17. out.print("<b>Session listb> <br>");    
  18. Enumeration e = session.getAttributeNames();    
  19. while (e.hasMoreElements()) {    
  20. String name = (String)e.nextElement();  
  21. String value = session.getAttribute(name).toString();    
  22. out.println( name + " = " + value+"<br>");   
  23. System.out.println( name + " = " + value);   
  24. }   
  25. %>  
  26.                   
  27. <form action="index.jsp" method="POST">   
  28.           name:<input type=text size=20 name="dataName"> <br>   
  29.           key:<input type=text size=20 name="dataValue"> <br>   
  30.           <input type=submit>   
  31.     form>   
  32.   body>   
  33. html>  
<%@ page contentType="text/html; charset=GBK" %> 
<%@ page import="java.util.*" %> 
Cluster App Test 
 
   Server Info: 
   <% 
out.println(request.getLocalAddr() + ":" + request.getLocalPort());
%> 


<% out.println("
ID " + session.getId()+"
"); String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue") ; session.setAttribute(dataName, dataValue); } out.print("Session list
"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"
"); System.out.println( name + " = " + value); } %>
name:
key:


所有软件安装配置好后,先启动nginx,memcached,最好分别启动tomcat6,tomcat7,都没报错,则配置成功。

2.tomcat集群session共享验证测试

 2.1 ,验证tomcat6启动成功:

 window7环境下配置nginx+tomcat+memcached集群_第6张图片

 2.2 ,验证tomcat7启动成功:

window7环境下配置nginx+tomcat+memcached集群_第7张图片

 2.3,验证nginx转发成功:

window7环境下配置nginx+tomcat+memcached集群_第8张图片

window7环境下配置nginx+tomcat+memcached集群_第9张图片

  2.4,验证tomcat session共享成功

kryo策略:

   window7环境下配置nginx+tomcat+memcached集群_第10张图片

首先登陆的是tomcat6的服务器,现在关掉tomcat6服务器,然后再刷新页面, 如果ID的值相同且Session List中值也存在,说明Session是被共享的。

kryo策略:

window7环境下配置nginx+tomcat+memcached集群_第11张图片



javolution策略:

window7环境下配置nginx+tomcat+memcached集群_第12张图片


 首先登陆的是tomcat7的服务器,现在关掉tomcat7服务器,然后再刷新页面,如果ID的值相同且Session List中值也存在,说明Session是被共享的。

javolution策略:

window7环境下配置nginx+tomcat+memcached集群_第13张图片



你可能感兴趣的:(Nginx)