在配置以前先確保如下這些配置在conf/httpd.conf文件中是生效的web
mod_proxy.soapache
mod_proxy_ajp.so後端
mod_proxy_balancer.sotomcat
mod_proxy_connect.so服務器
mod_proxy_http.sosession
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>
這種配置只支持簡單的反向代理,只能讓請求轉到一臺服務器上,達不到負載均衡的效果code
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的方式來支持負載均衡。