試用IPVS的直接路由方式來(lái)做負(fù)載均衡。服務(wù)器信息如下:

IP配置信息如下:
服務(wù)器
|
操作系統(tǒng)
|
IP
|
IP別名
|
網(wǎng)關(guān)
|
調(diào)度服務(wù)器
|
Centos
|
192.168.2.90
|
192.168.2.99
|
192.168.2.1
|
實(shí)際服務(wù)器
|
Centos
|
192.168.2.71
|
192.168.2.99
|
192.168.2.1
|
Centos
|
192.168.2.72
|
192.168.2.99
|
192.168.2.1
|
直接路由方式工作在數(shù)據(jù)鏈路層,通過(guò)修改數(shù)據(jù)包的MAC地址,將數(shù)據(jù)包轉(zhuǎn)發(fā)到實(shí)際服務(wù)器上。實(shí)際服務(wù)器響應(yīng)時(shí)直接發(fā)送給用戶端,而不經(jīng)過(guò)調(diào)度器。
因?yàn)檎{(diào)度服務(wù)器并沒(méi)有修改數(shù)據(jù)包的IP地址,所以我們需要為實(shí)際服務(wù)器設(shè)置與調(diào)度服務(wù)器相同的IP別名,以使實(shí)際服務(wù)器接受數(shù)據(jù)包。
為調(diào)度服務(wù)器設(shè)置IP別名:
ifconfig eth1:0 192.168.2.99
IP別名與原來(lái)的IP地址在使用上并沒(méi)有什么不同,這里可以ping通90和99兩個(gè)IP。
為實(shí)際服務(wù)器設(shè)置IP別名:
ifconfig lo:0 192.168.2.99 broadcast 192.168.2.99 netmask 255.255.255.255 up
為實(shí)際服務(wù)器添加路由規(guī)則,使它不去尋找其他擁有這個(gè)IP的服務(wù)器:
route add -host 192.168.2.99 dev lo:0
防止實(shí)際服務(wù)器響應(yīng)針對(duì)IP別名的ARP廣播:
echo 1>/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2>/proc/sys/net/ipv4/conf/lo/arp_announce
echo 1>/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2>/proc/sys/net/ipv4/conf/all/arp_announce
使用ipvsadm配置調(diào)度服務(wù)器:
ipvsadm -A -t 192.168.2.99:8888 -s rr
ipvsadm -a -t 192.168.2.99:8888 -r 192.168.2.71:8888 -g
ipvsadm -a -t 192.168.2.99:8888 -r 192.168.2.72:8888 -g
使用下面的命令將連接有效時(shí)間改為1秒來(lái)測(cè)試,:
ipvsadm --set 1 120 300
瀏覽器訪問(wèn)http://192.168.2.99:8888,每隔1秒多點(diǎn)擊刷新,就會(huì)交替出現(xiàn)192.168.2.71和192.168.2.72。