henda 发表于 2019-1-3 13:57:58

lvs dr tunl 真实机脚本


[*]#!/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

[*]    /sbin/ifconfig lo down
[*]    /sbin/ifconfig lo up

[*]
[*]    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




页: [1]
查看完整版本: lvs dr tunl 真实机脚本