lvs启动脚本—服务端
chkconfig --add lvs
chmod +x /etc/init.d/lvs
[iyunv@lvs ~]# cat /etc/init.d/lvs
#!/bin/bash
# chkconfig: 2345 90 60
# description: lvs server start and stopscripts
# hexudong
. /etc/init.d/functions
VIP=(
192.168.1.16
)
RS=(
192.168.1.20
192.168.1.21
)
dev=eth0
arp_ip=192.168.1.253
lvs_start(){
ipvsadm -C
ipvsadm --set 30 5 60
for((i=0;i<${#VIP};i++))
do
count=`ip addr|grep ${VIP}|wc -l`
[$count -eq 0 ]&&ip addr add ${VIP}/24 dev $dev
RETVAL1=$?
/sbin/arping -I $dev -c 3 -s ${VIP} $arp_ip >/dev/null 2>&1
ipvsadm -A -t ${VIP}:80 -s rr -p20
for ((n=0;n<${#RS};n++))
do
ipvsadm -a -t ${VIP}:80 -r ${RS[n]} -g -w 1
done
done
((RETVAL=$RETVAL1+$?))
sleep 2
if[ $RETVAL -eq 0 ]
then
action "The lvs_server is start" /bin/true
else
action "The lvs_server is start" /bin/false
fi
}
lvs_stop(){
ipvsadm -C
for((i=0;i<${#VIP};i++))
do
count=`ip addr|grep ${VIP}|wc -l`
[$count -ne 0 ]&&ip addr del ${VIP}/24 dev $dev
RETVAL1=$?
done
((RETVAL=$RETVAL1+$?))
sleep2
if[ $RETVAL -eq 0 ]
then
action "The lvs_server is stop" /bin/true
else
action "The lvs_server is stop" /bin/false
fi
}
USAGE(){
echo "USAGE:$0{start|stop|restart}"
}
[ $# -ne 1 ]&&{
USAGE
exit 2
}
case "$1" in
start)
lvs_start
exit $RETVAL
;;
stop)
lvs_stop
exit $RETVAL
;;
restart)
lvs_stop
lvs_start
exit $RETVAL
;;
*)
USAGE
exit 3
esac
lvs客户端 [iyunv@web1 ~]# cat /etc/init.d/lvs_client
#!/bin/bash
# chkconfig: 2345 90 60
# description: lvs client start and stopscripts
# hexudong
. /etc/init.d/functions
VIP=(
192.168.1.16
)
lvs_start(){
for((i=0;i<${#VIP};i++))
do
count=`ip addr|grep ${VIP}|wc -l`
[$count -eq 0 ]&&ip addr add ${VIP}/32 dev lo
done
RETVAL=$?
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sleep 1
if[ $RETVAL -eq 0 ]
then
action "The lvs_client is start" /bin/true
else
action "The lvs_client is start" /bin/false
fi
}
lvs_stop(){
for((i=0;i<${#VIP};i++))
do
count=`ip addr|grep ${VIP}|wc -l`
[$count -ne 0 ]&&ip addr del ${VIP}/32 dev lo
done
RETVAL=$?
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
sleep 1
if[ $RETVAL -eq 0 ]
then
action "The lvs_client is stop" /bin/true
else
action "The lvs_client is stop" /bin/false
fi
}
USAGE(){
echo "USAGE:$0{start|stop|restart}"
}
[ $# -ne 1 ]&&{
USAGE
exit2
}
case "$1" in
start)
lvs_start
exit $RETVAL
;;
stop)
lvs_stop
exit $RETVAL
;;
restart)
lvs_stop
lvs_start
exit $RETVAL
;;
*)
USAGE
exit 3
esac
web端 RS的健康检查 [iyunv@web2 scripts]# cat lvs_rs_check.sh
#!/bin/bash
# hexudong
VIP=(
192.168.1.16
)
RS=(
192.168.1.20
192.168.1.21
)
web_file=/data0/check/index.html
html(){
cat>$web_file<<EOF
<html>
<head>
<title>rs nodedetection</title>
<meta http-equiv="refresh"content="1">
</head>
<body >
<center><atarget=_blank><font size=8 color="0000ff"><b>RSCheck</b></font></a><br></center>
<hr>
<div><p>rs checklist</p></div>
<table width="400"height="200" border=1align=center>
<tr size=300>
<td bgcolor="Cyan"width="200">RS</td>
<td bgcolor="Cyan" width="150">STAT</td>
</tr>
EOF
for((i=0;i<${#RS};i++))
do
echo " <trsize=300>" >>$web_file
echo " <tdbgcolor=\"#00CC33\" >${RS}</td>" >>$web_file
echo " <td id=${RS}bgcolor=\"#00CC33\" >OK</td>" >>$web_file
echo " </tr>">>$web_file
done
cat>>$web_file<<EOF
</table>
</body>
<html>
EOF
}
lvs_add(){
for((n=0;n<${#VIP};n++))
do
if [ `ipvsadm -L -n|grep ${RS}|wc -l` -ne ${#VIP} ];then
ipvsadm -a -t ${VIP[n]}:80 -r ${RS} -g -w 1
fi
done
}
lvs_del(){
for((n=0;n<${#VIP};n++))
do
if [ `ipvsadm -L -n|grep ${RS}|wc -l` -ne 0 ];then
ipvsadm -d -t ${VIP[n]}:80 -r ${RS}
fi
done
}
check_rs(){
for((i=0;i<${#RS};i++))
do
num=`curl -I -s -w "%{http_code}" -o /dev/null ${RS}`
if [ $num -ne 200 ]
then
sed -i /'<td id='${RS}' bgcolor'/s@.*@' <td id='${RS}'bgcolor="#FF0000" >BAD</td>'@g $web_file
lvs_del
else
sed -i /'<td id='${RS}' bgcolor'/s@.*@' <td id='${RS}'bgcolor="#00CC33" >OK</td>'@g $web_file
lvs_add
fi
done
}
main(){
html
while true;do
check_rs
sleep 1
done
}
main
lvs 备机-对主机进行健康检查 备机先不要开健康检查,等待主机挂掉,备机增加VIP,并管理RS层
[iyunv@lvs scripts]# cat lvs_check.sh
#!/bin/bash
# hexudong
VIP=(
192.168.1.16
)
RS=(
192.168.1.21
192.168.1.20
)
dev=eth0
lvs_server=192.168.1.14
arp_ip=192.168.235.253
lvs_add(){
ipvsadm -C
ipvsadm --set 30 5 60
for((i=0;i<${#VIP};i++))
do
count=`ip addr|grep ${VIP}|wc -l`
[$count -eq 0 ]&&ip addr add ${VIP}/24 dev $dev
/sbin/arping -I $dev -c 3 -s ${VIP} $arp_ip >/dev/null 2>&1
ipvsadm -A -t ${VIP}:80 -s wrr -p20
for ((n=0;n<${#RS};n++))
do
ipvsadm -a -t ${VIP}:80 -r ${RS[n]} -g -w 1
done
done
}
lvs_del(){
ipvsadm -C
for((i=0;i<${#VIP};i++))
do
count=`ip addr|grep ${VIP}|wc -l`
[$count -ne 0 ]&&ip addr del ${VIP}/24 dev $dev
done
}
check_lvs(){
ping -c2 $lvs_server >>/dev/null 2>&1
RETVAL=$?
if[ $RETVAL -ne 0 ]
then
[ `ipvsadm -L -n|grep "TCP"|wc -l` -eq 0 ]&& \
lvs_add
else
[ `ipvsadm -L -n|grep "TCP"|wc -l` -ne 0 ]&& \
lvs_del
fi
}
main(){
while true;do
check_lvs
sleep 1
done
}
main
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com