zoukankan      html  css  js  c++  java
  • Nginx+Tomcat+Memcached实现tomcat集群和session共享

    一、Nginx安装

      详见前文:http://www.cnblogs.com/yixiwenwen/p/3574097.html

    二、memcached安装和启动

      详见前文:http://www.cnblogs.com/yixiwenwen/p/3574137.html

      

    三、配置Nginx实现Tomcat的负载均衡和利用memcached实现session共享

    1. 修改nginx的配置文件nginx.conf

    user  nobody;
    worker_processes  4;
    error_log  logs/error.log;
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        gzip  on;
        upstream  www.yixi.com   {
                  server   192.168.137.46:100;
                  server   192.168.137.46:101;
            server  192.168.137.46:102;
             } server { listen 80; server_name www.yixi.com; charset utf-8; location / { root html; index index.html index.htm; proxy_pass http://www.yixi.com; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 100m; } location ~ ^/(WEB-INF)/ { deny all; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }

    2. Tomcat配置

    下载并解压三个tomcat7;

    下载相应的jar包到所有的tomcat的lib目录下:

    couchbase-client-1.2.2.jar

    javolution-5.4.3.1.jar

    memcached-session-manager-1.6.4.jar

    memcached-session-manager-tc7-1.6.4.jar

    msm-javolution-serializer-1.6.4.jar

    msm-kryo-serializer-1.6.4.jar

    msm-xstream-serializer-1.6.4.jar

    spymemcached-2.10.2.jar

    下面修改Tomcat配置文件,让Tomcat结合memcached实现session共享
    [root@localhost lib]# vi /usr/local/tomcat/conf/context.xml
    在配置文件中的<context></context>标签里面加入如下内容:

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

    为了测试在tomcat默认的webroot下的index.jsp中加入这些代码:

    SessionID:<%=session.getId()%>
    <BR>
    SessionIP:<%=request.getServerName()%>
    <BR>
    SessionPort:<%=request.getServerPort()%>
    <%
    out.println("This is Tomcat Server 111111!");
    %>
    

    (备注:当要同时启动多个tomcat时需要修改一些配置

      a.修改/etc目录下的profile文件:  

    export CATALINA_HOME_test_1=/usr/local/tomcat_test/apache-tomcat-7-1
    export CATALINA_HOME_test_2=/usr/local/tomcat_test/apache-tomcat-7-2
    export CATALINA_HOME_test_3=/usr/local/tomcat_test/apache-tomcat-7-3

      b. 修改bin下的startup.shshutdown.sh

      添加 export CATALINA_HOME=$CATALINA_2_HOME  利用profile中第二组设置

    4.测试结果:

    分别启动nginx memcached tomcat 

    将host的文件中映射www.yixi.com到自己的ip;

    在浏览器中访问www.yixi.com

    访问的的是tomcat3 此时sessionID是:598EA38832CA14F8F14AC3EF0276AD3D-n1 

    刷新几次发现访问的还是tomcat3,

    为了测试 先杀死tomcat3的进程!

    再刷新...

    发现当tomcat3挂掉之后 请求就到了tomcat1 并且我们希望的sessionId还是598EA38832CA14F8F14AC3EF0276AD3D-n1 

    再把tomcat1挂掉试试:

    测试结果:

    只剩下tomcat2还能用 而且sessionId是共享的。

    这样整个配置和测试就完成了

    附件:

    tomcat部分:http://download.csdn.net/detail/yixiwenwen/6986845

    nginx.conf :http://download.csdn.net/detail/yixiwenwen/6986719

  • 相关阅读:
    hadoop集群的搭建
    EclipseAndroid打包签名发布安装失败闪退运行不了
    [目录]C#学习笔记
    [目录]搭建一个简单的WebGIS应用程序
    实现DataTables搜索框查询结果高亮显示
    解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误
    将展示内容(div、iframe)放在Expand控件中
    [C#学习笔记1]用csc.exe和记事本写一个C#应用程序
    选中FeatureLayer元素并高亮显示
    在地图中调用显示FeatureLayer并进行render、popupTemplate、添加图例等相关内容的设置
  • 原文地址:https://www.cnblogs.com/yixiwenwen/p/3578450.html
Copyright © 2011-2022 走看看