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

IP配置信息如下:
服務器
|
操作系統
|
IP
|
IP別名
|
網關
|
調度服務器
|
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
|
直接路由方式工作在數據鏈路層,通過修改數據包的MAC地址,將數據包轉發到實際服務器上。實際服務器響應時直接發送給用戶端,而不經過調度器。
因為調度服務器并沒有修改數據包的IP地址,所以我們需要為實際服務器設置與調度服務器相同的IP別名,以使實際服務器接受數據包。
為調度服務器設置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
為實際服務器添加路由規則,使它不去尋找其他擁有這個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配置調度服務器:
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秒多點擊刷新,就會交替出現192.168.2.71和192.168.2.72。