Friday, April 03, 2009

关于 Apache httpd 的模块 mod_jk.so

Apache Http 整合 Tomcat 集群及负载均衡,首先,Apache Http整合Tomcat有很多方法,主要的两个方法是用mod_jk和mod_proxy_ajp模块整合,其中jk是Tomcat专供链接Apache Http使用的,性能稳定,但缺点是配置稍比porxy_ajp复杂;porxy_ajp使用代理转发,他们都是通过把符合条件的URI通过ajp通讯交给Tomcat的ajp通讯端口处理实现整合;其中,jk通过更详细的URI配置,可以详细到文件名,但proxy_ajp就只能实现匹配目录,所以jk更适合Tomcat与Apache Http的整合。

首先使用jk来整合,Linux和Windows平台,可直接下载Tomcat编译好的二进制模块文件mod_jk.so,使用Unix平台部分需要手动编译;

在FreeBSD7中安装编译,已经安装配置好JDK16和Tomcat6还有Apache22,推荐使用ports安装,安装编译mod_jk更方便,基本不会出错:

#cd /usr/ports/www/mod_jk-apache2 ; make install clean ; rehash

完成后,在/usr/local/libexec能找到编译好的mod_jk.so,说明成功。在/usr/local/etc/apache22里能找到jk配置的例子文件mod_jk.conf.sample和workers.properties.sample,参考配置。

#ee /usr/local/etc/apache22/httpd.conf

include etc/apache22/extra/httpd-jk.conf

#ee /usr/local/etc/apache22/extra/httpd-jk.conf

LoadModule jk_module libexec/apache22/mod_jk.so

JkWorkersFile etc/apache22/workers.properties
JkMountFile etc/apache22/uriworkermap.properties
JkLogFile /var/log/mod_jk.log
JkLogLevel error

# ee etc/apache22/workers.properties

worker.list = tomcat

worker.tomcat.port = 8009
worker.tomcat.host= tomcat-hostname
worker.tomcat.type= ajp13
worker.tomcat.lbfactor= 1

#ee etc/apache22/uriworkermap.properties

/*.jsp = tomcat
/*servlet/* = tomcat
/*.do = tomcat
/*.action = tomcat

启用Tomcat的ajp通讯,默认是开启的端口是8009,上面的配置能实现Apache Http和Tomcat的整合;

稍后在下面的方法是用多个Tomcat实现集群和负载均衡,性能增强,容错能力增加。(未完,待续...)

No comments: