lvs dr tunl 真實機腳本

 

  1. #!/bin/bash 
  2. #create lvs dr or tunl realservr scripts. 
  3. #chenjian 2011-09-23 
  4.  
  5. VIP_LIST="192.168.116.20 192.168.116.21" 
  6. USAGE="Usage: $0 {start|stop|status} {dr|tunl}" 
  7. NAME=tunl 
  8. NUM=0 
  9.  
  10.  
  11. if [ -z $1 ] 
  12. then 
  13.     echo $USAGE  
  14.     exit 2 
  15. fi 
  16.  
  17. ACTION=`echo $1|tr A-Z a-z` 
  18.  
  19. if ! [ $1 == status ] 
  20. then 
  21.     if [ -z $2 ] 
  22.     then 
  23.         echo $USAGE 
  24.         exit 2 
  25.     fi 
  26. fi 
  27.  
  28. TYPE=`echo $2|tr A-Z a-z` 
  29.  
  30. case "$1" in 
  31. start) 
  32.  
  33. if [ $TYPE == dr ] 
  34. then 
  35.     if /sbin/ifconfig |grep lo: > /dev/null 
  36.     then 
  37.         /sbin/ifdown lo 
  38.         /sbin/ifup lo 
  39.     fi 
  40.     for vip in `echo $VIP_LIST`;do 
  41.         /sbin/ifconfig lo:$NUM  $vip netmask 255.255.255.255 broadcast $vip 
  42.         /sbin/route add -host $vip dev lo:$NUM 
  43.         NUM=`echo $[$NUM+1]` 
  44.     done 
  45.  
  46.     echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
  47.     echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
  48.     echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
  49.     echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
  50.     sysctl -p >/dev/null 2>&1  
  51.     echo "$TYPE RealServer Start [ OK ]" 
  52. elif  [ $TYPE == tunl ] 
  53. then 
  54.     for vip in `echo $VIP_LIST`;do 
  55.         if [ $NAME == tunl ] 
  56.         then 
  57.             NAME=tunl0 
  58.             /sbin/ifconfig "$NAME" $vip netmask 255.255.255.255 
  59.             /sbin/route add -host $vip dev $NAME 
  60.         else 
  61.             /sbin/ifconfig "$NAME":"$NUM" $vip netmask 255.255.255.255 
  62.             /sbin/route add -host $vip dev $NAME 
  63.         fi 
  64.         NUM=`echo $[$NUM+1]` 
  65.     done 
  66.     echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore 
  67.     echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce 
  68.     echo 0 > /proc/sys/net/ipv4/conf/tunl0/arp_filter 
  69.     echo 1 > /proc/sys/net/ipv4/conf/tunl0/forwarding 
  70.     echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
  71.     echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
  72.  
  73.     sysctl -p >/dev/null 2>&1  
  74.     echo "$TYPE RealServer Start [ OK ]" 
  75. else 
  76.     echo $USAGE 
  77.     exit 2 
  78. fi 
  79. ;; 
  80. stop) 
  81. if [ $TYPE == dr ] 
  82. then 
  83.     /sbin/ifconfig lo down 
  84.     /sbin/ifconfig lo up
  85.   
  86.     echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
  87.     echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
  88.     echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
  89.     echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
  90.   
  91.     sysctl -p >/dev/null 2>&1  
  92.     echo "$TYPE RealServer Stop [ OK ]" 
  93. elif  [ $TYPE == tunl ] 
  94. then 
  95.         /sbin/ifconfig tunl0 down 
  96.  
  97.         echo 0 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore 
  98.         echo 0 > /proc/sys/net/ipv4/conf/tunl0/arp_announce 
  99.         echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_filter 
  100.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore 
  101.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce 
  102.  
  103. else 
  104.     echo $USAGE 
  105.     exit 2 
  106. fi 
  107. ;; 
  108. status) 
  109. if /sbin/ifconfig |grep -q 'lo:' 
  110. then 
  111.     TYPE=dr 
  112. elif /sbin/ifconfig |grep -q 'tunl' 
  113. then 
  114.     TYPE=tunl 
  115. else 
  116.     exit 2 
  117. fi 
  118.      
  119. for vip in `echo $VIP_LIST`;do 
  120.  
  121.     if [ ! `/sbin/ifconfig |grep -q $vip` -o ! `netstat -rn |grep $vip` ]; 
  122.     then 
  123.         echo "LVS-$TYPE real server stopped,vip = $vip" 
  124.     else  
  125.         echo "LVS-$TYPE Running,vip = $vip" 
  126.     fi 
  127. done 
  128.  
  129. ;; 
  130. *) 
  131. echo "$USAGE" 
  132. exit 1 
  133. ;; 
  134. esac  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章