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