您好,登錄后才能下訂單哦!
#!/bin/bash
#
VIP=172.169.18.150
CPOPT=80 #集群端口
FALI_BACK=127.0.0.1 #備用
RS=("172.169.18.240" "172.169.18.232") #集群主機
declare -a RSSTATUS
#RSTATUS=("1" "1") #狀態(tài)碼
RW=("2" "1") #權重
RPORT=80 #RIP端口
TYPE=g
CHKLOOP=3 #檢查次數(shù)
LOG=/var/log/ipvsadmlog.log
addrs() {
ipvsadm -a -t $VIP:$CPOPT -r $1:$RPORT -$TYPE -w $2
[ $? -eq 0 ] && return 0 || return 1
}
delrs() {
ipvsadm -d -t $VIP:$CPOPT -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
}
inststatus() {
local I
local COUNT=0;
for I in ${RS[*]}; do
#if checkrs $I; then
if ipvsadm -L -n | grep "$I:$RPORT" && > /dev/null; then
RSSTATUS[$COUNT]=1
else
RSSTATUS[$COUNT]=0
fi
let COUNT++
done
}
inststatus
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 10
done
#檢查測試服務
# bash -x ipvsadm.sh
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。