Nginx + Memcached + Tomcat 集群负载均衡

Tomcat准备

使用的Tomcat自行准备

下载地址:http://tomcat.apache.org/

 

Tomcat配置:
Nginx + Memcached + Tomcat 集群负载均衡_第1张图片
 

Memcached安装

1、将安装包memcached-1.2.6-win32-bin解压到X:/目录下面,重命名为memcached。打开命令提示符,进入X:/memcached的目录,输入安装命令“memcached.exe d install”,安装memcachedwindows服务,然后输入“memcached -d start”,以后memcached将作为windows的一个服务每次开机时自动启动。默认端口:11211

 

2、下面插入介绍一些memcached的常用命名,也是最基本的命令,不然你启动了memcached,不知道怎么停止这个服务了,也不知道是否已经启动该服务。

(1) 查看memcached的服务是否已经启动:tasklist /fi "imagename eq memcached.exe"

(2) memcached参数使用介绍

-p 监听的端口

-l 连接的IP地址默认是本机

-d start 启动memcached服务

-d restart 重起memcached服务

-d stop|shutdown 关闭正在运行的memcached服务

-d install 安装memcached服务

-d uninstall 卸载memcached服务

-u 以的身份运行 (仅在以root运行的时候有效)

-m 最大内存使用,单位MB。默认64MB

-M 内存耗尽时返回错误,而不是删除项

-c 最大同时连接数,默认是1024

-f 块大小增长因子,默认是1.25

-n 最小分配空间,key+value+flags默认是48

-h 显示帮助

3memcached的配置

1)把之前下载的jar(总共是5)COPY到两个TOMCAT安装目录下的lib/中。

2)修改文件$TOMCAT/conf/context.xml(两个tomcat中的都需要修改),在Context标签中加入如下代码:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.100.48:11211"

         requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"

              sessionBackupAsync="false"

              sessionBackupTimeout="100"

              transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

              copyCollectionsForSerialization="false" />

 

 
Nginx + Memcached + Tomcat 集群负载均衡_第2张图片
 

4、五个jar


Nginx + Memcached + Tomcat 集群负载均衡_第3张图片
 

下载地址:http://code.google.com/p/memcached-session-manager/downloads/list

 

Nginx的安装和配置

1、下载地址:http://nginx.org/en/download.html

2Nginx的安装

将安装包nginx-1.3.0.zip解压到X:/目录

启动Nginx:进入X:/nginx目录,执行命令:start nginx.exe,弹出屏会一闪而逝。接着输入tasklist /fi "imagename eq nginx.exe",出现如下内容,表示nginx已正常启动啦!在浏览器输入http://localhost,可以看到Nginx的欢迎页。


Nginx + Memcached + Tomcat 集群负载均衡_第4张图片
 

更多Nginx常用命令:

停止Nginxnginx.exe -s stop|quit

重启Nginxnginx.exe -s reload

查看Nginx版本:nginx.exe -v

修改文件$NGINX_HOME/conf/nginx.conf

 

http标签下,配置upstream属:

 

Java代码   收藏代码
  1. #设定负载均衡的服务器列表  
  2.     #weigth参数表示权值,权值越高被分配到的几率越大  
  3.     upstream tomcat_servers{  
  4.         server 192.168.100.48:8080 weight=5;    
  5.         server 192.168.100.48:8081 weight=1;  
  6.     }  

 

http标签下的server标签中,做适当的修改:

 

Java代码   收藏代码
  1. server {  
  2.         listen       80;  
  3.         server_name  localhost;  
  4.     location / {   
  5.             root   html;    
  6.             index  index.jsp;  
  7.             #表示代理主机           
  8.             proxy_pass        http://tomcat_servers;    
  9.             proxy_set_header  Host $host;    
  10.             proxy_set_header  X-Real-IP  $remote_addr;    
  11.             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;    
  12.         }   
  13.       
  14.     }  

 

 

session测试

tomcat/webapp/下建立test文件夹

test文件夹下建立WEB-INF文件夹

WEB-INF文件夹下建立web.xml文件

test下建立index.jsp文件

 

Index.jsp内容:

Java代码   收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2.   
  3. <%  
  4.   
  5. String path = request.getContextPath();  
  6.   
  7. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  8.   
  9. session.removeAttribute("search_alert");  
  10.   
  11. %>  
  12.   
  13.    
  14.   
  15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  16.   
  17. <html xmlns="http://www.w3.org/1999/xhtml">  
  18.   
  19. <head>  
  20.   
  21. <base href="<%=basePath %>" />  
  22.   
  23. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  24.   
  25. <title>session 共享操作</title>  
  26.   
  27. </head>  
  28.   
  29. <body>  
  30.   
  31.   Server Info:  
  32.   
  33. <%  
  34.   
  35. out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>  
  36.   
  37. <%  
  38.   
  39.   out.println("<br> ID " + session.getId()+"<br>");  // 如果有新的 Session 属性设置  
  40.   
  41.   String dataName = request.getParameter("dataName");  
  42.   
  43.   if (dataName != null && dataName.length() > 0) {  
  44.   
  45.      String dataValue = request.getParameter("dataValue");  
  46.   
  47.      session.setAttribute(dataName, dataValue);  
  48.   
  49.   }  out.print("<b>Session 列表</b>");  Enumeration e = session.getAttributeNames();  
  50.   
  51.   while (e.hasMoreElements()) {  
  52.   
  53.      String name = (String)e.nextElement();  
  54.   
  55.      String value = session.getAttribute(name).toString();  
  56.   
  57.      out.println( name + " = " + value+"<br>");  
  58.   
  59.          System.out.println( name + " = " + value);  
  60.   
  61.    }  
  62.   
  63. %>  
  64.   
  65.   <form action="index.jsp" method="POST">  
  66.   
  67.     名称:<input type=text size=20 name="dataName">  
  68.   
  69.      <br>  
  70.   
  71.     值:<input type=text size=20 name="dataValue">  
  72.   
  73.      <br>  
  74.   
  75.     <input type=submit>  
  76.   
  77.    </form>  
  78.   
  79. </body>  
  80.   
  81. </html>  

 

 

Web.xml内容:

 

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  4.   
  5.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.   
  7.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  8.   
  9.          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  10.   
  11.          <display-name>springMvc</display-name>  
  12.   
  13.          <!-- spring config -->  
  14.   
  15.    
  16.   
  17.          <welcome-file-list>  
  18.   
  19.                    <welcome-file>/index.jsp</welcome-file>  
  20.   
  21.          </welcome-file-list>  
  22.   
  23. </web-app>  

你可能感兴趣的:(Nginx + Memcached + Tomcat 集群负载均衡)