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

[经验分享] tomcat服务器相关介绍一

[复制链接]

尚未签到

发表于 2018-11-30 06:44:02 | 显示全部楼层 |阅读模式
一、Tomcat是什么

       Tomcat是Apache在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器,tomcat侧重于servlet引擎,如果以standalone方式运行,可以作为web服务器来使用,支持JSP;tomcat是由java语言开发的,需要在java虚拟机上进行工作。
  

  二、Tomcat的常见的组件
服务器:ServerTomcat的一个实例,通常一个JVM只能包含一个Tomcat实例
服务:Service一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器
连接器:Connector负责连接客户端请求至Servlet容器内的Web应用程序;默认端口为http协议的8080;ajp协议的8009;https的8443
引擎:Engine检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端
虚拟主机:Host类似于apache的虚拟主机
上下文:Context 配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置
  

  三、Tomcat的配置文件说明
server.xmlTomcat的主配置文件,包含Service, Connector, Engine,Valve, Hosts主组件的相关配置信息;
web.xml遵循Servlet规范标准的配置文件,用于配置servlet
catalina.policyJava相关的安全策略配置文件
catalina.propertiesTomcat内部package的定义及访问相关的控制
tomcat-users.xml  认证时用到的相关角色、用户和密码等信息;
  Tomcat自带的manager默认情况下会用到此文件
logging.properties日志记录器相关的配置信息
  

  四、Tomcat简单的操作、基于nginx和apache的反向代理实现
  前提:在centos7上安装tomcat软件包;并启动,测试访问!
  准备:2台centos7虚拟主机,node1:172.16.116.231 ; node2:172.16.116.232
# yum install -y tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp
# systemctl start tomcat
# [root@node1 tomcat]# systemctl start tomcat.service
[root@node1 tomcat]# ss -tanl
State      Recv-Q Send-Q                  Local Address:Port                    Peer Address:Port
LISTEN     0      128                                 *:22                                 *:*     
LISTEN     0      100                         127.0.0.1:25                                 *:*     
LISTEN     0      1                    ::ffff:127.0.0.1:8005                              :::*     
LISTEN     0      100                                :::8009                              :::*     
LISTEN     0      100                                :::8080                              :::*     
LISTEN     0      128                                :::22                                :::*     
LISTEN     0      100                               ::1:25                                :::*  4.1、部署webapp

          deploy:将webapp的源文件放置于目标目录、配置tomcat服务器能够基于context.xml文件中定义的路径来访问此webapp; 将其特有类通过class loader装载至tomcat;可以自动部署和手动部署,这里介绍手动部署中的热部署,使用Tomcat自带的manager工具
[root@node1 ~] # cd /etc/tomcat
[root@node1 tomcat]# vim tomcat-users.xml
      
  
  
[root@node1 tomcat]# systemctl restart tomcat  
设置完成后,可以使用tomcat用户名和对应的密码访问Server Status|Manager App|Host Manager  

  4.2、Host定义  
[root@node1 tomcat]# vim server.xml      //编辑server.xml文件
  //添加node1虚拟主机
   
       //定义日志格式

[root@node1 tomcat]# mkdir -pv /web/{logs,webapps}   //提供测试页面


  Tomcat1 on node1
  
    Tomcat1.node1.com
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  

~      
windows设置hosts文件: 172.16.116.231 node1
  

  4.3、修改默认虚拟主机的方法
# vim /etc/tomcat/server.xml
  //defaultHost设置为默认的host即可  

  4.4、LNT实现方法(nginx反向代理用户请求至tomcat)
[root@node2 ~]# yum install -y nginx    //在node2上安装nginx
[root@node2 ~]# vim /etc/nginx/nginx.conf   //编辑nginx配置文件,加入下面一句
  location / {
     proxy_pass http://node1:8080/     //将客户端的所有请求都反向代理至node1
        }
//如果想动静分离,静态请求由nginx响应,动态请求由node1响应,需要进行下面的修改即可
  location ~* \.(jsp|do)$ {
    proxy_pass http://node1:8080/      //动静分离
    }

  

  4.5、LAT实现方法(apache反向代理用户请求至tomcat)
  准备工作;编辑 /etc/httpd/conf/httpd.conf将中心主机的DocumentRoot注释
  4.5.1、mod_proxy_http
