在配置之前先确保以下这些配置在conf/httpd.conf文件中是生效的
mod_proxy.so
mod_proxy_ajp.so
mod_proxy_balancer.so
mod_proxy_connect.so
mod_proxy_http.so
mod_headers.so
1. 配置反向代理
在conf/httpd.conf文件中增加以下配置
#在9000端口监听
Listen 9000
<VirtualHost *:9000>
ProxyRequests Off
ProxyPass / http://128.196.100.81:7001/
ProxyPassReverse / http://128.196.100.81:7001/
<Proxy *:9000>
Order Deny,Allow
Allow from all
</Proxy>
</VirtualHost>
这种配置只支持简单的反向代理,只能让请求转到一台服务器上,达不到负载均衡的效果
2. 配置负载均衡
#在9000端口监听
Listen 9000
<VirtualHost *:9000>
ProxyRequests Off
ProxyPass / balancer://weblogic/
ProxyPassReverse / balancer://weblogic/
<Proxy balancer://weblogic>
Order Deny,Allow
Allow from all
BalancerMember http://150.20.20.91:8001
BalancerMember http://150.20.20.92:8001
</Proxy>
</VirtualHost>
这种配置可以支持简单的负载均衡,但如果对应的服务是有状态的,就是要求维护会话状态(同一个用户登录后的请求会分发到同一台服务器上)的情况下这种配置是不行的
3. 配置负载均衡(支持会话维持)
#在9000端口监听
Listen 9000
<VirtualHost *:9000>
Header add Set-Cookie "routeId=.%{BALANCER_WORKER_ROUTE}e;path=/" env=BALANCER_ROUTE_CHANGE
ProxyRequests Off
ProxyPass / balancer://weblogic/ stickysession=routeId
ProxyPassReverse / balancer://weblogic/ stickysession=routeId
<Proxy balancer://weblogic>
Order Deny,Allow
Allow from all
BalancerMember http://150.20.20.91:8001 route=server1
BalancerMember http://150.20.20.92:8001 route=server1
</Proxy>
</VirtualHost>
这种配置可以支持维持会话的负载均衡,但只在weblogic上简单测试过,在其它服务器上没测试过
最后,如果要支持比较完整的负载均衡及集群容错的话最好是根据后端的服务器进行不同的配置,比如weblogic提供了一个专门的.so文件来与apache集成,而tomcat的话需要在配置中加上JSESSIONID这样配置,同时提供另一种ajp的方式来支持负载均衡。