实现思路,每隔一段时间去curl lvs后端的realserver, 根据状态改变,移除或添加到 ipvsadm.
#!/bin/bash#vip
VIP=192.168.10.3
#集群端口
CPORT=80
#realserver ip
RS=("192.168.10.7" "192.168.10.8")
#realserver初始状态(在线)
RSTATUS=("1" "1")
#realserver权重
RW=("2" "1")
#realserver检测端口
RPORT=80
#curl连接超时时间
TIMEOUT=5
#指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
TYPE=g
#健康检查时间间隔
SLEEP_INTERVAL=5
#日志文件路径
LOG_FILE="./health_check.log"add() {ipvsadm -a -t $VIP:$CPORT -r $1:$RPORT -$TYPE -w$2[ $? -eq 0 ] && return 0 || return 1
}del() {ipvsadm -d -t $VIP:$CPORT -r $1:$RPORT[ $? -eq 0 ] && return 0 || return 1
}while :; do
let COUNT=0
for I in ${RS[*]}; doif curl --connect-timeout $TIMEOUT $I &> /dev/null; thenif [ ${RSTATUS[$COUNT]} -eq 0 ]; thenadd $I ${RW[$COUNT]}[ $? -eq 0 ] && RSTATUS[$COUNT]=1 && echo "`date +%F-%H:%M:%S`,$I is up." >> $LOG_FILEfielseif [ ${RSTATUS[$COUNT]} -eq 1 ]; thendel $I[ $? -eq 0 ] && RSTATUS[$COUNT] = 0 && echo "`date +%F-%H:%M:%S`,$I is down." >> $LOG_FILEfifilet COUNT++
done
sleep $SLEEP_INTERVAL
done
本文发布于:2024-01-31 08:16:24,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170666018527055.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |