tomcat与apache http server集成

来源:互联网 发布:linux显卡驱动安装 编辑:程序博客网 时间:2024/04/28 13:14

tomcatapache http server的集成与负载均衡

因为看的资料比较老,所以搭建完环境后才发现jk插件已经不推荐使用,Apache 2.2自带了和tomcat集成的插件,目前jk插件已经停止更新(好像06年就停止更新了

tomcat是应用服务器,apacheweb服务器,虽然tomcat也可以处理html文件,但是处理的速度要比apache慢很多。当站点中包含大量的静态页面和小部分动态页面的时候,如果使用tomcat处理静态页面在性能上就显得不合适了。因此需要静态内容专门的交给IIS/Apache/Nignxweb服务器处理。

 

NignxApache的简单比较

相对而言Apache安全性更好些,但同样的配置环境负载能力不如Nginx,(技术上可以解决)

Nignx相比Apache安全性差些,但同样的配置环境负载能力高于Apache。国内的大公司都在使用Nignx,因为大公司利用服务器群LAMP搭建的环境成本远大于Nignx,

比如1000000w的访问量需要10LAMP环境服务器才能完成,但是Nignx可能只需要56台就够用了,这样对公司来说大大节约了成本。

 

    1、TomcatHttp server集成原理

Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。

tomcat默认情况下在conf/server.xml配置了两种连接器:

<connector port="8080" protocol="HTTP/1.1" <="" p="">              connectionTimeout="20000"               redirectPort="8443"/>

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。

第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。

Web客户访问Tomcat服务器上JSP组件的两种方式如下图所示。

 

  • JK插件

Tomcat提供了专门的JK插件来负责TomcatHTTP服务器的通信。应该把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客户请求时,它会通过JK插件来过滤URLJK插件根据预先配置好的URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理。

假定在预先配置好的URL映射信息中,所有“/*.jsp”形式的URL都由Tomcat服务器来处理,那么在图22-1的例子中,JK插件将把客户请求转发给Tomcat服务器,Tomcat服务器于是运行index.jsp,然后把响应结果传给HTTP服务器,HTTP服务器再把响应结果传给Web客户2

 

  • AJP协议

AJP是为TomcatHTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。

 

    2、 TomcatHttp server集成具体操作

  • 软件准备

    tomcat6

    apache httpd 2.0

    jk插件(前两个软件都比较好下载,这个插件比较难下载,所以给出链接地址)

    http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/

 

  • 配置jk插件

mod_jk.so放到Apachemodules目录下

conf目录下新建workers.properties,在文件中加入以下内容

worker.list =controller,tomcat1,tomcat2  #server 列表#========tomcat1========worker.tomcat1.port=8009         #ajp13 端口号,在tomcat下server.xml配置,默认8009worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat1.type=ajp13worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多#========tomcat2========worker.tomcat2.port=8007       #ajp13 端口号,在tomcat下server.xml配置,默认8007worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat2.type=ajp13worker.tomcat2.lbfactor = 1   #server的加权比重,值越高,分得的请求越多#========controller,负载均衡控制器========worker.controller.type=lbworker.controller.balance_workers=tomcat1,tomcat2   #指定分担请求的tomcatworker.controller.sticky_session=1


相关属性含义

JkMount用来指定URL映射信息,“JkMount  /*.jsp  worker1”表示“/*.jsp”形式的URL都由worker1代表的Tomcat服务器来处理;“JkMount  /helloapp/*  worker1”表示访问helloapp应用的URL都由worker1来处理。

 

 

  • 配置Apache

    在conf/httpd.conf中加入# 加载mod_jkLoadModule jk_module modules/mod_jk.so## 配置mod_jkJkWorkersFile conf/workers.propertiesJkLogFile logs/mod_jk.logJkLogLevel info##请求分发,对jsp文件,.do等动态请求交由tomcat处理JkMount /*.jsp controllerJkMount /*.action controllerJkMount /servlet/* controller

    注意上面的controller,这个就是负载均衡处理,对应workers.properties中的controller

这样就实现了把负载分发到tomcat1tomcat2,

  • 配置tomcat 6.0

为实现在workers.properties文件中,使用了两个tomcat,因此要在一个tomcat配置文件中声明两个tomcat实例(或者安装两个tomcat,修改为不同端口)。

配置如下:

 

 

实例化2tomcat

</connector port="8007"protocol="ajp></connector port="8009"protocol="ajp>

 

成功截图

Apache81端口,tomcat8080端口

静态页

动态页

 

 

注意:可以把

</connector port="8080"protocol="http>

注释掉,这样tomcat就不在接收http请求,而是只接收apache转发过来的请求。

注释掉后,通过localhost:8080无法访问tomcat


0 0
原创粉丝点击