linux – keepalived VRRP_script没有失败
所以我在两台服务器上运行keepalived,我无法让它故障转移到另一台服务器上.
下面我有一个服务器的配置.两者之间唯一不同的是优先号码主人为110而后者为109. 但是当我使用/etc/init.d/process停止我的进程时,keepalived不会故障转移.我只是让VRRP_Script(chk_script)失败而没有别的.没有故障转移或没有. vrrp_script chk_script { script "/usr/local/bin/failover.sh" interval 2 weight 2 } vrrp_instance HAInstance { state BACKUP interface eth0 virtual_router_id 8 priority 109 advert_int 1 nopreempt vrrp_unicast_bind 10.10.10.8 vrrp_unicast_peer 10.10.10.9 virtual_ipaddress { 10.10.10.10/16 dev eth0 } notify /usr/local/bin/keepalivednotify.sh track_script { chk_script weight 20 } } 这是我下面的chk_script.当我将killall -0进程作为我的脚本时,也会发生同样的问题. !/bin/bash SERVICE='process' STATUS=$(ps ax | grep -v grep | grep $SERVICE) if [ "$STATUS" != "" ] then exit 0 else exit 1 fi 有谁知道解决这个问题?谢谢. 解决方法
我有完全相同的问题,但我的问题不在防火墙或我的以太网适配器,而是在检查脚本的“重量”设置.
这是我的配置: 主: vrrp_instance haproxy { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 备份: vrrp_instance haproxy { state BACKUP interface eth0 virtual_router_id 51 priority 100 advert_int 1 Check_script: vrrp_script chk_haproxy { script "python /root/ha_check.py" interval 2 # check every 2 seconds weight 2 rise 2 fall 2 } 主人拒绝释放VIP的原因是因为尽管脚本失败了,但主人仍然从BACKUP服务器获得更高的优先级.发生这种情况是因为check_script上的“权重”设置不足以覆盖优先级编号之间的“GAP”,这意味着将BACKUP服务器的优先级数字提高到MASTER Server的优先级数.我会进一步解释: 根据keepalived手册,“权重”设置中的正数将在检查成功时将该数字添加到优先级. 所以,根据我的配置: 服务器优先级脚本先前失败: 故障转移ip被主服务器正确“抓取”,因为Master与备份服务器相比具有更高的优先级(152> 100) 服务器优先级在脚本失败后: 故障转移ip仍然在主服务器上,因为与BACKUP(148> 102)相比,Master再次具有更高的优先级. MASTER服务器拒绝发布IP,因为他的优先级高于其他服务器. 我的情况的解决方案是: 解决方案-1:更改两台服务器的优先级数,使它们没有太多的“GAP”. 通过上面的配置,当脚本成功(意味着一切正常)时,优先级将是: 脚本失败时: 解决方案 – 2:将脚本的重量编号从2更改为-60 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |