Tomcat7+Apache2集群配置

来源:互联网 发布:得到市场调研数据分析 编辑:程序博客网 时间:2024/05/18 01:58
apache和tomcat的连接方法有三种:JK、http_proxy和ajp_proxy。最为常见的JK。

因为我们目前在用系统采用的是ajp_proxy方式,所以本文就说说ajp_proxy方式配置。


首先,安装apache和tomcat。需要注意的是:

采用proxy的连接方式,需要在Apache上加载所需的模块,

mod_proxy相关的模块有mod_proxy.so、mod_proxy_connect.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_ajp.so,

其中 mod_proxy_ajp.so 只在 Apache 2.2.x 中才有,还需要加载 mod_proxy.so 和 mod_proxy_ajp.so

1.配置apache的httpd.conf文件

加上Include conf.d/*.conf

然后创建conf.d目录,创建ajp_proxy.conf

2.修改ajp_proxy.conf

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

ProxyPass /MyWeb/ balancer://proxy_MyWeb/ stickysession=JSESSIONID|jsessionid nofailover=Off lbmethod=byrequests timeout=5 maxattempts=3

ProxyPassReverse /MyWeb/ balancer://prox_MyWeb/

<Proxy balancer://proxy_MyWeb>

BalancerMember ajp://173.36.22.132:8009/MyWeb/ loadfactor=1 route=jvm1

BalancerMember ajp://173.36.22.202:8009/MyWeb/ loadfactor=1 route=jvm2
</Proxy>

参数解释:

ProxyPass:代理转发Url,即将所有访问 /MyWeb/ 的请求转发到群集 balancer://proxy_MyWeb/

stickysession:均衡器粘连会话名称。该值常常会被设置为类似JSESSIONID或者PHPSESSIONID之类, 

stickysession=JSESSIONID ,启用粘性会话,为空则表示不启用粘性会话。默认为空。

nofailover :On 表示会话在worker出错或停掉时会中断,不支持故障转移;否则为off,支持故障转移。

lbmethod:选择负载的调度算法,默认byrequests表示轮询调度(就是1:1),bytraffic表示加权重的调度,需加 loadfactor指定权重值。

timeout:等待空闲worker的最大时间(秒)。没有设置则表示不等待。

maxattempts:failover之前的最大重试次数。

ProxyPassReverse /MyWeb/ balancer://proxy_MyWeb/

此指令使Apache调整HTTP重定向应答中Location, Content-Location, 

URI头里的URL。这样可以避免在Apache作为反向代理使用时,

后端服务器的HTTP重定向造成的绕过反向代理的问题。

这里balancer://是告诉Apache需要进行负载均衡的代理,这里的"clusterproxy_MyWeb"必须与上面的集群名保持一致。


BalancerMember为群集balancer://proxy_MyWeb的成员,即群集服务器A或B,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。 

<proxy balancer://proxy_MyWeb> 用于配置工作在tomcat集群中的所有节点,

Apache通过ajp协议与tomcat进行通信,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。

loadfactor是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,

如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。

route参数对应后续tomcat配置中的引擎路径 <Engine jvmRoute="jvm1">对应。其实ajp_proxy方式配置集群这里不用设置route,tomcat里边也不需要。

至此,mod_proxy方式APACHE负载均衡配置完成。

3.配置Tomcat(两个tomcat都要配)

a)找到<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>,去掉注释

b)给<Engine name="Catalina" defaultHost="localhost">配置 jvmRoute,如

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"/>

注意:这里的jvmRoute名字要和apache中的配置中保持一致

c)修改web应用WEB-INF目录下的web.xml文件 在</web-app>前加 <distributable />

d)确保session中attributes值必须实现java.io.Serializable接口,否则session同步会出异常。

4.测试均衡器

最后用用压力测试工具看看效果。可用Apache JMeter或者微软Microsoft Web Application Stress Tool进行简单压力测试。

只有在压力测试工具模拟大量用户同时访问系统,你才会发现多个tomcat控制台均有控制信息输出,那说明均衡器工作正常。
0 0