Author : 岑文初
Email: wenchu.cenwc@alibaba-inc.com
Blog: http://blog.csdn.net/cenwenchu79
Date: 2009-5-26
目錄
需求轉而學習
“軟”負載均衡
LVS (Linux Virtual Server)
Virtual Server三種模式介紹
Virtual Server三種模式的比較
Virtual Server三種模式實踐
三種模式下的簡單壓力測試
HA-Proxy
HA-Proxy安裝和使用
HA-Proxy的壓力測試結果
“軟”負載學習心得
Virtual Server三種模式實踐
服務器資源:
10.2.225.128作為Load Balancer,10.2.225.136和10.2.225.139作為后端的服務器。
在10.2.225.136和10.2.225.139上分別安裝Apache2.2.14,然后打開80端口,啟動Web服務。
1. 安裝LVS配置工具(只需要在Load Balancer安裝即可)
Linux操作系統當前大部分都已經支持Virtual Server,因此不需要再去編譯內核,只需要下載和安裝用戶配置工具ipvsadmin。首先請查看自己Linux操作系統內核的版本,我的版本是2.6.18。從http://www.linux-vs.org/software/ipvs.html#kernel-2.6下載了ipvsadm-1.24.tar.gz。安裝步驟如下:
Tar –xzvf ipvsadm-1.24.tar.gz
Ln –s /usr/src/kernels/2.6.18-128.el5-i686 /usr/src/linux (這部必須作,因為在編譯和安裝的時候需要用到目錄/usr/src/linux來獲得必要的外部依賴庫)
Cd ipvsadm-1.24
Make && make install
輸入ipvsadm,如果看到以下內容證明安裝成功了:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
2. DR模式測試
a. 為10.2.225.128這臺Load Balancer的網卡綁定虛擬IP。
ifconfig eth0:0 10.2.225.211 netmask 255.255.255.0 broadcast 10.2.225.211 up
b. 在Load Balancer上建立虛擬IP。
Ipvsadm –A –t 10.2.225.211:80 –s rr //221 IP沒有實體機器在使用,因此作為虛擬IP使用,A表示建立虛擬IP,t表示是tcp協議,s表示負載算法,rr是Round Robin。
c. 在Load Balancer上建立虛擬IP與兩個實體服務器的關系。
ipvsadm -a -t 10.2.225.211:80 -r 10.2.225.136:80 -g -w 1 //將虛擬IP和端口關聯到實體機器上,a表示新建虛擬IP和實體機器的關聯關系,r后面跟實體機器地址和端口,g表示使用DR模式,w是權重。
ipvsadm -a -t 10.2.225.211:80 -r 10.2.225.139 :80 -g -w 1
d. 在另外兩臺實體服務器上建立虛擬IP與網卡回環的綁定關系。
ifconfig lo:0 10.2.225.211 netmask 255.255.255.255 broadcast 10.2.225.211 up
下圖就是配置好以后再輸入ipvsadm查看到的虛擬配置信息

其中Route表示就是DR的模式,然后圖中ActiveConn表示連接數,這里是訪問一個發布在兩臺后端服務器的頁面帶來的連接數,訪問頁面的情況如下兩張圖:(主要是看返回頁面中服務器ip打印的不同)


訪問頁面的結果和DR是一樣的,對虛擬IP的訪問,會輪詢到不同的后端服務器上。
三種模式下的簡單壓力測試
簡單的壓力測試采用Apache ab,500并發用戶,10w的請求總數。
|
總耗時(s)
|
TPS(#/sec)
|
NAT
|
22.480
|
4448.34
|
TUNNEL
|
10.707
|
9339.80
|
DR
|
10.177
|
9825.68
|
可以看出NAT性能要比后兩種差一倍。
LVS是從四層對消息進行負載轉發的,很大程度上是直接利用操作系統的特性來實現消息轉發,因此轉發損耗有限,但是NAT模式中Load Balancer對于性能的影響很大,同時對于負載壓力本身以及后臺節點數目有限制。在LVS基礎上有很多其他的開源軟件,增加了心跳等機制來保證集群的健壯性。而LVS并不能滿足根據應用參數或包體內容轉發請求的場景,因此進一步研究HA-Proxy,這種基于基于應用級別在7層對消息作分析轉發的負載均衡方案。