启动keepalived总是有warning,脚本不生效:

Keepalived_vrrp[10802]: Warning - script chk_ping is not used

Keepalived配置文件:

global_defs {
   enable_script_security
   script_user root
}
vrrp_instance VI_1 {
    state BACKUP
    interface vxlan0
    virtual_router_id 51
    priority 99
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        10.121.1.200/24
    }

    track_script {
        chk_ping
    }
notify "/root/notify.sh"
}
vrrp_script chk_ping {
    script "/root/chk_ping.sh"
    interval 10
    weight -1
    fall 2
    rise 2
}

排查了好久也没找到原因,最后竟然是因为vrrp_script的声明写到了使用之后,类似C语言的函数声明必须要在使用之前,不得不说keepalived确实像上个时代的产物。。。

修改之后的脚本

global_defs {
   enable_script_security
   script_user root
}
vrrp_script chk_ping {
    script "/root/chk_ping.sh"
    interval 10
    weight -1
    fall 2
    rise 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface vxlan0
    virtual_router_id 51
    priority 99
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        10.121.1.200/24
    }

    track_script {
        chk_ping
    }
notify "/root/notify.sh"
}