温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

实现LVS后端服务健康状态检查

发布时间:2020-07-18 00:18:29 来源:网络 阅读:707 作者:蒋将将 栏目:开发技术

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI