因为我们目前在用系统采用的是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.so1.配置apache的httpd.conf文件
加上Include conf.d/*.conf
然后创建conf.d目录,创建ajp_proxy.conf2.修改ajp_proxy.conf
LoadModule proxy_ajp_module modules/mod_proxy_ajp.soProxyPass /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控制台均有控制信息输出,那说明均衡器工作正常。