apache2.2+tomcat6备忘录

apache 配置注意事项

===================================JK================================
修改httpd.conf
ServerName 172.16.3.235
DocumentRoot "D:/tomcat6/webapps/mweb"
<Directory "D:/tomcat6/webapps/mweb">...
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理
JkMount /mweb1/* controller1
JkMount /*.jsp controller
JkMount /mweb/* controller
JkMount /balancer-manager/ stat

workers.properties配置
worker.list = controller,controller1,stat #由逗号分离开的worker名称列表
#========tomcat1========
worker.jvm1.port=8009  #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.jvm1.host=172.16.3.235 #tomcat的主机地址,如不为本机,请填写ip地址
worker.jvm1.type=ajp13
worker.jvm1.lbfactor=1  #server的加权比重,值越高,分得的请求越多
worker.jvm1.redirect=jvm2
#========tomcat2========
worker.jvm2.port=9009
worker.jvm2.host=172.16.3.161
worker.jvm2.type=ajp13
worker.jvm2.lbfactor=1
#========tomcat3========
worker.jvm3.port=8009
worker.jvm3.host=172.16.3.196
worker.jvm3.type=ajp13
worker.jvm3.lbfactor=1
worker.jvm3.redirect=jvm4
#========tomcat4========
worker.jvm4.port=8009
worker.jvm4.host=172.16.3.124
worker.jvm4.type=ajp13
worker.jvm4.lbfactor=1
worker.jvm4.activation=disabled
#========controller负载均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=jvm1,jvm2  #指定分担请求的tomcat
worker.controller1.type=lb
worker.controller1.balance_workers=jvm3,jvm4
#配置Status Worker利用这个Worker,可以获得负载的实时统计信息
worker.stat.type=status
#设置用于负载均衡的server的session可否共享
worker.controller.sticky_session=0
worker.controller.sticky_session_force=true
worker.controller1.sticky_session=1
worker.controller1.sticky_session_force=false

第一:sticky_session设置为1或true为粘性,设置为0或false无粘性。如果sticky_session设为true时,建议sticky_session_force设为false,此时表明如果集群中某台服务器在多次请求没有响应后,将转发当前的请求到其它服务器上处理。

第二:上述的jvm编号必须和Tomcat的jvmRout名称一致,如果不一致,也可以跑,但速度异常慢。ajp的通信端口则必须一致。

第三:worker配置上redirect和activation属性可以配置成互相复制Session的群组。Tomcat1,Tomcat3做为对外正常提供服务器,Tomcat2,Tomcat4作为分别对应的灾难恢复的备份Tomcat.即比如Tomcat1当机之后,Apache会自动将发给Tomcat1的请求转发Tomcat2上,而Tomcat2因为同步了Tomcat1的Session信息,因此从用户的角度,是感觉不出任何差异的。这样也降低了复制消耗。详细参考:http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html

workers.properties补充:
     当启动服务器的时候,Web服务器插件会把这些出现在worker.list属性中出现名字的worker实例化,而这些也就是你可以用来映射请求的。Workers的类型有:ajp12,ajp13,jni。lb是一个负载平衡worker。它知道怎样在一定容错范围内提供一个基于粘性负载的循环。ajpv13 针对SSL信息有专有的策略以便容器能够实现与SSL关联的方法,例如isSecure()。keepalive=1: 请求操作系统给连接(connection)发出 KEEP-ALIVE 信号recycle_timeout=300:试图使ajp13 连接于5分钟后断开(周期性的)

=============================ajp_proxy=============================
修改httpd.conf
启用模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
然后(不重要)
<IfModule dir_module>
     DirectoryIndex index.html index.jsp
</IfModule>
最下面加入
ProxyRequests Off
<proxy balancer://cluster>
#BalancerMember http://172.16.3.235:8080#http协议方式
BalancerMember ajp://172.16.3.235:8009 loadfactor=1 route=jvm1 status=+H
BalancerMember ajp://172.16.3.161:9009 loadfactor=1 route=jvm2
</proxy>
接着加入
ProxyPass / balancer://cluster stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
ProxySet lbmethod=bytraffic
#lbmethod=byrequests 按照请求次数均衡(默认)
#lbmethod=bytraffic 按照流量均衡
#lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)
如果要监控,可以加上,用http://ip/balancer-manager查看
<Location /balancer-manager>
    SetHandler balancer-manager
    order Deny,Allow
    Deny from all
    Allow from localhost
</Location>

TOMCAT集群详见:
http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
以及网上常见的:Tomcat集群Cluster实现原理剖析


你可能感兴趣的:(apache,jvm,tomcat,jsp,jni)