设为首页 收藏本站
查看: 658|回复: 0

[经验分享] tomcat构建及session保持

[复制链接]

尚未签到

发表于 2018-12-2 14:21:02 | 显示全部楼层 |阅读模式
Tomcat是开放源码的web应用服务器。可以处理像asp,php,cgi,jsp等Apache不能处理的动态页面,但在处理静态资源能力不如Apache服务器,所以通常与Apache在同一台服务器上集成,形成一个可以同时高效处理动静资源的web服务器。


  Tomcat组件:
    顶级组件:Server
    服务类:Service
    连接器:http,https,ajp
    容器类:Engine,Host,Context
    被嵌套的组件:valve(访问控制),logger(日志),realm(用户认证),loader(加载                器),manager(管理器)
    集群类组件:listener(侦听器)
   

  Tomcat安装

    (1)系统自带的openjdk+tomcat
[root@node5 ~]# yum install -y java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64    修改环境变量,使其被系统应用:
[root@node5 ~]# vim /etc/profile.d/java.sh   http://s3.运维网.com/wyfs02/M00/7D/38/wKioL1biw3PxSjHRAAAJWatckxQ966.png
[root@node5 ~]# exec bash                #重读bash,取代之前的bash[root@node5 ~]# yum -y install tomcat.noarch tomcat-webapps.noarch tomcat-admin-webapps.noarch tomcat-lib.noarch               #安装tomcat及相应组件    这时可以通过systemctl start tomcat.service开启tomcat服务



    (2)使用Oracle JDK和tomcat主站提供的编译完成的程序包
[root@node5 ~]# rpm -ivh jdk-8u25-linux-x64.rpm    修改环境变量,使其被系统应用:
[root@node5 ~]# vim /etc/profile.d/java.sh    http://s4.运维网.com/wyfs02/M00/7D/39/wKioL1bixkPzdlkWAAAQaHpeHZY180.png
[root@node5 ~]#   exec bash                #重读bash,取代之前的bash
[root@node5 ~]#  tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local
[root@node5 ~]#  cd /usr/local
[root@node5 ~]#  ln -sv apache-tomcat-8.0.23 tomcat  #创建tomcat软链接
[root@node5 ~]#  vim /etc/profile.d/tomcat.sh      #修改环境变量    http://s4.运维网.com/wyfs02/M00/7D/3A/wKiom1bixvXyL5uTAAARO4qHV9o462.png
    添加tomcat脚本
#!/bin/bash
#
JAVA_HOME=/usr/java/latest
CATALINA_BASE=/usr/local/tomcat
PATH=$JAVA_HOME/bin:$CATALINA_BASE/bin:$PATH
export JAVA_HOME CATALINA_BASE PATH
case $1 in
start)
  exec $CATALINA_BASE/bin/catalina.sh start
  ;;
stop)
  exec $CATALINA_BASE/bin/catalina.sh stop
  ;;
restart)
  $CATALINA_BASE/bin/catalina.sh stop
  sleep 2
  exec $CATALINA_BASE/bin/catalina.sh start
  ;;
*)
  echo "Usage: `basename $0` (start|stop|restart)"
  exit 1
  ;;
esac    这时可以通过systemctl start tomcat.service开启tomcat服务


  Tomcat目录结构
    bin:存放各种平台下启动和关闭Tomcat的脚本文件
    lib:存放Tomcat服务器和所有web应用需要的jar包
    conf:Tomcat的各种配置文件,最重要的是server.xml
    logs:存放Tomcat的日志文件
    webapps:web应用的默认部署目录
    temp:临时文件目录


  Tomcat配置文件
    server.xml:主配置文件
    context.xml:每个webapp都可以专门的配置文件,这些配置文件通常位于webapp程序目录下的     WEB-INF目录中,用于定义会话管理,JDBC等;conf/context.xml是为各webapp提供             默认配置
    web.xml:每个webapp只在部署之后才能被访问;此文件则用于为各webapp定义默认的部署操作方     式
    tomcat-users.xml:用户认证的账号和密码配置文件
    catalina.policy:当使用-security选项来启动tomcat实例时会读取此配置文件来实现基于安全     策略的运行方式
    catalina。properties:java属性的定义文件,用于设定类加载器路径等,以及一些与JVM性能相     关的调优参数
    logging-properties:日志系统相关的配置


  手动添加一个测试应用程序
    (1)创建webapp特有的目录结构
[root@node5 ~]#  mkdir -pv myapp/{classes,lib,WEB-INF,META-INF}    (2)提供webapp的测试页面
[root@node5 ~]#  vim myapp/index.jsp    http://s4.运维网.com/wyfs02/M00/7D/39/wKioL1bizQ-zA1nQAAAkBpzSayI449.png


  构建LNMT
    Client --> http --> Nginx --> reverse_proxy (http) --> tomcat (http connector)

