LVS IPVSADM池中的realserver出现问题,Director发现不了??
在我的上篇博客: 中提到了用IPVSADM实现负载均衡的方法。
但实现后发现一个严重问题:
LVS IPVSADM 池中的realserver 出现问题,Director 发现不了!!!
这意味着如果ipvsadm继续将请求 session 分配给服务出现问题的机器,将导致很多的请求无法连接。
所以自己写了个脚本挂在在Load Balance Director上, 经长时间测试,工作非常流畅。脚本的原理是:
1、在安装了nmap的Load Balance Director上循环检测每台real server的服务端口。
2、一旦发现端口down了,立刻从ipvsadm管理的池中移除该real server。
3、如果发现端口恢复正常了,即up了,立刻将恢复正常的real server自动添加到池中。
脚本内容如下:可根据实际情况修改FIP IP1 IP2。也可以添加更多的服务器。
#!/bin/bash
source /etc/profile;
FIP=192.168.2.1
IP1=192.168.2.7
IP2=192.168.2.8
while true;
do
for IP in $IP1 $IP2;
do
nmap -p 22 $IP 2>/dev/null|egrep 'open.*ssh'
if [ $? -eq 0 ];
then ipvsadm|grep $IP;
if [ $? -eq 0 ]; then echo $IP SSH Service fine; else ipvsadm -a -t $FIP:22 -r $IP; fi
else
echo $IP SSH Service down;
ipvsadm|grep $IP;
if [ $? -eq 0 ]; then echo $IP SSH Service down; ipvsadm -d -t $FIP:22 -r $IP; fi
fi
done
sleep 2;
done
也有人说结合paranha图形配置就可以做到。没试过。用别人的东西有时候出了错,更不好解决。
这么简单的工作,还不如自己写个东西,一切心知肚明。
阅读(1917) | 评论(0) | 转发(0) |