LVS 건강 검진

환경: centos 7.1
프로필:
스 크 립 트 가 RS 의 http 서비스 가 끊 겼 을 때 LVS 에서 RS 를 자동 으로 제거 합 니 다.모든 RS 의 http 서비스 가 끊 겼 을 때 LVS 에서 모든 RS 를 제거 하고 LVS 스케줄 러 에 있 는 http 서 비 스 를 LVS 에 추가 해 경고 페이지 로 한다.
스 크 립 트 가 RS 의 http 서비스 활성 화 를 감지 하면 LVS 에 자동 으로 추가 되 며, 스케줄 러 자체 가 LVS 에 존재 하면 삭 제 됩 니 다.
이 스 크 립 트 는 본인 의 테스트 를 거 쳐 요구 에 완전히 도달 했다.
다음은 스 크 립 트:
#!/bin/bash
#
rs=("152.168.1.12" "152.168.1.13")
vip="152.168.1.10"
port=80
logfile="/usr/local/scripts/lvs.log"
function check_alldown {
   #   rs     ,         
   #     rs         
   #    rs    ,       
   for www in `echo ${rs[*]}`
   do
      curl --connect-timeout 1 http://$www &> /dev/null
      if [ $? -eq 0 ]
      then
          echo 0 
          exit 0 
      fi      
   done
   echo 100 
}
function lvs_add {
   ipvsadm -a -t $vip:$port -r $1
   echo "add rs host:$1 to lvs"
}
function lvs_rm {
   ipvsadm -d -t $vip:$port -r $1
   echo "remove rs host:$1 to lvs"
}
function lvs_local {
   #    rs    ,  lvs   127.0.0.1    
   #        rs  ,  lvs  127.0.0.1    
   all_down=`check_alldown`
   rip=$(ipvsadm -L -n | gawk '/127.0.0.1/')
   if [ $all_down -eq 100 ]
   then
       if [ "$rip" = "" ] 
       then   
           echo "`date +%F:%H-%M-%S` all rs host is down!" >> $logfile
           lvs_add "127.0.0.1"
       fi
   else
       if [ $all_down -eq 0 ] && [ ! "$rip" = "" ]  
       then
           echo "`date +%F:%H-%M-%S` one rs host is up,remove local rs host!" >> $logfile
           lvs_rm "127.0.0.1"
       fi
   fi
}
function lvs_rs {
   #        rs  ,  lvs        
   #        rs  ,  lvs       
   lvs_local
   for www in `echo ${rs[*]}`
   do
      rip=$(ipvsadm -L -n | gawk "/$www/")
      curl --connect-timeout 1 http://$www &> /dev/null
      if [ $? -eq 0 ]
      then
          if [ "$rip" = "" ]
          then
              echo "`date +%F:%H-%M-%S` rs host:$www is up!" >> $logfile
              lvs_add "$www"
          fi
      else
          if [ ! "$rip" = "" ]
          then
              echo "`date +%F:%H-%M-%S` rs host:$www is down!" >> $logfile
              lvs_rm "$www"
          fi
      fi
   done
}
function lvs_monitor {
   while true
   do
     echo "check lvs rs health!"
     lvs_rs
     sleep 1
   done
}
lvs_monitor

이상 입 니 다.

좋은 웹페이지 즐겨찾기