[root@node2 ~]# cd /etc/httpd/conf.d/
[root@node2 conf.d]# vim mod_proxy_http.conf

    ServerName node2     //虚拟主机名
    ProxyVia On       //是否在响应头部加入via,即代理的主机名
    ProxyRequests Off    //关闭正向代理
    ProxyPreserveHost On   
   
     Require all granted        //允许所有主机访问
   
     ProxyPass / http://node1:8080/
        ProxyPa***everse / http://node1:8080/   //ProxyPa***everse作用就是反向代理
   
     Require all granted
   

  

  4.5.2、mod_proxy_ajp
  AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和 SERVLET容器 连接
[root@node2 conf.d]# vim mod_proxy_ajp.conf        

    ServerName node2
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
   
        Require all granted
   
    ProxyPass / ajp://node1:8009/
    ProxyPa***everse / ajp://node1:8009/  //将协议和端口改为ajp和8009即可
   
        Require all granted
   
                //测试没问题,就不截图了~~  

  4.5.3、mod_jk
         mod_jk 简称JK,是Apache服务器的一个可插入模块,用以为Apache提供处理JSP/Servlet的能力。mod_jk实质上是Apache与Tomcat的连接器,并附带提供集群和负载均衡的功能。
        apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。
  (1) mod_jk:额外编译安装
# yum groupinstall "Development tools"
# cd tomcat-connectors-1.2.40-src/native
# yum install -y httpd-devel                 
# which apxs           
 /usr/bin/apxs
# ./configure --with-apxs=/usr/bin/apxs  
#make && make install  

  (2)编辑mod_jk的模板配置文件
