porxy負(fù)載均衡的驗(yàn)證
在我們學(xué)習(xí)負(fù)載均衡的一些軟件配置的時(shí)候,很多朋友或者網(wǎng)友都會(huì)參考網(wǎng)絡(luò)上面的一些資料,但是由于很多文章是源于博文的一些內(nèi)容,正確性本身就存在著一些差異。那么我們?cè)跒g覽文章之后需要對(duì)這個(gè)程序***進(jìn)行一個(gè)實(shí)際的操作,看看其中有沒有什么錯(cuò)誤?,F(xiàn)在我們就來分享一篇關(guān)于porxy的負(fù)載均衡模塊的測(cè)試內(nèi)容。
由于一些歷史遺留問題,需要使用lighttpd的mod_porxy模塊進(jìn)行負(fù)載均衡,于是對(duì)mod_porxy 支持的3種負(fù)載均衡算法進(jìn)行了簡(jiǎn)單測(cè)試。大致的過程如下:
1、mod_porxy 3種負(fù)載均衡的含義
a)fair(默認(rèn))
根據(jù)各節(jié)點(diǎn)負(fù)載均衡情況,進(jìn)行動(dòng)態(tài)調(diào)配。
b)hash
對(duì)url進(jìn)行hash,將同樣的請(qǐng)求轉(zhuǎn)發(fā)到同一節(jié)點(diǎn)。
c)round-robin
各節(jié)點(diǎn)輪訓(xùn)輪發(fā)
2、測(cè)試環(huán)境
lighttpd節(jié)點(diǎn):192.168.0.1
web節(jié)點(diǎn)A : 192.168.0.2
web節(jié)點(diǎn)B : 192.168.0.3
訪問節(jié)點(diǎn)C: 192.168.0.4
配置文件內(nèi)容:
- $HTTP["url"] == ".shtml" {
- proxy.balance = "fair"
- # proxy.balance = "round-robin"
- # proxy.balance = "hash"
- proxy.server = (
- "" => ( ( "host" => "192.168.0.2", "port" => 80 ) ,
- ( "host" => "192.168.0.3", "port" => 80 ) )
- )
- }
3、關(guān)于模塊負(fù)載均衡的測(cè)試方法
a)測(cè)試fair、round-robin
使用siege在節(jié)點(diǎn)C發(fā)送1000個(gè)相同url到節(jié)點(diǎn)A,分別測(cè)試fair、round-robin
siege -c 100 -r 10 -u http://192.168.0.1/test.shtml
b)hash
通過線上訪問日志生成1000個(gè)不同url寫入文件test.txt,使用siege讀取url測(cè)試hash
siege -c 100 -r 10 -f test.txt
4、porxy負(fù)載均衡測(cè)試結(jié)果
通過統(tǒng)計(jì)A、B節(jié)點(diǎn)訪問日志發(fā)現(xiàn),只有fair方式調(diào)度2個(gè)服務(wù)端口比較均衡。而hash、round-robin算法將訪問全都轉(zhuǎn)發(fā)到配置文件中靠前的 A節(jié)點(diǎn),而靠后的B節(jié)點(diǎn)基本沒有請(qǐng)求。
看來只有fair方式比較靠譜,hash、round-robin形同虛設(shè)沒有什么意義。
5、關(guān)于fail-over
a)fair
具備端口監(jiān)測(cè)功能,可以自動(dòng)屏蔽問題節(jié)點(diǎn)。當(dāng)lighttpd檢測(cè)A節(jié)點(diǎn)掛掉,當(dāng)前請(qǐng)求就會(huì)503錯(cuò)誤返回,下一個(gè)請(qǐng)求才會(huì)轉(zhuǎn)到B節(jié)點(diǎn)。A節(jié)點(diǎn)恢復(fù)后,lighttpd不會(huì)自動(dòng)恢復(fù)對(duì)A節(jié)點(diǎn)的轉(zhuǎn)發(fā),需要重啟lighttpd才能恢復(fù)。
b)round-robin
不具備端口監(jiān)測(cè),節(jié)點(diǎn)掛掉后也會(huì)不停轉(zhuǎn)發(fā)請(qǐng)求。
mod_proxy做負(fù)載均衡確實(shí)存在不小的問題,如需要使用建議使用fair算法。