43tfwed 发表于 2015-6-24 09:12:35

LVS DR 实现脚本

# director端脚本
# cat /etc/init.d/ipvs
#!/bin/bash
#
# LVS service script
# chkconfig: - 90 10

. /etc/rc.d/init.d/functions

#
VIP=172.16.100.100
DIP=172.16.100.10
RIP1=172.16.100.11
RIP2=172.16.100.12
PORT=80
RSWEIGHT1=1
RSWEIGHT2=2
LOCKFILE=/var/lock/subsys/ipvsadm

case $1 in
start)
    /sbin/ifconfig eth0:0 $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/iptables -Z
    /sbin/ipvsadm -C
    /sbin/ipvsadm -A -t $VIP:$PORT -s wrr
    /sbin/ipvsadm -a -t $VIP:$PORT -r $RIP1 -g -w $RSWEIGHT1
    /sbin/ipvsadm -a -t $VIP:$PORT -r $RIP2 -g -w $RSWEIGHT2
    /bin/touch $LOCKFILE &> /dev/null
    echo "ipvs is startd ..."
    ;;
stop)
    if[ ! -e $LOCKFILE ]; then
      echo " ipvs service is not started."
    else
      echo 0 > /proc/sys/net/ipv4/ip_forward
      /sbin/ipvsadm -C
      /sbin/ifconfig eth0:0 down
      /sbin/route del $VIP
      /bin/rm -f $LOCKFILE
      echo " ipvs is stopped."
    fi
    ;;
status)
    [ -e $LOCKFILE ] && echo " ipvs is running ..." || echo "ipvs is stopped ..."
    ;;
esac

# realserver端脚本
# cat /etc/init.d/realserver
#!/bin/bash
# lvs dr mode realserver script
# chkconfig: - 90 10

VIP=172.16.100.100

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:0 $VIP broadcast $VIP netmask 255.255.255.255 up
    /sbin/route add -host $VIP dev lo:0
    ;;
    stop)
    /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)
    ALIASVIP=`ifconfig lo:0 | grep $VIP`
    HOSTROUTE=`route -n | grep $VIP`
    if [ "$ALIASVIP" -o "$HOSTROUTE" ]; then
      echo " realserver is started .."
    else
      echo " realserver is stopped .."
    fi
    ;;
    *)
    echo "$0: Usage: $0 {start|stop|status}"
esac


页: [1]
查看完整版本: LVS DR 实现脚本