#!/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") #状态码
RW=("2" "1") #权重
RPORT=80 #RIP端口
TYPE=g
CHKLOOP=3 #检查次数
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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。