lvs dr tunl真實機指令碼

來源:互聯網
上載者:User

#!/bin/bash
#create lvs dr or tunl realservr scripts.
#chenjian 2011-09-23
 
VIP_LIST="192.168.116.20 192.168.116.21"
USAGE="Usage: $0 {start|stop|status} {dr|tunl}"
NAME=tunl
NUM=0
 
 
if [ -z $1 ]
then
    echo $USAGE 
    exit 2
fi
 
ACTION=`echo $1|tr A-Z a-z`
 
if ! [ $1 == status ]
then
    if [ -z $2 ]
    then
        echo $USAGE
        exit 2
    fi
fi
 
TYPE=`echo $2|tr A-Z a-z`
 
case "$1" in
start)
 
if [ $TYPE == dr ]
then
    if /sbin/ifconfig |grep lo: > /dev/null
    then
        /sbin/ifdown lo
        /sbin/ifup lo
    fi
    for vip in `echo $VIP_LIST`;do
        /sbin/ifconfig lo:$NUM  $vip netmask 255.255.255.255 broadcast $vip
        /sbin/route add -host $vip dev lo:$NUM
        NUM=`echo $[$NUM+1]`
    done
 
    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 >/dev/null 2>&1 
    echo "$TYPE RealServer Start [ OK ]"
elif  [ $TYPE == tunl ]
then
    for vip in `echo $VIP_LIST`;do
        if [ $NAME == tunl ]
        then
            NAME=tunl0
            /sbin/ifconfig "$NAME" $vip netmask 255.255.255.255
            /sbin/route add -host $vip dev $NAME
        else
            /sbin/ifconfig "$NAME":"$NUM" $vip netmask 255.255.255.255
            /sbin/route add -host $vip dev $NAME
        fi
        NUM=`echo $[$NUM+1]`
    done
    echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/tunl0/arp_filter
    echo 1 > /proc/sys/net/ipv4/conf/tunl0/forwarding
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
 
    sysctl -p >/dev/null 2>&1 
    echo "$TYPE RealServer Start [ OK ]"
else
    echo $USAGE
    exit 2
fi
;;
stop)
if [ $TYPE == dr ]
then
    for vip in `echo $VIP_LIST`;do
        /sbin/ifconfig lo:$NUM down
        /sbin/route del $vip
        NUM=`echo $[$NUM+1]`
    done
    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 
 
    sysctl -p >/dev/null 2>&1 
    echo "$TYPE RealServer Stop [ OK ]"
elif  [ $TYPE == tunl ]
then
        /sbin/ifconfig tunl0 down
 
        echo 0 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
        echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_filter
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
 
else
    echo $USAGE
    exit 2
fi
;;
status)
if /sbin/ifconfig |grep -q 'lo:'
then
    TYPE=dr
elif /sbin/ifconfig |grep -q 'tunl'
then
    TYPE=tunl
else
    exit 2
fi
    
for vip in `echo $VIP_LIST`;do
 
    if [ ! `/sbin/ifconfig |grep -q $vip` -o ! `netstat -rn |grep $vip` ];
    then
        echo "LVS-$TYPE real server stopped,vip = $vip"
    else 
        echo "LVS-$TYPE Running,vip = $vip"
    fi
done
 
;;
*)
echo "$USAGE"
exit 1
;;
esac 
 
作者“If one day”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.