学海拾遗

生活、技术、思想无处不在学习
posts - 52, comments - 23, trackbacks - 0, articles - 3
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Apache和Tomcat整合

Posted on 2008-11-28 01:56 tanzek 阅读(1386) 评论(0)  编辑  收藏 所属分类: 技术学习
在之前的日子里面,使用SSH架在TOMCAT上面写了一个小项目,但是部门里最经常使用的是Apache+PHP,因此为了能够不开放更多的端口,就想试验下以前听过的将Apache和Tomcat进行整合。
在整合过程中,参考了很多内容,我都一一放在此文的末尾,供大家一起参阅。
其实本文的目标比较小,经过一些简单的了解后,可以使用Tomcat中的AJP监听端口来进行整合。但是查阅后才得知,使用此种方法还可以进行均衡负载(load-balancing)、失效备援(failover)等,但这里因为我还没有实践成功过,因此仅将本次操作的部分进行总结。

试验软件:
Apache 2.2.10
Tomcat 6.0.18

1、加入Apache中的mod_proxy支持
因为在Apache 2.2开始,使用mod_proxy_ajp来支持Apache JServ Protocol version 1.3了。所以,在这里我们只需启用此模块。当然为了更方便地进行代理,也可以把mod_proxy_相关的一些其它模块一起启用,在Apache中的httpd.conf如下:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules
/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules
/mod_proxy_balancer.so
LoadModule proxy_connect_module modules
/mod_proxy_connect.so
LoadModule proxy_ftp_module modules
/mod_proxy_ftp.so
LoadModule proxy_http_module modules
/mod_proxy_http.so
将这些项前面的#号去掉就可以了。

2、在Tomcat中配置AJP监听选项
在Tomcat中,默认就已经开放了AJP的监听选项,同时还开放了一个监听non-SSL HTTP/1.1的Connector,如下:
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout
="20000" 
               redirectPort
="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
在上面的配置中,就可以看出AJP的监听端口在8009上,HTTP/1.1浏览器监听在8080端口上。关于Connector的定义、配置及与其它元素之间的关系,大家可参考Apache Tomcat的官方文档,有对结构的完整描述[1]
同时,还需要设置jvmRoute来支持通过AJP的负载均衡,如下:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
在上述位置加入粗体部分的内容。

3、Apache最后配置
通过上面的步骤,我们就是要确定使用Apache的反向代理,将请求转至Tomcat的AJP监听端口上来正确处理。在Apache的httpd.conf中更改如下:
<IfModule dir_module>
    DirectoryIndex index.html index.jsp
</IfModule>
在上述元素节点中,加入粗体部分的文字内容,表示增加index.jsp作为默认首页。
同时可在最后加入如下内容:
ProxyRequests Off
ProxyPass 
/ balancer://cluster/
<proxy balancer://cluster>
    BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=tomcat1
</proxy>
注意其中的8009是与第1步中的AJP监听端口相对应,后面的route是与第1步中的jvmRoute相对应。

4、设置完成后,重新启动Apache和Tomcat。
这样子就成功了。

本次参考了大量的内容,主要有如下:
1、Apache Tomcat Architecture,http://tomcat.apache.org/tomcat-6.0-doc/architecture/index.html
2、Graham King:High availability Tomcat - Connect Tomcat servers to Apache and to each other to keep your site running,http://www.roseindia.net/software-tutorials/detail/6135,JavaWorld.com,2004-12-20
3、魏杰:Apache负载均衡+Tomcat集群,http://weijie.blog.51cto.com/340746/68195,2008-03-26
4、heavyz:Tomcat启动分析,http://docs.huihoo.com/apache/tomcat/heavyz/01-startup.html,2003-03-22
还有很多参考没办法列出来,在此对他们表示非常感谢。

只有注册用户登录后才能发表评论。


网站导航: