1台 redhat 32 位配置nginx + tomcat2+MSM实现负载均衡,动静分离

1. rpm -ivh jdk-7u51-linux-i586.rpm
2.JDK 环境变量配置

vi  /etc/profile
最后增长 css

#set environment for JDK
export JAVA_HOME=/usr/java/jdk1.7.0_51
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

3.配置完成以后,本身验证命令 javac和java
4.tar -zxvf apache-tomcat-7.0.52.tar.gz 解压以后copy一份
5.cp -r apache-tomcat-7.0.52 apache-tomcat-7.0.53 由于是同一台电脑,须要改动其中1台tomcat的端口信息
6. 
由于我安装在 /usr/local下面,能够用下面命令开启和关闭,验证tomcat是否正常启动 也能够经过以下命令查看 ps -ef | grep java
/usr/local/apache-tomcat-7.0.52/bin/shutdown.sh 
/usr/local/apache-tomcat-7.0.53/bin/shutdown.sh 
/usr/local/apache-tomcat-7.0.52/bin/startup.sh 
/usr/local/apache-tomcat-7.0.53/bin/startup.sh 
7.下面安装nginx,我安装nginx方式比较简单,使用yum方式安装,若是有任何问题,能够跟我说,我会立刻回复你
redhat 由于yum没法用,可是我从新改变了一下,能够查看以下连接
http://blog.csdn.net/zcyhappy1314/article/details/17580943
可是有一个地方须要改变一下,就是连接地址
wget http://tel.mirrors.163.com/centos/6/os/i386/Packages/yum-3.2.29-40.el6.centos.noarch.rpm
wget http://tel.mirrors.163.com/centos/6/os/i386/Packages/yum-metadata-parser-1.1.2-16.el6.i686.rpm
wget http://tel.mirrors.163.com/centos/6/os/i386/Packages/yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm 
wget http://tel.mirrors.163.com/centos/6/os/i386/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
8.nginx 配置信息以下
html

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
  upstream  tomcat_cluster{
              server   192.168.1.167:8080;
              server   192.168.1.167:8081;
    }
  server {
    listen 80;
    server_name 192.168.1.167;
    server_name_in_redirect off;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  
    location  / {
      proxy_pass http://tomcat_cluster; #转向tomcat处理
    }

    location ~ \.(jsp|do|action)$ { #全部jsp页面以及do/action请求均交由tomcat处理
      proxy_pass http://tomcat_cluster; #转向tomcat处理
    }

   location ~ \.(htm|html|gif|jpg|jpeg|png|ico|rar|css|js|zip|txt|flv|swf|doc|ppt|xls|pdf)$ {
            root  /home/leiwente/webapp/ROOT;
            expires      30h;
       }
   }
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}




9.先删除两个tomcat下面ROOT下面全部的文件,在其中一个tomcat新建 vi test.jsp java

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

在另一个tomcat 新建 vi test.jsp python

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



10.直接访问 http://192.168.1.127/test.jsp页面的再动态切换
11.下面要作session的同步,我使用的memcached-session-manager,注意使用版本问题,其中有不少序列化方式,我使用的是spy,一些文中的包均可以从下面的连接文章中下载到
https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
注意序列化包的版本号,个人包以下图,反正 每个tomcat的lib下面

12.memcached安装直接使用yum
搜索 yum search memcached
安装 yum install  memcached.i686
启动 service memcached restart
13.客户能够经过本机登入cmd telnet 192.168.1.167 11211 登入 其中ip为你装的机器


14.每个tomcat中还须要配置context.xml还须要配置manager linux

<?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>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.1.167:11211"
    sticky="false"
    sessionBackupAsync="false"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
    <!-- 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>
~



15.注意这里还有1个小问题,由于1台服务器上面安装2台tomcat,涉及到nginx处理图片,js,css路径的问题
16.这里使用创建一个统一代码存放的地点,例如 /home/leiwente/webapp下面

17 在每个tomcat下面ROOT下面,已经删除了ROOT下面全部的文件 ln -s /home/leiwente/webapp/ROOT/  ROOT
18之后只要更新 / home/leiwente/webapp 下面,两个tomcat会同时更新代码
19如今开始从新启动每个tomcat信息,下面是其中一个tomcat信息


20直接访问 http://192.168.1.167/test.jsp页面 sessionId是不会发生改变的