脚本实现LVS自动摘除故障RS
基于端口(此法不优):
[root@oldboy sbin]# cat health_check
#!/bin/sh
VIP=10.0.0.29
PORT="80"
RIP=(
        10.0.0.17
        10.0.0.18
     )
while true
do
 for ((i=0; i<`echo ${#RIP[*]}`; i++))
 do  
   PORT_COUNT=`nmap ${RIP[$i]} -p $PORT|grep open|wc -l`
   [ $PORT_COUNT -ne 1 ] && {
    ipvsadm -d -t $VIP:$PORT -r ${RIP[$i]}:$PORT
    echo "${RIP[$i]}">>/tmp/rs.log
   }
 done
 sleep 10
done
提示:此法缺点1)端口检查不准确(但是使用的特别多)。2)nmap检查时间有点长。
改进BUG的脚本
[root@lvs-1-1 scripts]# cat check_rs.sh 
#!/bin/sh
#created by oldboy 201308
VIP=10.0.0.29
PORT=80
RIP=(
10.0.0.17
10.0.0.18
)
while true
do
  for((i=0;i<${#RIP[*]};i++))
  do 
     PORT_COUNT=`nmap ${RIP[$i]} -p $PORT|grep open|wc -l`
     if [ $PORT_COUNT -ne 1 ];then
        if [ `ipvsadm -Ln|grep ${RIP[$i]}|wc -l` -ne 0 ];then
        ipvsadm -d -t $VIP:$PORT -r ${RIP[$i]}:$PORT >/dev/null 2>&1
        fi
     fi
  done
  sleep 10
done



以上脚本来自老男孩培训机构,转载请注明本脚本的编写人-老男孩老师