keepalived 更新后跟踪脚本不起作用

keepalived 更新后跟踪脚本不起作用

我最近将我的 keepalived 集群从版本 1.2.10 更新到 1.2.13。我注意到我的跟踪脚本(基本上只是 ping 另一个系统)不再起作用。我使用一个简单的 bash 脚本,如果一切正常且接收器在线,则返回 0,如果接收器不可用,则返回 1。
如果脚本返回 1,则集群发生变化并且另一个路由器变为活动状态,否则一切正常。keepalived.conf

global_defs {
   router_id r_id
}

vrrp_script chk_myscript {
    script       "/etc/keepalived/chk_available.sh"
    interval 4   # check every 4 seconds
    fall 2       # require 2 failures for KO
    }

vrrp_instance r_id {
    state MASTER
    interface enp0s3
    virtual_router_id 10
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        10.0.25.3/24 dev enp0s3
    }
   track_script {
        chk_myscript
    }
}

脚本:

#!/bin/sh
ping_return()
{
    ping -c2 8.8.8.8 > /dev/null  #it's just an example ip
    if [ $? -eq 0 ]
    then
          return 0
    else
          return 1
    fi
 }
 ping_return

keepalived 启动过程结束后,日志信息告诉我:

VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
ROUTER keepalived_vrrp[2800]: Using LinkWatch kernel netlink reflector...
ROUTER keepalived_vrrp[2801]: VRRP_Instance(INSTANCE) NOW in FAULT state

我已经阅读了更新日志,因为我认为我可以从中获得一些有用的信息。但没有任何有用的信息(至少对于像我这样的新手来说)。

我现在的问题是:
为什么 keepalived 不能像以前的版本那样工作,我要做什么才能让 keepalive 再次工作?

答案1

SELinux 拒绝执行自定义脚本。

chcon -t keepalived_unconfined_script_exec_t /etc/keepalived/chk_available.sh

相关内容