試用IPVS的直接路由方式來做負載均衡。服務器信息如下:

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