zoukankan      html  css  js  c++  java
  • Keepalived+nginx+redis主从+tomcat一机多实例实现会话共享

    Keepalived+nginx+redis主从+tomcat一机多实例实现会话共享 2014-09-09 14:14:25

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lovelace.blog.51cto.com/1028430/1550198

    ### keepalived配置

    ### nginx安装培训

    - 安装nginx

    1
    2
    3
    ``` cpp
    yum install nginx -y
    ```

    - 调整nginx配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    ``` cpp
    [root@redis ~]# sed -e 's@ @@g;/^$/d;/^#/d' /etc/nginx/nginx.conf
    worker_processes1;
    events{
    worker_connections1024;
    }
    http{
    includemime.types;
    default_typeapplication/octet-stream;
    sendfileon;
    keepalive_timeout65;
    upstreammycluser
    {
    server192.168.58.30:8080;
    server192.168.58.30:8081;
    server192.168.58.10:8080;
    server192.168.58.10:8081;
    }
    server{
    listen80;
    server_namelocalhost;
    location/{
    roothtml;
    indexindex.htmlindex.htmindex.jsp;
    proxy_passhttp://mycluser;
    proxy_set_headerX-Real-IP$remote_addr;
    proxy_set_headerHost$host;
    proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
    proxy_redirectoff;
    }
    error_page500502503504/50x.html;
    location=/50x.html{
    roothtml;
    }
    }
    }
    ```

    ### redis主从配置

    - 安装redis

    1
    2
    3
    ``` cpp
    yum install redis -y 
    ```

    - slave redis上添加slaveof 192.168.58.30 6379这一行,这就是二者的区别

    1
    2
    3
    4
    5
    ``` cpp
    [root@mongo1 tmp]# sed -n '/^slaveof/p' /etc/redis.conf
    slaveof 192.168.58.30 6379
    [root@mongo1 tmp]# 
    ```

    - 测试会话共享

    - master上

    1
    2
    3
    4
    5
    6
    7
    8
    ``` cpp
    [root@redis ~]# redis-cli -h 192.168.58.30
    redis 192.168.58.30:6379> set name zhuima
    OK
    redis 192.168.58.30:6379> get name
    "zhuima"
    redis 192.168.58.30:6379> 
    ```

    - slave上

    1
    2
    3
    4
    5
    6
    7
    ``` cpp
    [root@mongo1 webapps]# redis-cli -h 192.168.58.10
    redis 192.168.58.10:6379> get name
    "zhuima"
    redis 192.168.58.10:6379> 
    redis 192.168.58.10:6379> 
    ```

    ### tomcat一机多实例配置

    - 配置jdk

    1
    2
    3
    ``` cpp
    [root@redis tmp]# tar xf jdk-7u60-linux-x64.gz  -C /usr/local
    ```

    - 配置jdk环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ``` cpp
    [root@redis local]# cat /etc/profile.d/java.sh 
    export JAVA_HOME=/usr/local/jdk1.7.0_60
    export PATH=$PATH:$JAVA_HOME/bin
    export JRE_HOME=$JAVA_HOME/jre
    [root@redis local]# source /etc/profile.d/java.sh
    [root@redis local]# java -version
    java version "1.7.0_60"
    Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
    Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
    [root@redis local]# 
    ```

    - 配置多实例tomcat

    1
    2
    3
    4
    5
    ``` cpp
    [root@redis local]# tar xf apache-tomcat-7.0.54.tar.gz -C /usr/local/
    [root@redis local]# mv apache-tomcat-7.0.54/ tomcat1
    [root@redis local]# cp -Rf tomcat1 tomcat2
    ```

    - 修改第二个tomcat的三个端口的配置信息

    ### 修改tomcat的content.xml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    ``` cpp
    [root@www conf]# cat context.xml
    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      contributor license agreements.  See the NOTICE file distributed with
      this work for additional information regarding copyright ownership.
      The ASF licenses this file to You under the Apache License, Version 2.0
      (the "License"); you may not use this file except in compliance with
      the License.  You may obtain a copy of the License at
          http://www.apache.org/licenses/LICENSE-2.0
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
    -->
    <!-- The contents of this file will be loaded for each web application -->
    <Context>
        <!-- Default set of monitored resources -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />  
        <Manager className="com.radiadesign.catalina.session.RedisSessionManager"  
             host="192.168.58.30"  
             port="6379"   
             database="0"   
             maxInactiveInterval="60"/>  
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->
        <!-- Uncomment this to enable Comet connection tacking (provides events
             on session expiration as well as webapp lifecycle) -->
        <!--
        <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
        -->
    </Context>
    ```

    - 复制给其他tomcat

    1
    2
    3
    4
    ``` cpp
    [root@redis conf]# yes | cp context.xml /usr/local/tomcat2/conf/
    cp: overwrite `/usr/local/tomcat2/conf/context.xml'? [root@redis conf]# 
    ```
    1
    2
    3
    4
    5
    6
    7
    8
    ``` cpp
    [root@redis conf]# for x in tomcat{1,2};do scp context.xml 192.168.58.10:/usr/local/$x/conf/;done
    root@192.168.58.10's password: 
    context.xml                                                                            100% 1678     1.6KB/s   00:00    
    root@192.168.58.10's password: 
    context.xml                                                                            100% 1678     1.6KB/s   00:00    
    [root@redis conf]# 
    ```

    ### 客户端验证会话共享

    - 测试文件192.168.58.30上面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ``` cpp
    [root@redis webapps]# cat index.jsp 
    <%@ page language="java" %>
    <html
     <head><title>TomcatB</title></head
     <body
      <h1><font color="blue">192.168.58.30:8081 Tomcat2 </h1
      <table align="centre" border="1"
       <tr
        <td>Session ID</td
      <% session.setAttribute("abc","abc"); %> 
        <td><%= session.getId() %></td
       </tr
       <tr
        <td>Created on</td
        <td><%= session.getCreationTime() %></td
       </tr
      </table
     </body
    </html>
    ```

    - 测试文件192.168.58.10上面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ``` cpp
    <%@ page language="java" %>
    <html
     <head><title>TomcatB</title></head
     <body
      <h1><font color="red">192.168.58.10:8080 Tomcat1 </h1
      <table align="centre" border="1"
       <tr
        <td>Session ID</td
      <% session.setAttribute("abc","abc"); %> 
        <td><%= session.getId() %></td
       </tr
       <tr
        <td>Created on</td
        <td><%= session.getCreationTime() %></td
       </tr
      </table
     </body
    </html>
    ```

    ### 查看进程存在与否

    1
    2
    3
    4
    5
    6
    7
    8
    9
    ``` cpp
    [root@redis conf]# ps -ef | egrep "[r]edis|[j]ava|[n]ginx"
    root      5814     1  1 10:34 pts/0    00:00:41 /usr/local/jdk1.7.0_60/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat1/endorsed -classpath /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat1 -Dcatalina.home=/usr/local/tomcat1 -Djava.io.tmpdir=/usr/local/tomcat1/temp org.apache.catalina.startup.Bootstrap start
    root      5830     1  1 10:35 pts/0    00:00:41 /usr/local/jdk1.7.0_60/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat2/endorsed -classpath /usr/local/tomcat2/bin/bootstrap.jar:/usr/local/tomcat2/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat2 -Dcatalina.home=/usr/local/tomcat2 -Djava.io.tmpdir=/usr/local/tomcat2/temp org.apache.catalina.startup.Bootstrap start
    redis     5921     1  0 11:07 ?        00:00:02 /usr/sbin/redis-server /etc/redis.conf
    root      5989     1  0 11:19 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    nginx     5991  5989  0 11:19 ?        00:00:00 nginx: worker process                   
    [root@redis conf]# 
    ```

    ### 延伸:关于tomcat部署项目的几种方式

    - 直接放到webapps的ROOT下面

        - 删除ROOT下的所有文件,把你的项目包解压过去即可

    - 直接放到webapps下面

        - 不用操作原来的webapps下面的任何东西,server.xml也不用调整,直接解压到该目录下即可

    - 定义context来定义项目文件目录

        - 通过修改server.xml来定义虚拟目录

    - 定义.conf/name/localhost定义一个xml文件

        - 通过定义xml文件来定义虚拟目录

     

     

  • 相关阅读:
    用户登录系统(三)
    SQL server 2005 时间函数应用 查询出结果为00:00:00 小时、分钟、秒
    Windows Server 2003系统 常用操作技巧集绵,发现了继续添加
    新一代井下数字集群通讯系统需求分析(一)
    WPF学习笔记(一)
    建立一个VSS源代码管理服务器,下面介绍建立的过程与实际应用情况
    Vista下使用VS2005的时候提示"没有安装FrontPage服务器扩展"的问题。
    SQL语句导入/导出EXCEL(转载自:白袜子blog)
    sql2005"因为它正用于复制"的错误解决办法
    (转)CS0016: 未能写入输出文件“c:\WINDOWS\xxxxxsktsuj.dll”“拒绝访问。”的处理
  • 原文地址:https://www.cnblogs.com/zhengah/p/4629782.html
Copyright © 2011-2022 走看看