码迷,mamicode.com
首页 > 其他好文 > 详细

LVS健康检查脚本

时间:2018-05-20 11:47:11      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:monitor   moni   smon   echo   type   ipvsadm   lse   let   date   

#!/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

LVS健康检查脚本

标签:monitor   moni   smon   echo   type   ipvsadm   lse   let   date   

原文地址:https://www.cnblogs.com/LyShark/p/9062759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!