1. 程式人生 > >LVS健康檢測腳本分享

LVS健康檢測腳本分享

LVS、shell

1、真實服務器健康狀態檢測

我們可以通過Shell腳本,實現對LVS後端的真實服務器開放服務的健康狀態檢測功能。當真實服務器服務出現問題,則自動將其從集群服務中移除,當真實服務器服務恢復,則自動將其加入到負載均衡集群服務中。


1.1 基於端口的健康檢測

腳本思路:

通過掃描後端服務器的端口來判斷真實服務器是否健康!

若端口開放則表示真實服務器健康,則將其加入到LVS集群中。若已存在集群中則不做任何操作。

若端口未開發則表示真實服務器故障,則將其從LVS集群中移除。若不存在則不做任何操作。


Shell腳本內容如下:

# cat lvs_port_health.sh

#配置集群服務地址和真實服務器地址池

vip="172.16.16.100"

vport="80"

rspool="172.16.16.2 172.16.16.3"

rsport="80"

#本地時間

localtime=`date +%Y-%m-%d\ \%H:%M:%S`

#安裝NMAP掃描端口工具

nmap=`rpm -qa |grep nmap |wc -l`

if [ $nmap = 0 ]

then

yum -y install nmap

fi

#真實服務器健康檢測機制:

#當真實服務器故障時自動從集群服務中移除

#當真實服務器恢復時自動加入集群服務

while :;

do

sleep 3;

for i in $rspool

do

openport=`nmap $i -p $rsport |awk 'NR==6{print $2}'`

rstesting=`ipvsadm -ln|grep $i:$rsport|wc -l`

if [ $openport = open ]

then

if [ $rstesting = 0 ]

then

ipvsadm -a -t $vip:$vport -r $i:$rsport -g >/dev/null 2>&1

echo "$localtime 真實服務器[$i:$rsport]加入集群服務[$vip:$vport]!"

fi

else

if [ $rstesting != 0 ]

then

ipvsadm -d -t $vip:$vport -r $i:$rsport

echo "$localtime 真實服務器[$i:$rsport]從集群服務[$vip:$vport]中移除!"

fi

fi

done

done


1.2 基於訪問的健康檢測

在WEB集群中,基於端口的健康檢測並不夠精確,端口開放不代表WEB服務是正常工作的,所以我們更好的解決方法就是直接去訪問一下。


腳本思路:

通過直接訪問WEB來判斷真實服務器是否健康!

若可訪問則表示真實服務器健康,則將其加入到LVS集群中。若已存在集群中則不做任何操作。

若訪問失敗則表示真實服務器故障,則將其從LVS集群中移除。若不存在則不做任何操作。


Shell腳本內容如下:

# cat lvs_access_health.sh

#配置集群服務地址和真實服務器地址池

vip="172.16.16.100"

vport="80"

rspool="172.16.16.2 172.16.16.3"

rsport="80"

#本地時間

localtime=`date +%Y-%m-%d\ \%H:%M:%S`

#安裝CURL工具

curl=`rpm -qa |grep curl |wc -l`

if [ $curl = 0 ]

then

yum -y install curl

fi

#真實服務器健康檢測機制:

#當真實服務器故障時自動從集群服務中移除

#當真實服務器恢復時自動加入集群服務

while :;

do

sleep 3;

for i in $rspool

do

rstesting=`ipvsadm -ln|grep $i:$rsport|wc -l`

curl $i:$rsport >/dev/null 2>&1

if [ $? = 0 ]

then

if [ $rstesting = 0 ]

then

ipvsadm -a -t $vip:$vport -r $i:$rsport -g >/dev/null 2>&1

echo "$localtime 真實服務器[$i:$rsport]加入集群服務[$vip:$vport]!"

fi

else

if [ $rstesting != 0 ]

then

ipvsadm -d -t $vip:$vport -r $i:$rsport

echo "$localtime 真實服務器[$i:$rsport]從集群服務[$vip:$vport]中移除!"

fi

fi

done

done

LVS健康檢測腳本分享