在LVS负载均衡主节点上,模拟keepalived健康检查功能管理LVS节点,当节点挂掉从服务器池中剔除,好了再加到服务器池中来。
工具:yum install -y ipvsadm
web03:10.0.0.17
web04:10.0.0.18
VIP:10.0.0.13
#!/bin/bash
web3() {
curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" 10.0.0.17
}
web4() {
curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" 10.0.0.18
}
ipvs_web3=$(ipvsadm -Ln |grep 10.0.0.17 |wc -l)
ipvs_web4=$(ipvsadm -Ln |grep 10.0.0.18 |wc -l)
checknum=1
checkloop=4
if [ `web3` -eq 200 ];then
if [ $ipvs_web3 -eq 0 ] ;then
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
if [ $? -eq 0 ];then
echo "web03上线"
fi
else
echo "web03正常"
fi
else
if [ $ipvs_web3 -eq 1 ] ;then
while [ $checknum -le $checkloop ];do
if [ `web3` -eq 200 ];then
break
else
let checknum++
fi
if [ $checknum -eq 3 ] ;then
ipvsadm -d -t 10.0.0.13:80 -r 10.0.0.17:80
if [ $? -eq 0 ];then
echo "web03下线"
fi
fi
sleep 1
done
fi
fi
if [ `web4` -eq 200 ];then
if [ $ipvs_web4 -eq 0 ] ;then
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
if [ $? -eq 0 ];then
echo "web04上线"
fi
else
echo "web04正常"
fi
else
if [ $ipvs_web4 -eq 1 ] ;then
while [ $checknum -le $checkloop ];do
if [ `web4` -eq 200 ];then
break
else
let checknum++
fi
if [ $checknum -eq 3 ] ;then
ipvsadm -d -t 10.0.0.13:80 -r 10.0.0.18:80
if [ $? -eq 0 ];then
echo "web04下线"
fi
fi
sleep 1
done
fi
fi
程序还有点bug,不过能用ヽ( ̄▽ ̄)?
日期:2018-03-30
原文地址:https://www.cnblogs.com/frank-hui/p/8678168.html