zoukankan      html  css  js  c++  java
  • 使用msm配置分布式tomat,实现session共享

    一,环境说明

    操作系统是Windows7家庭版(有点不专业哦,呵呵!),JDK是1.6的版本,

    Tomcat是apache-tomcat-6.0.35-windows-x86,下载链接:http://tomcat.apache.org/

    Nginx是nginx-1.3.0,下载链接:http://nginx.org/en/download.html

    Memcached是memcached-1.2.6-win32-bin,下载链接:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip

    http://blog.couchbase.com/memcached-windows-64-bit-pre-release-available

    其他所需jar包,如下列表:

    memcached-session-manager-1.6.1,memcached-session-manager-tc6-1.6.1(因为Tomcat版本为6.0)

    javolution-5.4.3.1,msm-javolution-serializer-1.6.1(准备使用javolution序列化方式)

    spymemcached-2.7.3(依赖包),以上jar包在http://code.google.com/p/memcached-session-manager/downloads/list中都可以找到,文档http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration中详细介绍了不同的服务器版本,不同的jar包需求。

    好,资源已经准备齐全,马上就可以开始搭建啦!

    按照配置的顺序,搭建步骤可以分为四个部分:

    1,Tomcat的安装和配置

    2,Memcached的安装和配置

    3,Nginx的安装和配置

    4,应用测试

    一、Tomcat的配置安装

    既然是要集群,那自然不可能是一个Tomcat咯。将tomcat的安装包apache- tomcat-6.0.35-windows-x86解压到X:/ (这个路径可以自定义),重命名加压目录,我将这个目录改名为“tomcat1”(因为还有第二个tomcat),然后COPY一份tomcat1至 X:/目录,重命名为“tomcat2”。做完上述工作,我的X盘中tomcat的列表如下图(注意忽略你看到的两个虚拟机目录,呵呵!它们与本次任务不 相关)。

    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(二) - 落羽 - 落羽
     
    接下来的任务就是TOMCAT的配置啦!
    操作对象:$TOMCAT_HOME/conf/server.xml文件(这里注意两个TOMCAT中的文件都要修改)。
    修改内容:三个端口号一个命名。
    (1) <Server port="8085" shutdown="SHUTDOWN">   (tomcat2中可以为“8086”)
    (2) <Connector port="8080" protocol="HTTP/1.1"       (tomcat2中可以为“8081”)
                   connectionTimeout="20000"
                   redirectPort="8443" />
    (3) <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />    (tomcat2中可以为“8089”)
    (4) <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">   (tomcat2中可以为“tomcat2”)
    上面红色部分是需要修改和增加的内容,确保tomcat1和tomcat2两个目录下server.xml中的4个值不相同。
     
    下面测试Tomcat是否安装成功。进入$TOMCAT_HOME/bin,运行start.bat文件,出现下图结果,表示tomcat已启动。
    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(二) - 落羽 - 落羽
    按照上述方法同时启动前面安装的两个TOMCAT。打开浏览器,分别输入http://localhost:{端口号},如果看到Tomcat的欢迎页,一个奔跑中的大猫,表示第一步骤已经成功完成。如果未成功,那就要仔细查看控制台的错误信息,通常是端口号冲突,一定要确保配置的端口号是未使用的端口号。
     
    一、Memcached的安装和配置

    1、 Memcached的安装

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

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

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

        Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(三) - 落羽 - 落羽

        (2)  memcached参数使用介绍(Win7用户要以管理员身份启动命令窗口哦!)
         -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 显示帮助
     
    2、memcached的配置
    (1)把《Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(一)》中提到的jar包(总共是5个),COPY到两个TOMCAT安装目录下的lib/中。
    (2)修改文件$TOMCAT/conf/context.xml(两个tomcat中的都需要修改),在Context标签中加入如下代码:

     <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

      memcachedNodes="n1:localhost:11211"   //目前机器只安装了一个memcached,所以这里只写一个节点OK。
      requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$" 
      sessionBackupAsync="false" 
      sessionBackupTimeout="100"
      transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   //序列化类
      copyCollectionsForSerialization="false"/>

    更多信息,请查看:http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

    一、Nginx的安装和配置

    1、Nginx的安装

    将安装包nginx-1.3.0.zip解压到X:/目录,目录重命名为nginx。到这里为止,我表示已经安装完成啦!

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

    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(三) - 落羽 - 落羽

     更多Nginx常用命令:

    停止Nginx:nginx.exe -s stop|quit

    重启Nginx:nginx.exe -s reload

    查看Nginx版本:nginx.exe -v

    参考页面:http://hi.baidu.com/ihanxo/blog/item/6d3a8a2688d24ce8d6cae201.html

    2,Nginx的配置

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


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

         upstream 127.0.0.1 {

             #weigth参数表示权值,权值越高被分配到的几率越大

             server 127.0.0.1:8081 weight=1;

             server 127.0.0.1:8082 weight=1;

         }

      
        server {
            listen       80;
            server_name  localhost;

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {
                root   html;
                index  index.html index.htm;
                proxy_pass    http://127.0.0.1;
            }

         }

         红色部分是需要在nginx.conf中添加的内容。

         黑色粗体表示当前Nginx监听的主机名和端口号,在浏览器中测试的时候需要输入的内容。

        proxy_pass表示代理主机,upstream 127.0.0.1 {……}配置中配置了代理主机处理请求的两个服务。

        上述配置表示:Nginx监听到http://locahost:80的请求之后,转发到代理127.0.0.1中的两个服务中的一个,有它们来处理请求。weight表示被分配到权重,weight值越大,处理请求的机会越多。

        至此,Nginx的安装与配置结束。

    配置工作已经结束了,马上开始测试吧!(记得以管理员身份启动命令提示符窗口

    1、启动memcached:进入X:/memcached目录,执行memcached.exe -d start;

    2、启动Nginx:进入X:/nginx目录,执行start nginx.exe;

    3、启动两个TOMCAT,分别进入$TOMCAT_HOME/bin目录,执行start.bat;

    4、准备测试页面test.jsp。

    <%@ page contentType="text/html; charset=GBK" %>

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

    <html><head><title>Cluster Test (TOMCAT1|TOMCAT2)</title></head>

    <body>

    <%

    System.out.println(session.getId());

    out.println("<br> This is (TOMCAT1|TOMCAT2), SESSION ID:" + session.getId()+"<br>");

    %>

    </body>

    </html>

          不同的Tomcat下放置不同的文件,以便从结果中看出SESSION共享的效果,即:不论是访问TOMCAT1还是TOMCAT2,session都是不变的,同一个sessioin。

    在浏览器输入http://localhost/test.jsp,然后不停的刷新页面,即可看到效果了。

    我的页面效果:

    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(四) - 落羽 - 落羽
    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(四) - 落羽 - 落羽
     
    结 果说明:n1:memcached节点ID,我们在$TOMCAT/conf/context.xml中仅配置了一个节点,ID为“n1”,显示的 sessionID就是存储在这个节点上的,后面跟着的tomcatN,表示目前所访问的web应用服务器的名称,这个值 在$TOMCAT_HOME/conf/server.xml中的<Engine>标签的jvmRoute属性中已配置。
     
  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/interdrp/p/3450369.html
Copyright © 2011-2022 走看看