[root@node2 conf.d]# vim mod_jk.conf   
LoadModule  jk_module  modules/mod_jk.so              //让httpd加载jk模块
JkWorkersFile  /etc/httpd/conf.d/workers.properties    //jk的worker文件
JkLogFile  logs/mod_jk.log                            //日志文件
#JkLogLevel  debug
JkMount  /*  Tomcat1               
JkMount  /status/  stat1  

  (3)workers配置文件:workers.properties
[root@node2 conf.d]# vim workers.properties
worker.list=Tomcat1,stat1      
worker.Tomcat1.port=8009
worker.Tomcat1.host=172.16.116.231   
worker.Tomcat1.type=ajp13         //mod_jk只能使用ajp13协议
worker.Tomcat1.lbfactor=1           //权重
worker.stat1.type = status          //这个页面最好加入用户认证  http://s3.运维网.com/wyfs02/M00/74/F6/wKioL1YvlrmQwnhzAAHeiNOSnT4092.jpg
  

  五、tomcat 集群;实现session会话保持的3种方法介绍
  5.1、基于session会话绑定实现方法,nginx和apache测试!
       在原来的基础上再加入一台虚拟机做反向代理使用;node3:172.16.116.233
  5.1.1、nginx负载均衡至后端tomcat方法;基于session会话绑定实现
node1: 172.16.116.231        //配置tomcat1;修改并加入虚拟主机node1
# vim /etc/tomcat/server.xml


   
  


node2: 172.16.116.232       //配置tomcat2;修改并加入虚拟主机node2,
# vim /etc/tomcat/server.xml


   
  

node3: 172.16.116.233       //配置nginx负载均衡的反向代理
# vim /etc/nginx/nginx.conf        
upstream tomcatservs {           //在http段加入upstream上游服务器
        ip_hash ;               //源地址hash,将同一源地址的请求始终定向至某一上游服务器
       server node1:8080;         //达到session会话绑定的目的     
       server node2:8080;
     }
location / {                          //在server段中加入反向代理
       proxy_pass http://tomcatservs/      
    }  

  5.1.2、apache负载均衡至后端tomcat方法;基于session会话绑定实现
通过apache3种反向代理的方式进行测试

apache:tomcat
  mod_proxy
  mod_proxy_http
  mod_proxy_balancer
http connector    //http协议连接器
  mod_proxy
  mod_proxy_ajp
  mod_proxy_balancer
ajp connector     //ajp协议连接器
mod_jkajp connector    //ajp协议连接器

▲▲▲httpd负载均衡集群使用到的选项总结▲▲▲


lbfactor表示:后台服务器负载到由Apache发送请求的权值,该值为1到100之间的任何值。
BalancerMember:负载均衡集群中的成员
lbmethod表示:负载载均衡策略。
lbmethod=byrequests 按照请求次数均衡(默认)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)
ProxyPass表示:所有请求都会重定向到balancer://lbcluster1/处理。balancer是内置负载。
ProxyPa***everse表示:反向代理,也就是将所有的请求反向代理到负载均衡后的应用url路径中。
stickysession表示:进行Session复制使用


  ①mod_proxy_http 、http connector

node1 : 172.16.116.231
  //Engine加入jvmRoute标识
node2 : 172.16.116.232
//Engine加入jvmRoute标识
node3 : 172.16.116.233
[root@node3 conf.d]# vim mod_proxy_http.conf
header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

    BalancerMember http://172.16.116.231:8080 loadfactor=1 route=Tomcat1
    BalancerMember http://172.16.116.232:8080 loadfactor=1 route=Tomcat2
    ProxySet stickysession=ROUTEID               //根据routeid做session绑定


    ServerName node3
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
   
        Require all granted
   
    ProxyPass / balancer://lbcluster1/          //注意,要使用balancer
    ProxyPa***everse / balancer://lbcluster1/
   
        Require all granted
   
  http://s3.运维网.com/wyfs02/M02/74/F9/wKioL1YwNADS_qYKAAEi0qiSvYg900.jpg
  

  mod_proxy_ajp、ajp connector
[root@node3 conf.d]# vim mod_proxy_ajp.conf    //只需修改这个地方,其它不用修改即可实现
BalancerMember ajp://172.16.116.231:8009 loadfactor=1 route=Tomcat1
BalancerMember ajp://172.16.116.231:8009 loadfactor=1 route=Tomcat1  

  mod_jk、ajp connector
[root@node3 conf.d]# vim mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile  /etc/httpd/conf.d/workers.properties     //集群worker相关配置
JkLogFile  logs/mod_jk.log
JkLogLevel  error
JkMount  /*  lbcluster1
JkMount  /status/  stat1
[root@node3 conf.d]# vim workers.properties
worker.list = lbcluster1,stat1             //worker列表
worker.Tomcat1.type = ajp13        //Tomcat1是node1节点上的运行tomcat的jvm标识
worker.Tomcat1.host = 172.16.116.231      //ip或主机名都可以
worker.Tomcat1.port = 8009
worker.Tomcat1.lbfactor = 1
worker.Tomcat2.type = ajp13        //Tomcat2是node2节点上的运行tomcat的jvm标识
worker.Tomcat2.host = 172.16.116.232     //ip或主机名都可以   
worker.Tomcat2.port = 8009
worker.Tomcat2.lbfactor = 1             //权重
worker.lbcluster1.type = lb
worker.lbcluster1.sticky_session = 0    //是否绑定session会话;0为不绑定,1为绑定
worker.lbcluster1.balance_workers = Tomcat1, Tomcat2   //lbcluster1集群成员
worker.stat1.type = status  
  

  5.2、基于session 集群的方法,也就是session共享

  session manager:会话管理器;常用的管理器有4种
  StandardManager
  标准会话管理器

  PersistentManager
  持久会话管理器
FileStore :文件存储,可以存在nfs服务器上
JDBC :基于jdbc存储在后端的关系型数据库中,如mysql
DeltaManager   Manager用来在节点间拷贝Session,默认使用DeltaManager
  DeltaManager采用的一种all-to-all的工作方式,即集群中的节点会把
  Session数据向所有其他节点拷贝,而不管其他节点是否部署了当前应用
  BackupManager
  备用会话管理器
  当集群中的节点数量很多并且部署着不同应用时,可以使用
  BackupManager,BackManager仅向部署了当前应用的节点拷贝Session
   这里主要介绍DeltaManager的实现方法:
  前端的node3负载均衡的相关配置不需要改变,使用上述3种方式都可以,只需要在tomcat节点上修改;node1:172.16.116.231 ; node2:172.16.116.232 需要做如下的修改 ;根据官方文档实现
  http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html
[root@node2 ~]# mkdir /web/webapps/ROOT/{classes,lib,META-INF,WEB-INF} -pv
[root@node2 ~]# cp /usr/share/tomcat/webapps/ROOT/WEB-INF/web.xml /web/webapps/ROOT/WEB-INF/

运维网声明 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-641291-1-1.html 上篇帖子: Tomcat解决中文乱码之道(GET/POST) 下篇帖子: 第十六章 Tomcat 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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