环境:
lvs director: 10.57.220.198:80 Ubuntu 10.04 LTS vmware 虚拟机
real server1 10.57.220.195:80 Ubuntu 11.10 nginx服务器
real server2 10.57.220.20:80 Ubuntu 11.10 nginx服务器
虚拟ip(vip):10.57.220.144
1、下载 ipvsadm
分别在3台机器上下载
apt-get install ipvsadm
2、ipvsadm设置
dpkg-reconfigure ipvsadm
第一个选no (automatically load ipvs rules on boot?)
第二个选none
3、配置脚本
1)director脚本
lvs-dr.sh
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
IPVSADM='/sbin/ipvsadm'
VIP=10.57.220.144
RS1=10.57.220.20
RS2=10.57.220.195
ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
route add -host $VIP dev eth0:1
$IPVSADM -C
$IPVSADM -A -t $VIP:81 -s rr
$IPVSADM -a -t $VIP:81 -r $RS1:81 -g -w 1
$IPVSADM -a -t $VIP:81 -r $RS2:81 -g -w 1
chmod 777 lvs-dr.sh
2)realserver脚本
所有realserver相同
lvs-rs.sh
#!/bin/bash
#Description : RealServer
#Write by:hugwww
#Last Modefiy:2009.1.24
VIP=10.57.220.144
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
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
sysctl -p
#end
chmod 777 lvs-rs.sh
4、执行、测试
分别在三个机器上执行相应脚本
注意事先启动。nginx 服务器
firfox访问 10.57.220.144:81
可用ipvsadm -ln查看状态
5、注意问题
防火墙要关闭,linux下是iptables
各服务器 端口一致,否则不通。比如都是80端口,不能有的是80,有的是81。
本案例中vip和真实ip都是在同一网段,vip可以和real ip不同网段,可参考章博士的回答 http://zh.linuxvirtualserver.org/node/155。负载调度器只要有一个网口和真实服务器是通过不分段的网络连接起来就可以。真实服务器可以通过自己的路由器将响应报文发送给客户。