試用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ā)送給用戶(hù)端,而不經(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。