Nginx+Tomcat+MemCached 集群配置

第3章   配置Session共享

3.1   环境说明

一、准备两台虚拟机,虚拟机上安装CentOS5.4版本;

A服务器IP:192.168.134.135

B服务器IP:192.168.134.136

A机上安装nginx-1.2.0和apache-tomcat-6.0.33

B机上安装memcached-1.4.10和apache-tomcat-6.0.33

 

二、除此之外,我们还需要一些MSM相关的jar包:

javolution-5.4.3.1.jar

memcached-2.4.2.jar

memcached-session-manager-1.5.1.jar

memcached-session-manager-tc6-1.5.1.jar

msm-javolution-serializer-1.5.1.jar

msm-kryo-serializer-1.5.1.jar

msm-xstream-serializer-1.5.1.jar

以上jar包在http://code.google.com/p/memcached-session-manager/downloads/list中下载。

3.2   配置Session共享

一、将上面所述的MSM的jar包拷贝至Tomcat安装目录lib文件夹中;

二、编辑context.xml

 

复制代码
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1: 192.168.134.136:11211"

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

sessionBackupAsync="false"

sessionBackupTimeout="100"

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

copyCollectionsForSerialization="false"/>
复制代码

 

 

三、重启两个Tomcat。

 

3.3   配置Nginx负载均衡

一、Nginx安装完毕后,修改配置文件conf/nginx.conf

 

复制代码
http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    upstream web_server {

       #ip_hash;

       server 192.168.134.135:8080 max_fails=3  fail_timeout=30s;

       server 192.168.134.136:8080 max_fails=3  fail_timeout=30s;

    }

server {

        listen       80;

        server_name  localhost;

        location ~ .*\.jsp$ {

             proxy_pass   http://web_server;

             proxy_redirect default ;

        }

        location / {

            root   html;

            index  index.html index.htm;

        }

   }

}
复制代码

 

 

 

二、重启Nginx

 

3.4   测试

3.4.1    测试页面

在两个Tomcat的webapps目录下创建test目录,在test目录下,创建test_session.jsp文件,文件内容如下:

复制代码
<%@ page contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*" %>

<html><head><title>Cluster App Test</title></head>

<body>

   Server Info:

   <%

out.println(request.getLocalAddr() + ":" + request.getLocalPort());

%>

<br><br>

    <% 

out.println("<br> ID " + session.getId()+"<br>"); 

String dataName = request.getParameter("dataName");

if (dataName != null && dataName.length() > 0) { 

String dataValue = request.getParameter("dataValue") ;

session.setAttribute(dataName, dataValue); 

} 

out.print("<b>Session list</b> <br>"); 

Enumeration e = session.getAttributeNames(); 

while (e.hasMoreElements()) { 

String name = (String)e.nextElement();

String value = session.getAttribute(name).toString(); 

out.println( name + " = " + value+"<br>");

System.out.println( name + " = " + value);

}

%>

               

<form action="test_session.jsp" method="POST">

          name:<input type=text size=20 name="dataName"> <br>

          key:<input type=text size=20 name="dataValue"> <br>

          <input type=submit>

    </form>

  </body>

</html>

 
复制代码

 

3.4.2    测试步骤

先启动memcached

然后启动niginx和两个Tomcat。

打开浏览器,输入http:// 192.168.134.135/test/test_session.jsp

 

填写name和key,提交后看以看到

 

关闭192.168.134.135上的Tomcat,再刷新,如果ID的值相同且Session List中值也存在,说明Session是被共享的。



          架构文档说明

 

 

1.     nginx环境

1.1            安装

下载nginx服务包,在此我使用的是nginx1.3.13

 

主要配置conf目录下的配置文件和使用nginx.exe的服务。
1.2 在cmd中进入nginx.exe所在的目录,输入:start nginx.exe启动nginx服务;nginx.exe –s quit或nginx.exe –s stop 停止nginx服务;nginx.exe –s reload刷新nginx的配置文件。

1.1            配置

找到nginx的安装目录:ngin1.3.13/conf/conf文件

 

nginx.conf文件是nginx的核心配置文件。具体配置见下图:

 

 

2.     msm环境

2.1            安装

下载memcached服务及安装包,如图所示:

 

memcached.exe为memcached服务,也是windows服务的一部分,memcached.exe一定要下载和自己电脑的bit数一致,如:32为、64位;其它则为缓存服务器所依赖的JAR文件,其中

是Tomcat7及以上所需要的JAR,如果使用的是Tomact6的版本则下载对应的版本,如:memcached-session-maager-tc7-1.6.3.jar,其他的JAR文件在该地址中都可以对应的找到:
http://code.google.com/p/memcached-session-manager/downloads/list

将memcached.exe放到一个目录下面,如D:\msm\memcached.exe。在cmd中进入到memcached.exe的目录:memcached.exe –d install安装memcached服务;memcached.exe –p 11211 –d start启动memcached服务,其中11211是该服务的端口号;memcached.exe –d uninstall 卸载memcached服务。

2.2            配置

在tomcat的lib目录中加入memcached缓存支持的JAR文件(12个jar)。
在tomcat目录下的content.xml文件,在content标签中加入:

 

复制代码
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n2:localhost:11211" requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100"transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false"/>
复制代码

memcachedNodes属性中的n2表示服务中的节点,可以自定义的,但是不同的memcached服务规定节点不能一样,否则不能实现session共享,不同的服务定义不同的节点,一个memcachedNodes也可以定义多个节点:memcachedNodes=" n2:localhost:11211 n2:192.168.21.**:11211",不同的节点直接用空格或逗号隔开即可。

修改tomcat目录下的server.xml文件,在Engine标签中添加jvmRote属性,jvm的值不能和集群中tomcat中的jvmRote值重复。

tomcat通过在不同的jmv上配置不同的jvmRoute参数,来防止集群的时候sessionid冲突:<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1" />。

注意:jvm值在同一个集群中不能一样,用来标识不同的tomcat服务,在msm集群中的每个tomcat必须要写。

3.     tomcat环境

3.1每个tomcat的端口不能重复,如图:

 

 

 

下图是对tomcat中server.xml文件中的端口解释

3.2 实现域名访问tomcat中的项目需要把tomcat默认显示的index.jsp进行更改掉

打开index.jsp页面,将里面css部分、body标签部分全部删除,然后在index.jsp内部最后添加:

<script>        Window.οnlοad=function(){            Window.loaction=”../dkce/app/index.jsp”;}</script>

注意:每个tomcat中的访问端口必须要在防火墙的入站规则里面进行创建,如当前的tomcat的对外端口是8080,则要在入站规则里面创建一个对外的端口。

1.     安装配置与启动项

1.1               将nginx和memcached服务进行安装,然后启动memcached服务。

1.2               配置JDK、环境变量,将项目放入tomcat中,进行配置memcached和域名访问的方式,上面已经详细介绍,启动tomcat。

1.3               配置nginx脚本(conf.xml),配置完成之后进行启动。

1.4               A.如果重启nginx服务不需要重启tomcat服务。B.如果重启tomcat服务,需要重启nginx服务(不是关机重启,是使用命令重启,2秒钟即可完成)。

1.5               如果在tomcat集群中移除其中的一台tomcat服务器,对于整个集群是不受影响的。添加一台tomcat服务器只需在nginx中注册该服务并重启nginx服务即可。在整个集群,无论nginx停止或重启、tomcat停止或重启对memcached服务不受任何影响。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值