tomcat与apache http server集成
2014-09-12 15:43
579 查看
tomcat与apache http server的集成与负载均衡
因为看的资料比较老,所以搭建完环境后才发现jk插件已经不推荐使用,Apache 2.2自带了和tomcat集成的插件,目前jk插件已经停止更新(好像06年就停止更新了)
tomcat是应用服务器,而apache是web服务器,虽然tomcat也可以处理html文件,但是处理的速度要比apache慢很多。当站点中包含大量的静态页面和小部分动态页面的时候,如果使用tomcat处理静态页面在性能上就显得不合适了。因此需要静态内容专门的交给IIS/Apache/Nignx等web服务器处理。
Nignx和Apache的简单比较
相对而言Apache安全性更好些,但同样的配置环境负载能力不如Nginx,(技术上可以解决)
Nignx相比Apache安全性差些,但同样的配置环境负载能力高于Apache。国内的大公司都在使用Nignx,因为大公司利用服务器群LAMP搭建的环境成本远大于Nignx,
比如1000000w的访问量需要10台LAMP环境服务器才能完成,但是Nignx可能只需要5、6台就够用了,这样对公司来说大大节约了成本。
1、Tomcat与Http 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插件来负责Tomcat和HTTP服务器的通信。应该把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客户请求时,它会通过JK插件来过滤URL,JK插件根据预先配置好的URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理。
假定在预先配置好的URL映射信息中,所有“/*.jsp”形式的URL都由Tomcat服务器来处理,那么在图22-1的例子中,JK插件将把客户请求转发给Tomcat服务器,Tomcat服务器于是运行index.jsp,然后把响应结果传给HTTP服务器,HTTP服务器再把响应结果传给Web客户2。
AJP协议
AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。
2、 Tomcat与Http server集成具体操作
软件准备
tomcat6
apache httpd 2.0
jk插件(前两个软件都比较好下载,这个插件比较难下载,所以给出链接地址)
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
配置jk插件
把mod_jk.so放到Apache的modules目录下
在conf目录下新建workers.properties,在文件中加入以下内容
worker.list =controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8007 #ajp13 端口号,在tomcat下server.xml配置,默认8007
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=1
相关属性含义
JkMount用来指定URL映射信息,“JkMount /*.jsp worker1”表示“/*.jsp”形式的URL都由worker1代表的Tomcat服务器来处理;“JkMount /helloapp/* worker1”表示访问helloapp应用的URL都由worker1来处理。
配置Apache
在conf/httpd.conf中加入
# 加载mod_jk
LoadModule jk_module modules/mod_jk.so
#
# 配置mod_jk
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
#
#请求分发,对jsp文件,.do等动态请求交由tomcat处理
JkMount /*.jsp controller
JkMount /*.action controller
JkMount /servlet/* controller
注意上面的controller,这个就是负载均衡处理,对应workers.properties中的controller。
这样就实现了把负载分发到tomcat1和tomcat2,
配置tomcat 6.0
为实现在workers.properties文件中,使用了两个tomcat,因此要在一个tomcat配置文件中声明两个tomcat实例(或者安装两个tomcat,修改为不同端口)。
配置如下:
实例化2个tomcat
</connector port="8007"protocol="ajp></connector port="8009"protocol="ajp>
成功截图
Apache是81端口,tomcat是8080端口
静态页
动态页
注意:可以把
</connector port="8080"protocol="http>
注释掉,这样tomcat就不在接收http请求,而是只接收apache转发过来的请求。
注释掉后,通过localhost:8080无法访问tomcat
相关文章推荐
- Apache HTTP Server与Tomcat集成实践
- Apache HTTP Server与Tomcat集成实践
- Tomcat与Apache Http Server集成实现负载均衡(二)
- Apache HTTP Server与Tomcat集成实践
- Apache Httpserver 集成Tomcat,在Tomcat未启动时 Error 503错误页的一种配置方式
- Tomcat与Apache Http Server集成实现负载均衡(一)
- 在Linux(Fedora 16)上配置Tomcat 7.0.x 和Apache Http Server 2.2.x 集成
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- apache http server 和tomcat整合
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍息
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- Apache Http server +tomcat 实现域名重写配置
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- Apache http Server与Tomcat整合 2
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍(转载)
- Apache Http Server和Tomcat 之区别