我们一直在使用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切换太频繁会发生什么?