一 、LNMT架构

     LNMT架构:顾名思义是指 Linux  Ningx MySQL Tomcat  


     架构图:


    wKiom1Nu87XR0HPrAAEGEtLEyOs680.jpg

  配置步骤:

       

   1、Tomcat服务器配置

         

(1)设置服务器内网ip地址
 # ifconfig eth0 192.167.13.2/24 up  设置ip地址
(2)安装Tomcat
 #请参照我的博客http://jungege.blog.51cto.com/4102814/1409290
 #service  tomcat start 启动服务
(3)编辑配置文件
 # vim  /usr/local/tomcat/conf/server.xml
  <Host name="www.a.com" appBase="/www/webapps" unpackWARS="true" autoDeploy="true">
  <Context path="" docBase="ROOT" reloadable="true" />
  <Valve className="org.apache.catalina.valves.AccessLogValve"directory="logs"                                                                                                                                                                
    prefix="localhost_access_log." suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>
 # mkdir  -pv  /www/webapps/ROOT 创建web程序存放目录
 (4)部署web程序
  下载JavaCenter_Home_2.0_GBK.tar.bz2 
  # tar xf JavaCenter_Home_2.0_GBK.tar.bz2
  # cd JavaCenter_Home_2.0_GBK
  # mv * /www/webapp/ROOT
  程序部署完毕,接下来我们部署Ningx反向代理服务器

   

   2、配置Ninx服务器


   

(1)安装Nginx
  # ifconfig  eth0 172.16.13.4/16 up 配置外网地址
  # route add default gw 172.16.0.1
  # ifconfig eth1 192.168.13.4/24 up  配置内网地址
  下载rpm包 nginx-1.4.7-1.el6.ngx.x86_64.rpm
  # rpm -ivh nginx-1.4.7-1.el6.ngx.x86_64.rpm
  # service nginx start  启动服务
  # ss -ntl | grep 80 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
  编辑配置文件
  #  cd /etc/nginx/conf.d
  #  vim default.conf   添加一个server
   server {
        listen       80;
        server_name  localhost;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
      location / {   
          root  /web/htdocs;
           index  index.html  index.jsp index.htm;   
       }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
       location *~ \.(jsp|do)$ {
           proxy_pass http://www.a.com:8080;  ---动态.jsp  .do 页面反向代理至Tomcat1服务器
       }  
    }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
  # mkdir  -pv /web/htdocs
  # vim /web/htdocs/index.html 创建一个html静态页面
  <h1> Welcom to Nginx Server!!!</h1>
  # service nginx reload
  # vim /etc/hosts
  192.168.13.2   www.a.com


    配置MySQL服务器

    我们将Tomcat和MySQL装在同一台机器上

   

# yum  -y install mysql mysql-server
授权用户
#mysql
mysql> grant all on *.* to 'root'@'localhost' identified by '123456'; 
mysql> flush privileges;


     

   Web浏览器测试

   请求静态页面

   wKiom1Nu9sDhXVvjAABUHPW2e3k149.jpg

   请求动态页面


   wKiom1Nu9qnjv9cSAADJal8TOd0465.jpg


   已经看到静态页面nginx直接处理,动态页面由tomcat处理后返回给nginx代理

   成功实现动静分离!


 

二 、LAMT架构


    LAMT架构:Linux Apache MySQL Tomcat


    架构图

     wKioL1NvZTazWphAAADy_XECH78256.jpg

       

Apache与Tomcat的连接通信依赖于mod_proxy模块或者mod_jk模块
    mod_proxy模块使用时的协议为http、https、ajp
    mod_ajp  模块使用时的协议为ajp

       

   根据上图的架构,我们来配置


配置步骤

 1、配置TomcatA服务器


(1)配置ip地址
# ifconfig eth0 192.167.13.2/24 up  设置ip地址
(2)安装 Tomcat
# 请参照我的博客 http://jungege.blog.51cto.com/4102814/1409290
# service  tomcat start
# ss -ntl | grep 8080


   接下来我们配置httpd服务器

           

  2、配置httpd服务器(使用mod_proxy模块)

    ###httpd基于mod_proxy模块,使用http协议与tomcat通信

   

