LVS健康检查脚本
脚本 LVS 健康检查
2023-06-13 09:16:17 时间
#!/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
相关文章
- shell for循环、循环变量值付给其他shell脚本
- 系统脚本执行类命令一览
- 跨脚本步骤 复杂 SQL血缘识别
- 批量运行多个R脚本并打印运行状态
- 【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )
- 【Android RenderScript】RenderScript 简介 ③ ( RenderScript 发布和运行 | RenderScript 脚本 )
- Java 脚本化编程指南详解编程语言
- 进程Linux 脚本实现守护进程功能(linux脚本守护)
- 极速搭建LVS集群:基于Linux平台的快速安装指南(linux安装lvs)
- Linux运维:一种节省时间的编写脚本之道(linux运维常用脚本)
- Linux性能测试脚本:提高系统表现的利器(linux性能测试脚本)
- MSSQL约束:一套完善的脚本解决方案(mssql约束脚本)
- 简单的SQLServer备份脚本代码
- JavaScript用Node.js写Shell脚本[译]
- Perl访问MSSQL并迁移到MySQL数据库脚本实例