試用IPVS來做負(fù)載均衡,使用了1臺雙網(wǎng)卡服務(wù)器和2臺單網(wǎng)卡服務(wù)器,2個網(wǎng)段。服務(wù)器信息如下:

IP配置信息如下:
服務(wù)器 | 操作系統(tǒng) | 網(wǎng)卡 | IP |
調(diào)度服務(wù)器 | Centos | eth0 | 192.168.18.58 |
eth1 | 192.168.2.90 |
實際服務(wù)器 | Centos | eth0 | 192.168.2.71 |
Centos | eth0 | 192.168.2.72 |
1. 首先配置調(diào)度服務(wù)器:
a) IPVS模塊已經(jīng)內(nèi)置到linux2.6.x內(nèi)核中,可以通過下面的命令查看是否已安裝:
modprobe -l | grep ipvs
看到類似下面的輸出,表示已經(jīng)安裝了
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko
kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
b) 安裝IPVS的管理工具ipvsadm:
yum install -y ipvsadm
c) 清除表中所有記錄:
ipvsadm -C
使用下面的命令增加虛擬服務(wù)器,采用輪詢調(diào)度策略:
ipvsadm -A -t 192.168.18.58:8888 -s rr
使用下面的命令添加實際服務(wù)器,并采用NAT方式轉(zhuǎn)發(fā)數(shù)據(jù)包:
ipvsadm -a -t 192.168.18.58:8888 -r 192.168.2.71:9999 -m
ipvsadm -a -t 192.168.18.58:8888 -r 192.168.2.72:9999 -m
d) 打開數(shù)據(jù)包轉(zhuǎn)發(fā):
echo 1 > /proc/sys/net/ipv4/ip_forward
2. 接下來配置2臺實際服務(wù)器,分別做以下工作:
a) 在9999端口上啟動一個web服務(wù):
配置好web服務(wù)后,當(dāng)訪問http://192.168.2.71:9999時,頁面返回:This is 192.168.2.71.;當(dāng)訪問http://192.168.2.72:9999時,頁面返回:This is 192.168.2.72.
b) 設(shè)置默認(rèn)網(wǎng)關(guān)指向調(diào)度服務(wù)器
route del default
route add default gw 192.168.2.90
3. 測試
訪問192.168.18.58:8888,會顯示This is 192.168.2.71或This is 192.168.2.72,多次刷新應(yīng)該要交替出現(xiàn)71和72,但實際上并沒有這樣,瀏覽器只顯示與第一次相同的內(nèi)容,也就是ipvsadm每次都選擇了同一臺服務(wù)器。這是因為當(dāng)一個TCP連接的初始SYN報文到達(dá)時,IPVS就選擇了一臺服務(wù)器,后繼報文會被轉(zhuǎn)發(fā)到相同的服務(wù)器。這個TCP連接在ipvsadm中默認(rèn)有效時間為15分鐘,可以通過下面的命令查看:
ipvsadm -L --timeout
Timeout (tcp tcpfin udp): 900 120 300
現(xiàn)在將有效時間改為1秒來測試,使用下面的命令:
ipvsadm --set 1 120 300
再到瀏覽器中每隔1秒多點(diǎn)擊刷新,就會交替出現(xiàn)71和72,說明輪詢調(diào)度正在正常工作。