如何使用Apache作為前端負(fù)載均衡器(轉(zhuǎn)自李其的文檔)
在某些場(chǎng)景中,我們需要在前端放置一個(gè)Apache作為負(fù)載均衡器,后臺(tái)有若干臺(tái)Apusic或者其它的類似于Tomcat/WebLogic等應(yīng)用服務(wù)器,客戶端發(fā)送到Apache的請(qǐng)求,將被分配到后臺(tái)的這些真正完成請(qǐng)求的服務(wù)器上。本文描述如何使用Apache作為負(fù)載均衡器的方法和不同的負(fù)載均衡的配置。
?????? 在某些場(chǎng)景中,我們需要在前端放置一個(gè)Apache作為負(fù)載均衡器,后臺(tái)有若干臺(tái)Apusic或者其它的類似于Tomcat/WebLogic等應(yīng)用服務(wù)器,客戶端發(fā)送到Apache的請(qǐng)求,將被分配到后臺(tái)的這些真正完成請(qǐng)求的服務(wù)器上。本文描述如何使用Apache作為負(fù)載均衡器的方法。
?????? 我們假設(shè)Apahce安裝在 myserver 這臺(tái)服務(wù)器上,并且希望用戶訪問http://myserver/ 時(shí),能夠?qū)⑦@些請(qǐng)求被負(fù)載到后臺(tái)的兩臺(tái)服務(wù)器上,分別是:http://192.168.6.37:8080/ 和 http://192.168.6.37:6888/
?
一、安裝并重新編譯Apache
1、linux下Apache的安裝
下載最新的Apache安裝包httpd-2.2.3.tar.gz文件
1) 解壓
???????? gzip –d httpd-2.2.3.tar.gz
???????? tar xvf httpd-2.2.3.tar
2) 解壓以后,cd httpd-2.2.3 進(jìn)入解壓后的目錄,在終端執(zhí)輸入以下命令:
./configure --prefix=/usr/local/httpd --enable-so --enable-proxy --enable-proxy-ajp --enable-proxy-http --enable-proxy-ftp --enable-proxy-connect?--enable-proxy-balancer
????? 默認(rèn)情況下,Apache安裝是不會(huì)將這些文件編譯進(jìn)內(nèi)核,因此,需要人工加載,而通過上述操作,在編譯時(shí)會(huì)將這些DSO文件編譯到內(nèi)核中。
3) 在終端輸入:make
4) 在終端輸入:make install
5) 進(jìn)入Apache的bin目錄,在終端輸入apachectl –k start
6) 在瀏覽器中輸入http://myserver,默認(rèn)是80端口,如果出現(xiàn)It works!,說明Apache已經(jīng)正常啟動(dòng)。
2、window下Apache的安裝
1) 下載apache_2.2.2-win32-x86-no_ssl.msi版本或其他版本的apache
2) 點(diǎn)擊該文件,就可以直接安裝
3) 要配置負(fù)載均衡,進(jìn)入apache的安裝目錄下的conf目錄,打開httpd.conf文件,將文件中mod_proxy.so、 mod_proxy_ajp.so、mod_proxy_balancer.so、mod_proxy_connect.so、??mod_proxy_http.so 、mod_proxy_ftp.so所在行的注釋去掉,就可以進(jìn)行負(fù)載均衡的配置。
4) 在瀏覽器中輸入http://myserver,默認(rèn)是80端口,如果出現(xiàn)It works!,說明Apache已經(jīng)正常啟動(dòng)。
二、配置Apache作為L(zhǎng)oadBalance
將Apache作為L(zhǎng)oadBalance前置機(jī)分別有三種不同的部署方式,分別是:1 )輪詢均衡策略的配置
進(jìn)入Apache的conf目錄,打開httpd.conf文件,在文件的末尾加入:
ProxyPass / balancer://proxy/???????? #注意這里以"/"結(jié)尾
<Proxy balancer://proxy>
????? ?BalancerMember http://192.168.6.37:6888/
?????? BalancerMember http://192.168.6.38:6888/
</Proxy>
????? 我們來觀察上述的參數(shù)“ProxyPass / balancer://proxy/”,其中,“ProxyPass”是配置虛擬服務(wù)器的命令,“/”代表發(fā)送Web請(qǐng)求的URL前綴,如:http://myserver/或者h(yuǎn)ttp://myserver/aaa,這些URL都將符合上述過濾條件;“balancer://proxy/”表示要配置負(fù)載均衡,proxy代表負(fù)載均衡名;BalancerMember 及其后面的URL表示要配置的后臺(tái)服務(wù)器,其中URL為后臺(tái)服務(wù)器請(qǐng)求時(shí)的URL。以上面的配置為例,實(shí)現(xiàn)負(fù)載均衡的原理如下:
????? 假設(shè)Apache接收到http://localhost/aaa請(qǐng)求,由于該請(qǐng)求滿足ProxyPass條件(其URL前綴為“/”),該請(qǐng)求會(huì)被分發(fā)到后臺(tái)某一個(gè)BalancerMember,譬如,該請(qǐng)求可能會(huì)轉(zhuǎn)發(fā)到 http://192.168.6.37:6888/aaa進(jìn)行處理。當(dāng)?shù)诙€(gè)滿足條件的URL請(qǐng)求過來時(shí),該請(qǐng)求可能會(huì)被分發(fā)到另外一臺(tái)BalancerMember,譬如,可能會(huì)轉(zhuǎn)發(fā)到http://192.168.6.38:6888/。如此循環(huán)反復(fù),便實(shí)現(xiàn)了負(fù)載均衡的機(jī)制。
2) 按權(quán)重分配均衡策略的配置
ProxyPass / balancer://proxy/???????? #注意這里以"/"結(jié)尾
<Proxy balancer://proxy>
??????? BalancerMember http://192.168.6.37:6888/? loadfactor=3
??????? BalancerMember http://192.168.6.38:6888/? loadfactor=1
</Proxy>
????? 參數(shù)”loadfactor”表示后臺(tái)服務(wù)器負(fù)載到由Apache發(fā)送請(qǐng)求的權(quán)值,該值默認(rèn)為1,可以將該值設(shè)置為1到100之間的任何值。以上面的配置為例,介紹如何實(shí)現(xiàn)按權(quán)重分配的負(fù)載均衡,現(xiàn)假設(shè)Apache收到http://myserver/aaa 4次這樣的請(qǐng)求,該請(qǐng)求分別被負(fù)載到后臺(tái)服務(wù)器,則有3次連續(xù)的這樣請(qǐng)求被負(fù)載到BalancerMember為http://192.168.6.37:6888的服務(wù)器,有1次這樣的請(qǐng)求被負(fù)載BalancerMember為http://192.168.6.38:6888后臺(tái)服務(wù)器。實(shí)現(xiàn)了按照權(quán)重連續(xù)分配的均衡策略。
3) 權(quán)重請(qǐng)求響應(yīng)負(fù)載均衡策略的配置
ProxyPass / balancer://proxy/ lbmethod=bytraffic? #注意這里以"/"結(jié)尾
<Proxy balancer://proxy>
???????? BalancerMember http://192.168.6.37:6888/? loadfactor=3
???????? BalancerMember http://192.168.6.38:6888/ ?loadfactor=1
?</Proxy>
?????? 參數(shù)“l(fā)bmethod=bytraffic”表示后臺(tái)服務(wù)器負(fù)載請(qǐng)求和響應(yīng)的字節(jié)數(shù),處理字節(jié)數(shù)的多少是以權(quán)值的方式來表示的。“l(fā)oadfactor”表示后臺(tái)服務(wù)器處理負(fù)載請(qǐng)求和響應(yīng)字節(jié)數(shù)的權(quán)值,該值默認(rèn)為1,可以將該值設(shè)置在1到100的任何值。根據(jù)以上配置是這么進(jìn)行均衡負(fù)載的,假設(shè)Apache接收到http://myserver/aaa請(qǐng)求,將請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)服務(wù)器,如果BalancerMember為http://192.168.6.37:6888后臺(tái)服務(wù)器負(fù)載到這個(gè)請(qǐng)求,那么它處理請(qǐng)求和響應(yīng)的字節(jié)數(shù)是BalancerMember為http://192.168.6.38:6888 服務(wù)器的3倍(回想(2)均衡配置,(2)是以請(qǐng)求數(shù)作為權(quán)重負(fù)載均衡的,(3)是以流量為權(quán)重負(fù)載均衡的,這是最大的區(qū)別)。
注:每次修改httpd.conf,用apachectl –k restart重新啟動(dòng)Apache。
posted on 2008-03-04 16:08 zYx.Tom 閱讀(2778) 評(píng)論(1) 編輯 收藏