读书人

调整Apache与Tomcat

发布时间: 2012-08-22 09:50:34 作者: rapoo

整合Apache与Tomcat

最近一系统需要以Apache+Tomcat的方式部署。经过查阅Apache和Tomcat官网资料(Apache官网, Tomcat连接其它服务器相关资料)后终于搞掂。在此记录下整合及部署过程中的一些关键内容。

??? 目前,Apache2.2连接Tomcat的方式有两种:一种是通过Apache自己的mod_proxy模块连接;一种是通过Tomcat自带的mod_jk模块。此次使用mod_jk方式进行连接。下面是步骤:

    在运行Apache的服务器上编译出mod_jk的二进制文件(linux为mod_jk.so文件),然后将该文件放到apache安装目录(以下简称为APACHE_HOME)的modules目录下在APACHE_HOME的conf目录下定义workers.properties和mod_jk.conf文件。workers.properties文件用于定义mod_jk连接Tomcat时的相关参数;mod_jk.conf文件作用和httpd.conf作用相同都是用于定义Apache及其模块的相关参数。设置workers.properties的一些参数时可能同时还需要设置Tomcat的server.xml文件。(具体可参考workers.properties详细介绍)
    以下worker.properties的内容为:定义了两个tomcat节点、一个负载均衡的工作线程和一个用于显示负载信息的线程。
    worker.list=node1,node2,balance_ctl,balance_stat# 定义连接tomcat的worker的公用属性worker.node_template.type=ajp13worker.node_template.lbfactor=1worker.node_template.socket_timeout=45worker.node_template.connection_pool_timeout=600#设置了connection_pool_timeout属性后,还要在tomcat的server.xml的AJP设置中加入connectionTimeout="6000000"此处的单位为毫秒worker.node_template.socket_keepalive=true#当apache与tomcat之间有防火墙时还要增加socket_keepalive属性#定义workerworker.node1.reference=worker.node_templateworker.node1.host=127.0.0.1worker.node1.port=8009worker.node1.redirect=node2#redirect指定当node1挂掉后转到node2处理worker.node2.reference=worker.node_templateworker.node2.host=xx.xx.xx.xxworker.node2.port=8009worker.node2.activation=disable#activation表示只有node1挂了将请求转到node2时node2才激活并开始工作# 用于做负载均衡worker.balance_ctl.type=lbworker.balance_ctl.balance_workers=node1,node2worker.balance_ctl.sticky_session=true#sticky_session设置为true时,还要在tomcat的server.xml的相应<Engine>加入jvmRoute="XXX"这里的jvmRout的值为上述定义worker的host对应的tomcat所在的机器的worker名字# 定义status用于查看apapche负载情况的实时信息worker.balance_stat.type=statusworker.balance_stat.read_only=true
    ?mod_jk.conf的内容:
    # 指定Apache加载mod_jk模块LoadModule    jk_module  modules/mod_jk.so#指明workers.properties文件的位置JkWorkersFile conf/workers.properties# 定义mod_jk的日志信息JkLogFile     logs/mod_jk.logJkLogLevel    infoJkLogStampFormat "[%a %b %d %H:%M:%S %Y] "#定义请求的映射JkMount  /*.jsp balance_ctl    #表示apache会将所有以.jsp结尾的请求都转发到balance_ctl工作线程处理JkMount  /*.do balance_ctlJkMount  /jkmanager/* balance_stat   # 这样就可以通过[ServerURL]/jkmanager/地址就可以实时查看服务器负载情况了  
    ?配置完成后先启动所有Tomcat再启动Apache。之后验证。
    停止时先停Apache再停止Tomcat。

读书人网 >Apache

热点推荐