Apache服务器使用mod_proxy 模块 做反向代理
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
# yum -y install httpd 系统自带的httpd
# rpm -q httpd
  httpd-2.2.15-29.el6.centos.x86_64
# cd  /etc/httpd/conf.d
# vim mod_proxy.conf
   ProxyVia on      --------开启via
   ProxyRequests off -------关闭正向代理,即开启了反向代理
   ProxyPreserveHost on  
   ProxyPass / http://192.168.13.2:8080/        ---------反向代理至tomcat服务器,tomcat使用http协议
   ProxyPa***everse / http://172.16.13.2:8080/   ---------将对根的访问重定向至tomcat服务器
   <Location />     ----------------定义访问属性
    Order Allow,Deny
     Allow from all
   </Location>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
# service httpd configtest
# service  httpd start
# ss  -ntl | grep 80
  LISTEN     0      128                      :::80

           

    Web浏览器测试

    wKioL1Nva4OwWf9bAAIpi2BFbl4194.jpg     #####http基于mod_proxy模块使用http协议与tomcat成功通信



  3、配置http服务器(使用mod_proxy模块)

    ###http基于mod_proxy模块使用ajp协议与tomcat通信

   

编辑配置文件
#cd  /etc/httpd/conf.d
# vim mod_proxy.conf
  ProxyVia on       --------开启via
  ProxyRequests off -------关闭正向代理,即开启了反向代理
  ProxyPreserveHost on 
  ProxyPass / ajp://192.168.13.2:8009   ---------反向代理至tomcat服务器,tomcat使用ajp协议
  ProxyPa***everse / ajp://172.16.13.2:8009/   ---------将对根的访问重定向至tomcat服务器
  <Location />     ----------------定义访问属性
   Order Allow,Deny
   Allow from all
  </Location>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
# service httpd configtest
# service  httpd start

       

    Web浏览器测试

    wKiom1NvbMPS04tGAAIx2DmrCAo309.jpg       ####http基于mod_proxy模块使用ajp协议已成功与tomcat通信


  4、配置http服务器(使用mod_jk模块)

 

#mod_jk是ASF的一个项目,是一个工作于apache端基于AJP协议与Tomcat通信的连接器,它是apache的一个模块 ,是AJP协议的客户端(服务端是Tomcat的AJP连接器)

   

   

下载tomcat-connectors-1.2.37-src.tar.gz  源码包
(1)编译安装   
# yum  -y install httpd-devel
# rpm -ql httpd-devel | grep apxs
    /usr/sbin/apxs
    /usr/share/man/man8/apxs.8.gz
# tar xf tomcat-connectors-1.2.37-src.tar.gz
# cd  tomcat-connectors-1.2.37-src/native
#  ./configure --with-apxs=/usr/sbin/apx
# make && make install  
  查看是否生成mod_jk模块
# ls /usr/lib64/httpd/modules/ | grep mod_jk.so
   mod_jk.so 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
