机器过载时的虚拟IP故障切换

我们一直在使用keepalived和虚拟IP地址两年。 在极less数情况下,机器崩溃这个作品非常好。

但是当盒子本身出现问题时,我们看到了一些没有发生故障转移的情况。 例如,当我们遇到系统一直在交换的问题时。 负载是25,而不是正常的5,并没有办法ssh进入机器。 平正在工作。 Keepalived保持运行,虚拟IP地址不被另一个从站接pipe。

另外我们也有这样的情况:在MySql HA设置中,有人通过在主服务器而不是从服务器上进行备份来错误地locking完整的数据库。 这也没有拿起。

问题在这里,我只是使用错误的脚本检查机器本身,如果主要工作正常,或者这是典型的虚拟IP设置?

我感到奇怪的是,你不使用第三个系统来确定主设备是否可用。 当然我明白为什么:keepalivd应该由主人打开主人本身。

我最近注意到,对于Redis HA安装,人们正在使用Zookeeper(例如https://github.com/ryanlecompte/redis_failover )。 那是因为我遇到的限制吗?

是问题在这里,我只是使用错误的脚本来检查机器本身,如果主人工作正常,

是。

例如,当我们遇到系统一直在交换的问题时。 负载是25,而不是正常的5,并没有办法ssh进入机器。 平正在工作。 Keepalived保持运行,虚拟IP地址不被另一个从站接pipe。

你有没有试图写自己的脚本来检查平均负载,如下所示:

#!/bin/bash LOAD=$(/command/to/get/the/load/average) if [ $LOAD -ge 25 ]; then exit 1 else exit 0 fi 

然后用它作为track_script

 vrrp_script check_load { script "/path/to/check_load.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP nopreempt ... authentication { auth_type PASS auth_pass Neifeaw7 } virtual_ipaddress { 192.168.6.8 } track_script { check_load } } 

但是等一下,如果虚拟IP切换太频繁会发生什么?