反向代理可以實現(xiàn)負載均衡這個是apache環(huán)境一個非常重要的功能了,今天我們一起來看看利用apache反向代理、負載均衡及會話保持的例子,希望下文可以幫助到各位.
apache的反向代理及負載均衡效率以及配置過程都比nginx麻煩,在這研究apache的負載均衡只是為了對比其它軟件的優(yōu)缺點.
測試過程如下,查看是否安裝proxy模塊:
- [root@localhost ~]# httpd -M | grep proxy
- httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain for ServerName
- Syntax OK
- proxy_module (shared)
- proxy_balancer_module (shared)
- proxy_ftp_module (shared)
- proxy_http_module (shared)
- proxy_ajp_module (shared)
- proxy_connect_module (shared)
查看是否已經(jīng)加載proxy模塊:
- [root@localhost ~]# cat /etc/httpd/conf/httpd.conf | grep proxy | grep -v “^#”
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
- LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
- LoadModule proxy_http_module modules/mod_proxy_http.so
- LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
- LoadModule proxy_connect_module modules/mod_proxy_connect.so
編輯httpd.conf配置文件,添加:
- #關(guān)閉正向代理
- ProxyRequests Off
- #添加響應(yīng)頭
- Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
- #負載均衡
- <Proxy balancer://cluster1>
- BalancerMember http://192.168.0.153:80 loadfactor=3 route=www1
- BalancerMember http://192.168.0.154:80 loadfactor=1 route=www2
- ProxySet lbmethod=byrequests stickysession=ROUTEID
- </Proxy>
- #對監(jiān)控頁面不傳到后端服務(wù)器
- ProxyPass /balancer-manager !
- ProxyPass / balancer://cluster1/ nofailover=On
- ProxyPassReverse / balancer://cluster1/
- #設(shè)置監(jiān)控頁
- <Location /balancer-manager>
- SetHandler balancer-manager
- Order Deny,Allow //Vevb.com
- Allow from all
- </Location>
loadfactor 參數(shù):
值越高,響應(yīng)的服務(wù)越多,取值在1到100之間.
lbmethod 參數(shù):
lbmethod=byrequests 按請求次數(shù)均衡(默認)
lbmethod=bytraffic 按流量均衡
lbmethod=bybusyness 按繁忙程度均衡(總是分配給活躍請求數(shù)最少的服務(wù)器)
會話保持功能:
route= 設(shè)置服務(wù)器id
stickysession=ROUTEID 使用服務(wù)器ID進行會話保持
apache英文手冊,中文版中沒有會話保持舉例:
http://www.rootop.org/ApacheManual/Apache2.2_en_US/mod/mod_proxy_balancer.html 重啟apache,測試.
打開頁面時,提示服務(wù)器500錯誤,查看日志:
- [warn] proxy: No protocol handler was valid for the URL /public/js/jquery.js. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
原因是ProxyPass / balancer://cluster1/ cluster1后面有個斜杠,而不是”balancer://cluster1″,跟網(wǎng)上大部分說的模塊加載沒關(guān)系.
新聞熱點
疑難解答
圖片精選