/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
# Since this is the Director we must be able to forward packets
echo 1 > /proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
/sbin/iptables -F
# Reset iptables counters.
/sbin/iptables -Z
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C
# Add an IP virtual service for VIP 192.168.0.219 port 80
# In this recipe, we will use the round-robin scheduling method.
# In production, however, you should use a weighted, dynamic scheduling method.
/sbin/ipvsadm -A -t $VIP:80 -s wlc
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 1
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 2
# Bring down the VIP interface
/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 "ipvs is running ..."
ipvsadm -L -n
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
;;
Esac
Realserver脚本:
RealServer脚本:
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
. /etc/rc.d/init.d/functions
VIP=192.168.0.219
host=`/bin/hostname`
case "$1" in
start)
# Start LVS-DR real server on this machine.
/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:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
stop)
# Stop LVS-DR real server loopback device(s).
/sbin/ifconfig lo:0 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)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
if [ ! "$islothere" -o ! "isrothere" ];then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;;
esac
但是在工作时常用DR模型;
DR:将请求的报文的目标MAC设定为挑选的RS的MAC地址
NAT:将请求报文的目标ip地址改为挑选的RS的ip地址,RS网关指向DIP
TUN:在原有的ip报文之外再次封装IP首部
防火墙标记的nat模型:
上述的前提配置配置好,
1:iptables -t mangle -A PREROUTING -t tcp -d 172.16.249.97 --dport 80 -j MARK --set-mark 10
2:ipvsadm -A -f 10 -s rr
3:ipvsadm -a -f 10 -r 10.0.0.3 -m -w 1
4::ipvsadm -a -f 10 -r 10.0.0.4 -m -w 2
持久连接的类型:
Pcc:在基于tcp或udp定义集群服饰,器端口为0,格式为VIP:0 表示任何一种来自用户的请求,统统转发到后端RS,基于持久连接时,来自同一个client所有的请求都转发到同一个RS、
-p:持久连接的时间
案例:
3:ipvsadm -A -t 172.16.249.2:0 -s wlc -p 360
4:ipvsadm -a -t 172.16.249.2:0 -r 10.0.0.3 -g -w 2
5::ipvsadm -a -t 172.16.249.2:0 -r 10.0.0.4 -g -w 1
PPC: 持久机制但服务单独调度
案例:
3:ipvsadm -A -t 172.16.249.2:80 -s rr -p 360
4:ipvsadm -a -t 172.16.249.2:80 -r 10.0.0.3 -m -w 1
5::ipvsadm -a -t 172.16.249.2:80 -r 10.0.0.4 -m -w 1
6:ipvsadm -A -t 172.16.249.2:22 -s rr -p 360
7:ipvsadm -a -t 172.16.249.2:22 -r 10.0.0.3 -m -w 1
8:ipvsadm -a -t 172.16.249.2:22 -r 10.0.0.4 -m -w 1
PFM: 单幅务调度、可以通过防火墙将多个协议定义为一个服务