1. 配置准备
a) 环境描述
本文在配置LVS 时使用三台安装了Asianux(linux 2.6.18‐128)的PC,一台做DirectorServer(172.16.23.58),两台做RealServer(172.16.23.57、172.16.23.61),供外部访问的虚拟IP(VIP): 172.16.23.78,另外访问此服务器使用了一台windows xp 系统。
系统中已经安装好了需要的软件ipvsadm,2.6.10 以后的linux 内核已经集成IPVS 内核补订了,所以不再需要重新编译内核。如果没有按照ipvsadm,可以按如下步骤安装:下载ipvsadm 管理程序,下载地址http://www.linuxvirtualserver.org/software/,注意对应自己的内核版本。
ipvsadm‐1.24.tar.gz
tar zxvf ipvsadm‐1.24.tar.gz
cd ipvsadm‐1.24
make
make install注意在make 时可能会出现很多错误的信息,请按照如下操作就可以心编译正常
ln ‐s /usr/src/kernels/2.6.9‐22.EL‐i686/ /usr/src/linux
cd ipvsadm‐1.24
make
make install
b) 配置DirectorServer
建立脚本director_lvs.sh,内容如下:
#!/bin/sh
VIP=172.16.23.78
RIP1=172.16.23.57
RIP2=172.16.23.61
GW=1172.16.61.254
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer"
# set the Virtual IP address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add ‐host $VIP dev eth0:0
/sbin/ipvsadm ‐C
/sbin/ipvsadm ‐A ‐t $VIP:80 ‐s rr
/sbin/ipvsadm ‐a ‐t $VIP:80 ‐r $RIP1:80 ‐g
/sbin/ipvsadm ‐a ‐t $VIP:80 ‐r $RIP2:80 ‐g
/sbin/ipvsadm
;;
stop)
echo "close LVS DirectorServer"
/sbin/ipvsadm ‐C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
备注:‐s rr 是使用了轮叫算法,可以自行选择相应的算法,更改rr 就可以了,ipvsadm ‐h 查看帮助。‐g 是使用lvs 工作DR 直接路由模式,也可自行修改),如果有多个realserver 直接添加就可以了,之后启动此脚本就可以了。
2. 配置RealServer 脚本
#!/bin/sh
VIP=172.16.23.78
/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
此脚本使realserver 不响应arp 请求,将此脚本分别在realserver 上执行就可以了。
3. 测试
a) 分别启动realserver 上的httpd 服务(/etc/init.d/httpd start)
b) 2、在realserver1 执行 echo "This is realserver1" > /var/www/html/index.html
c) 3、在realserver2 执行 echo "This is realserver2" > /var/www/html/index.html
d) 4、在另外的windows xp 系统机器上,打开IE 浏览器输入http:// 172.16.23.78,应该可以分别看到:This is realserver1,然后刷新变为This is realserver2,反复刷新,页面交替出现This isrealserver2 与This is realserver2,说明两台服务器都正常。