web server1:
VIP=172.16.1.100(指向director的VIP) ---> lo:1 (虚拟的ip) gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.10---->eth0
web server2:
VIP=172.16.1.100---> lo:1 (虚拟的ip) gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.20---->eth0
director的配置:
ifconfig eth0 172.16.1.200/24
ifconfig eth0:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev eth0:1
yum -y install ipvsadm
ipvsadm -A -t 172.16.1.100:80 -s wlc
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.10 -w 2 -g
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.20 -w 2 -g
web server1的配置:
ifconfig eth0 172.16.1.10/24
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
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i '$a ServerName 172.16.1.10:80' /etc/httpd/conf/httpd.conf
echo "this is web1 server" >> /var/www/html/index.html
service httpd restart
web server2的配置:
ifconfig eth0 172.16.1.20/24
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
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i '$a ServerName 172.16.1.20:80' /etc/httpd/conf/httpd.conf
echo "this is web2 server" >> /var/www/html/index.html
service httpd restart
DR模型的脚本
Real(web) server script
vim /etc/init.d/real
##################
#!/bin/bash
#script to start lvs-dr web server
. /etc/rc.d/init.d/functions
read -p "please input a ip for set up real server VIP:" VIP
case "$1" in
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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
/sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:1
;;
stop)
/sbin/ifconfig lo:1 down
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
islothere=`/sbin/ifconfig lo:1 | grep $VIP`
isrothere=`netstat -rn | grep "lo:1" | grep $VIP`
if [ ! "islothere" -o ! "isrothere" ];then
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
echo " Usage: $0 (start|status|stop)"
exit 1
;;
esac
###########保存退出 +x
service real start|stop|status
director script
vim /etc/init.d/ipvs
######
#!/bin/bash
#script to start lvs-dr director server
. /etc/rc.d/init.d/functions
VIP=
RIP1=
RIP2=
PORT=80
case "$1" in
start)
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/ipvsadm -C
ipvsadm -A -t $VIP:$PORT -s wlc
ipvsadm -a -t $VIP:$PORT -r $RIP1 -w 2 -g
ipvsadm -a -t $VIP:$PORT -r $RIP2 -w 2 -g
/bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:1 down
/sbin/route del $VIP
/bin/rm -f /var/lock/subsys/ipvsadm
echo "ipvs is stopped...."
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm is stopped..."
else
echo "ipvsadm is running..."
ipvsadm -L -n
fi
;;
*)
echo "$0: Usage: $0 (start|status|stop)"
exit 1
;;
esac
######保存退出 +x
service ipvs start|stop|status