(2)编辑配置文件,为mod_jk提供配置
# cd /etc/httpd/conf.d/ 
# mv mod_proxy.conf mod_proxy.conf.bak  此时我们用不到mod_proxy
# vim mod_jk.conf
   LoadModule  jk_module  modules/mod_jk.so
   JkWorkersFile  /etc/httpd/conf.d/workers.properties
   JkLogFile  logs/mod_jk.log
   JkLogLevel  debug
   JkMount  /*  TomcatA
   JkMount  /status/  statA
# vim workers.properties ------编辑workers工作线程的属性
   worker.list=TomcatA,statA
   worker.TomcatA.port=8009
   worker.TomcatA.host=192.168.13.2
   worker.TomcatA.type=ajp13
   worker.TomcatA.lbfactor=1
   worker.statA.type = status
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
# service httpd configtest  测试配置文件
# service  httpd restart


    Web浏览器测试

   wKioL1Nvb2XScCOTAAI8dNYK2ls438.jpg      ####http基于mod_jk模块使用ajp协议与tomcat实现通信


  查看mod_jk状态

  Web浏览器访问 http://172.16.13.4/status/

   wKioL1NvcP6xJO1uAAK3NHUNgZA423.jpg  

   

 

 基于mod_jk 实现负载均衡


                                           图(1)

 

   wKiom1Nvccbw7RCXAADy_XECH78372.jpg

一、配置两个Tomcat服务器

   

   TomcatA :


 (1)安装jdk 和tomcat  

   下载  jdk-7u9-linux-x64.rpm apache-tomcat-7.0.42.tar.gz
                                                                                                                                                                                                                                                                                                                                                                                                                                                               
# rpm -ivh  jdk-7u9-linux-x64.rpm
# vim /etc/profile.d/java.sh
  export CATALINA_HOME=/usr/java/latest
  export PATH=$CATALINA_HOME/bin:$PATH
# . /etc/profile.d/java.sh
# java -version

     

  wKiom1NvcqjBnT5rAACZSNFd0_E121.jpg

   

   

# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local
# cd /usr/local
# ln -sv apache-tomcat-7.0.42 tomcat
# vim /etc/profile.d/tomcat.sh
# . /etc/profile.d/tomcat.sh

    提供服务脚本

     #vim  /etc/rc.d/init.d/tomcat

#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
case $1 in
start)
  exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
  exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
  $CATALINA_HOME/bin/catalina.sh stop
  sleep 2
  exec $CATALINA_HOME/bin/catalina.sh start ;;
configtest)
  exec $CATALINA_HOME/bin/catalina.sh configtest ;;
*)
  exec $CATALINA_HOME/bin/catalina.sh * ;;
esac

   

# chmod +x /etc/rc.d/init.d/tomcat
# chkconfig --add tomcat
# chkconfig tomcat on
# service tomcat start 启动服务
# ss -ntl | grep 8080  tomcat默认侦听的端口为8080
LISTEN     0      100                      :::8080


   (2)部署jsp程序

     

#cd  /usr/local/tomcat/webapps/
# mkdir -pv WEB-INF/{classes,lib}
# vim index.jsp
<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.jungege.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("magedu.com","magedu.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
#service tomcat restart

  TomcatB:

 

    (1)安装jdk与tomcat

       

#同TomcatA


    (2)部署jsp程序

     

# cd  /usr/local/tomcat/webapps/
# mkdir -pv WEB-INF/{classes,lib}
# vim index.jsp
<%@ page language="java" %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color="blue">TomcatB.jungege.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("magedu.com","magedu.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>                     
                                                                                                                                                                                                                                                                                                                                                           
#service  tomcat restart

   

二、配置http服务器 (使用mod_jk模块)


   

1、编译安装mod_jd模块 
  下载tomcat-connectors-1.2.37-src.tar.gz  源码包
                                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                       
# rpm  -q httpd
  httpd-2.2.15-29.el6.centos.x86_64
# yum  -y install httpd-devel
# rpm -ql httpd-devel | grep apxs
   /usr/sbin/apxs
  /usr/share/man/man8/apxs.8.gz
                                                                                                                                                                                                                                                                                                                          
# tar xf tomcat-connectors-1.2.37-src.tar.gz
# cd  tomcat-connectors-1.2.37-src/native
#  ./configure --with-apxs=/usr/sbin/apx
# make && make install  
 查看是否生成mod_jk模块
# ls /usr/lib64/httpd/modules/ | grep mod_jk.so
  mod_jk.so 
                                                                                                                                                                                                                                                                                                                       
2、编辑配置文件,为mod_jk提供配置
# cd /etc/httpd/conf.d/ 
# mv mod_proxy.conf mod_proxy.conf.bak  此时我们用不到mod_proxy
# vim mod_jk.conf
     LoadModule  jk_module  modules/mod_jk.so
     JkWorkersFile  /etc/httpd/conf.d/workers.properties
     JkLogFile  logs/mod_jk.log
     JkLogLevel  debug
     JkMount  /*  lbcA
     JkMount  /status/  statA
# vim workers.properties 编辑workers的特性
      worker.list=lbcA,statA
      worker.TomcatA.port=8009
      worker.TomcatA.host=192.168.13.2
      worker.TomcatA.type=ajp13
      worker.TomcatA.lbfactor=1
                                                                                                                                                                                                                                                                                                                          
      worker.TomcatB.port=8009
      worker.TomcatB.host=192.168.13.3
      worker.TomcatB.type=ajp13
      worker.TomcatB.lbfactor=1
      worker.lbcA.type=lb
      worker.lbcA.sticky_session=0
      worker.lbcA.balance_workers=TomcatA,TomcatB
      worker.statA.type = status
                                                                                                                                                                                                                                                                                                                          
# service httpd configtest  测试配置文件
# service  httpd start

   


  Web浏览器测试

   

   wKiom1NvdkuAk-dyAACv6EkhEHU994.jpg

   wKioL1NvdjOiax-zAACyfQjsw7g243.jpg

   #####http基于mod_jk与tomcat通信实现了负载均衡

   

  接下来我们实现session绑定功能


   

1、tomcatA  tomcatB 设置
   tomcatA 编辑配置文件定义jvmRoute属性
# vim /usr/local/tomcat/conf/server.xml
   <Engine name="Catalina" defaultHost="localhost"jvmRoute="TomcatA">  
#service  tomcat restart 
   tomcatB 编辑配置文件定义jvmRoute属性
# vim /usr/local/tomcat/conf/server.xml
   <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> #service tomcat restart
2 、编辑httpd的workers.properties
# vim /etc/httpd/conf.d/workers.properties 修改一下内容
  worker.lbcA.sticky_session=1
# service httpd  restart

 

    Web浏览器测试


    wKiom1NvdxWzsfbgAACP7GiI4jg459.jpg

    ###session绑定成功




基于modproxy实现负载均衡

    架构图:如图(1)


     

#######一定要启动proxy_balancer_module模块
# cd  /etc/httpd/conf.d/
# mv mod_jk.conf mod_jk.conf.bak   此处我们不再使用mod_jk模块
# vim mod_proxy.conf
   ProxyVia on
   ProxyRequests off
   ProxyPreserveHost on
   <Proxy balancer://lb>
       BalancerMember http://192.168.13.2:8080 loadfactor=1 route=TomcatA
       BalancerMember http://192.168.13.3:8080 loadfactor=1 route=TomcatA
   </Proxy>
   ProxyPass / balancer://lb/
   ProxyPa***everse / balancer://lb/
   <Location />
      Order Allow,Deny
      Allow from all
   </Location>
# service httpd restart

   

    Web浏览器测试

    wKioL1NveHTSSpSvAACKkDhOmB0554.jpg

     wKioL1NveIjSjYURAACQ0LF7A20299.jpg

      #####基于mod_proxy模块的使用实现了负载均衡



   接下来我们实现session绑定

   

# cd /etc/httpd/conf.d/
# vim mod_proxy.conf  修改如下行
  ProxyPass / balancer://lb/  stickysession=JSESSIONID
# service  httpd restart

 


   Web浏览器测试


    wKiom1NveWfzFb4HAACN-uKIca8685.jpg  

     ####session成功绑定


     

   lbmanager配置


   

#vim /etc/httpd/conf.d/mod_proxy.conf  添加如下内容
 <Location /lbmanager>
    SetHandler balancer-manager
 </Location>
 ProxyPass /lbmanager !
                                                                                                                       
# service  httpd restart


    Web浏览器访问http://172.16.13.4/lbmanager


    wKioL1Nve0fC7hfsAALlq2Tshrk617.jpg

 通过lbmanager这个界面我们可以对tomcat节点进行管理与监控  




PS:  水平有限,不妥之处请详细指出,不详尽之处请指出,有疑问之处请指出!