Apache負(fù)載均衡的三大規(guī)則
現(xiàn)在,基本上所有的企業(yè)都會(huì)用上網(wǎng)絡(luò)進(jìn)行日常的工作。在企業(yè)的網(wǎng)絡(luò)運(yùn)轉(zhuǎn)中,傳輸和數(shù)據(jù)的收發(fā)處理并不是均勻分配的。那么,使用負(fù)載均衡技術(shù)就能達(dá)到一個(gè)平衡的概念。那么如何實(shí)現(xiàn)呢?如果都是購(gòu)置大型的負(fù)載均衡設(shè)備并不現(xiàn)實(shí),那么軟件的控制就是常用的手段了。現(xiàn)在就來介紹一下Apache的負(fù)載均衡的簡(jiǎn)單設(shè)置過程。
隨著訪問量的不斷提高,以及對(duì)響應(yīng)速度的要求,進(jìn)行負(fù)載均衡設(shè)置就顯得非常必要了。公司的系統(tǒng)在最初設(shè)計(jì)的時(shí)候就已經(jīng)考慮到了負(fù)載均衡的規(guī)劃,www靜態(tài)服務(wù)器配置了兩臺(tái),由于初期項(xiàng)目時(shí)間緊,并且訪問量并不高,所以當(dāng)時(shí)只用了一臺(tái),另一臺(tái)在內(nèi)網(wǎng)中,只是進(jìn)行了同步,并為發(fā)揮出效用來。此次就是對(duì)負(fù)載均衡的一個(gè)簡(jiǎn)單測(cè)試。
將Apache作為L(zhǎng)oadBalance前置機(jī)分別有三種不同的部署方式,分別是:
1)輪詢均衡策略的配置
進(jìn)入Apache的conf目錄,打開httpd.conf文件,在文件的末尾加入:
ProxyPass/balancer://proxy/#注意這里以"/"結(jié)尾
<Proxybalancer://proxy>
BalancerMemberhttp://192.168.6.37:6888/
BalancerMemberhttp://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é)尾
<Proxybalancer://proxy>
BalancerMemberhttp://192.168.6.37:6888/loadfactor=3
BalancerMemberhttp://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/aaa4次這樣的請(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é)尾
<Proxybalancer://proxy>
BalancerMemberhttp://192.168.6.37:6888/loadfactor=3
BalancerMemberhttp://192.168.6.38:6888/loadfactor=1
</Proxy>
參數(shù)“lbmethod=bytraffic"表示后臺(tái)服務(wù)器負(fù)載請(qǐng)求和響應(yīng)的字節(jié)數(shù),處理字節(jié)數(shù)的多少是以權(quán)值的方式來表示的。“loadfactor"表示后臺(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ū)別)。
根據(jù)不同的需要,可以按這三種方式進(jìn)行配置。我按照第三種配置的,感覺上這種對(duì)于負(fù)載的均衡更全面合理。我的配置很簡(jiǎn)單,如下:#p#
先配置均衡器:
<Proxybalancer://proxy>
BalancerMemberajp://127.0.0.1:8009/loadfactor=1
BalancerMemberhttp://192.168.10.6:8083/loadfactor=1
</Proxy>
其中http://192.168.10.6:8083實(shí)際上是另外一個(gè)端口啟動(dòng)的apache,為了測(cè)試,它就簡(jiǎn)單的直接轉(zhuǎn)發(fā)所有請(qǐng)求到tomcat。
對(duì)于上次的VirtualHost進(jìn)行以下的修改即可:
<VirtualHost*:80>
ServerNamewww.test.com
DocumentRoot/www
DirectoryIndexindex.htmlindex.jsp
<Directory"/www">
OptionsIndexesFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
</Directory>
<Directory"/control">
OptionsIndexesFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
</Directory>
ProxyPass/nxt/images/!
ProxyPass/nxt/js/!
ProxyPass/nxt/css/!
#ProxyPass/ajp://127.0.0.1:8009/
#ProxyPassReverse/ajp://127.0.0.1:8009/
ProxyPass/balancer://proxy/
ProxyPassReverse/balancer://proxy/
</VirtualHost>
注釋掉之前的ajp轉(zhuǎn)發(fā),而配置成通過balancer去處理。
通過觀察accesslog,的確有部分請(qǐng)求發(fā)送到了8083端口的apache上,而有部分是直接ajp轉(zhuǎn)發(fā)到tomcat上了。對(duì)于更多的負(fù)載均衡的參數(shù)檢測(cè),待空了再做。