• LVS健康检查脚本


    #!/bin/bash
    
    #=============================================================================
    VIP=10.10.10.100      #集群虚拟IP
    CPORT=80        #定义集群端口
    FAIL_BACK=127.0.0.1     #本机回环地址
    RS=("10.10.10.12" "10.10.10.13")  #编写集群地址
    declare -a RSSTATUS       #变量RSSTATUS定义为数组态
    RW=("2" "1")
    RPORT=80        #定义集群端口
    TYPE=g          #制定LVS工作模式:g=DR m=NAT
    CHKLOOP=3
    LOG=/var/log/ipvsmonitor.log
    
    #=============================================================================
    
    addrs() {
      ipvsadm -a -t $VIP:$CPORT -r $1:$RPORT -$TYPE -w $2
      [ $? -eq 0 ] && return 0 || return 1
    }
    
    delrs() {
      ipvsadm -d -t $VIP:$CPORT -r $1:$RPORT
      [ $? -eq 0 ] && return 0 || return 1
    }
    
    checkrs() {
      local I=1
      
      while [ $I -le $CHKLOOP ]
      do
        if curl --connect-timeout 1 http://$1 &> /dev/null
        then
          return 0
        fi
        
        let I++
      done
      
      return 1
    }
    
    initstatus() {
      
      local I
      local COUNT=0;
    
      for I in ${RS[*]}
      do
        if ipvsadm -L -n | grep "$I:$RPORT" && > /dev/null
        then
        
          
          RSSTATUS[$COUNT]=1
        else
          RSSTATUS[$COUNT]=0
        fi
          let COUNT++
      done
    }
    
    #=============================================================================
    initstatus
    
    while :; do
    
      let COUNT=0
      for I in ${RS[*]}
      do
        if checkrs $I
        then
          if [ ${RSSTATUS[$COUNT]} -eq 0 ]
          then
                        addrs $I ${RW[$COUNT]}
                      [ $? -eq 0 ] && RSSTATUS[$COUNT]=1 && echo "`date +'%F %H:%M:%S'`, $I is back." >> $LOG
          fi
        else
                      if [ ${RSSTATUS[$COUNT]} -eq 1 ]
          then
                        delrs $I
                        [ $? -eq 0 ] && RSSTATUS[$COUNT]=0 && echo "`date +'%F %H:%M:%S'`, $I is gone." >> $LOG
          fi
        fi
        
        let COUNT++
      done
      sleep 5
    done
    
  • 相关阅读:
    计算成像最新进展及应用
    计算成像资料笔记
    成像中的倏逝波与衍射极限
    Eclipse安装Activiti插件(流程设计器)
    Python3.x:代理ip刷评分
    Python3.x:代理ip刷点赞
    Python3.x:正则 re.findall()的用法
    Python3.x:python: extend (扩展) 与 append (追加) 的区别
    Python3.x:zip()函数
    Python3.x:获取代理ip以及使用
  • 原文地址:https://www.cnblogs.com/LyShark/p/10222252.html
Copyright © 2020-2023  润新知