location /  {
    proxy_pass                  #nginx反向代理
}
location ~* \.(jsp|do)$ {
    proxy_pass                  #nginx动静分离
} 构建LAMT
    Client --> http --> httpd --> reverse_proxy_module (http) --> tomcat (http connector)
    Client --> http --> httpd --> reverse_proxy_module (ajp) --> tomcat (ajp connector)


    第一种方式:proxy_module, proxy_http_module
    第二种方式:proxy_module, proxy_ajp_module


    (1) 第一种方式的配置机制,使用虚拟主机

    ServerName tc1.yl.com
    ProxyRequests Off
    ProxyVia On
    ProxyPreserveHost On
   
        Require all granted
   
    ProxyPass / http://localhost:8080/
    ProxyPa***everse / http://localhost:8080/
   
        Require all granted
   
    (2)

    ServerName tc1.yl.com
    ProxyRequests Off
    ProxyVia On
    ProxyPreserveHost On
   
        Require all granted
   
    ProxyPass / ajp://localhost:8080/
    ProxyPa***everse / ajp://localhost:8080/
   
        Require all granted
   


  Tomcat会话保持
    (1)session sticky
        ①source ip
        ②cookie
    (2)session cluster
    (3)session server
        ①kv:memcached,redis


  方法一:(1)apache通过mod_proxy,mod_proxy_http,mod_proxy_balancer;
     tomcat通过http connector
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

    BalancerMember http://172.16.50.100:8080 loadfactor=10 route=TomcatA
    BalancerMember http://172.16.50.103:8080 loadfactor=10 route=TomcatB
    ProxySet stickysession=ROUTEID


    ServerName web1.magedu.com
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
        
            Require all granted
        
    ProxyPass / balancer://lbcluster1/
    ProxyPa***everse / balancer://lbcluster1/
        
            Require all granted
        

  (2)apache通过mod_proxy,mod_proxy_ajp,mod_proxy_balancer;
     tomcat通过ajp connector
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

    BalancerMember ajp://172.16.50.100:8080 loadfactor=10 route=TomcatA
    BalancerMember ajp://172.16.50.103:8080 loadfactor=10 route=TomcatB
    ProxySet stickysession=ROUTEID


    ServerName web1.magedu.com
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
        
            Require all granted
        
    ProxyPass / balancer://lbcluster1/
    ProxyPa***everse / balancer://lbcluster1/
        
            Require all granted
        
  

  (3)apache通过mod_jk
     tomcat通过ajp connector
    ①反向代理
     模块配置文件: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/  stat1     workers配置文件:worker.properties
worker.list=TomcatA,stat1
worker.TomcatA.port=8009
worker.TomcatA.host=172.16.50.100
worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1
worker.stat1.type = status    ②负载均衡
     模块配置文件: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  /*  lbcluster1
JkMount  /status/  stat1     workers配置文件:workers.properties
worker.list = lbcluster1,stat1
worker.TomcatA.type = ajp13
worker.TomcatA.host = 172.16.50.100
worker.TomcatA.port = 8009
worker.TomcatA.lbfactor = 1
worker.TomcatB.type = ajp13
worker.TomcatB.host = 172.16.50.103
worker.TomcatB.port = 8009
worker.TomcatB.lbfactor = 1
worker.lbcluster1.type = lb
worker.lbcluster1.sticky_session = 0
worker.lbcluster1.balance_workers = TomcatA, TomcatB
worker.stat1.type = status

  方法二:Session Cluster
    构建步骤:
    (1)各节点配置使用deltamanager

  
  
      
      
      
      
      
      
      
      
      
      
      
      
           (2)为需要使用session cluster的webapps开启session distribution的功能
     WEB-INF/web.xml中添加:
  

  方法三:构建session server(通过memcached)
   下载如下jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}要换成你所 需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。
  memcached-session-manager-${version}.jar
  memcached-session-manager-tc${6,7,8}-${version}.jar
  spymemcached-${version}.jar
  msm-javolution-serializer-${version}.jar
  javolution-${version}.jar


分别在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示

   


  在172.16.50.104上配置反向代理的负载均衡内容,类似如下所示:

    BalancerMember  http://172.16.50.100:8080 loadfactor=1
    BalancerMember  http://172.16.50.103:8080 loadfactor=1
    ProxySet  lbmethod=byrequests

ProxyVia Off
ProxyRequests Off
ProxyPass / balancer://tomcat/
ProxyPa***everse / balancer://tomcat/

    Request all granted


    Request all granted
  

  分别为两个context提供测试页面
  tomcatA


  TomcatA
  
    TomcatA.magedu.com
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  
  tomcatB


  TomcatB
  
    TomcatB.magedu.com
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  
  测试结果,在浏览器中访问http://172.16.50.104/test,结果如下所示,其session ID在负载均衡环境中保持不变。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642451-1-1.html 上篇帖子: Ubuntu 修改tomcat端口 下篇帖子: Docker创建tomcat镜像
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表