加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – keepalived VRRP_script没有失败

发布时间:2020-05-23 19:14:33 所属栏目:Linux 来源:互联网
导读:所以我在两台服务器上运行keepalived,我无法让它故障转移到另一台服务器上. 下面我有一个服务器的配置.两者之间唯一不同的是优先号码主人为110而后者为109. 但是当我使用/etc/init.d/process停止我的进程时,keepalived不会故障转移.我只是让VRRP_Script(chk_s

所以我在两台服务器上运行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手册,“权重”设置中的正数将在检查成功时将该数字添加到优先级.
如果检查失败,负数将从优先级编号中减去该编号.

所以,根据我的配置:

服务器优先级脚本先前失败:
大师:152
备份:100
Failover_IP:MASTER

故障转移ip被主服务器正确“抓取”,因为Master与备份服务器相比具有更高的优先级(152> 100)

服务器优先级在脚本失败后:
MASTER服务器:148
备份服务器:102
Failover_IP:仍然是MASTER

故障转移ip仍然在主服务器上,因为与BACKUP(148> 102)相比,Master再次具有更高的优先级. MASTER服务器拒绝发布IP,因为他的优先级高于其他服务器.

我的情况的解决方案是:

解决方案-1:更改两台服务器的优先级数,使它们没有太多的“GAP”.
例如:
优先级:150
备份优先级:149
Check_script权重:原样(2).

通过上面的配置,当脚本成功(意味着一切正常)时,优先级将是:
师父:152
备份:149
IP_Location:On Master(152> 149)

脚本失败时:
师父:150
备份:151
IP_Location:备份时(151> 150)

解决方案 – 2:将脚本的重量编号从2更改为-60

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读