keepalived track_script doesn't seem to run

8,414

My problem was a typo in the keepalived.conf file.

This is missing a space between track_script and the opening bracket:

track_script{
        chk_haproxy
    }

Changing it to this works:

track_script {
        chk_haproxy
    }
Share:
8,414

Related videos on Youtube

Utegrad
Author by

Utegrad

Updated on September 18, 2022

Comments

  • Utegrad
    Utegrad almost 2 years

    I'm hoping someone can see what I'm doing wrong and offer help to get a keepalived track_script to run.

    I have the priority set to 101 on the vrrp_instance of the primary keepalived box and 100 on the failover box. Disconnecting the network or stopping keepalived on the primary box causes the VIP to shift over to the secondary box as expected.

    If the script were to run, I would expect it to add 2 to the priority, if the script returns successful. However a tcpdump always shows the priority unchanged. Even if I put a bogus setting the script definition, I never see anything about the script in /var/log/messages about it. Stopping the HAProxy service doesn't have any effect, and other tests I've done with the script indicate it never runs.

    output of tcpdump:

    172.18.8.2 > 224.0.0.18: vrrp 172.18.8.2 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 101, authtype simple, intvl 1s, length 20, addrs: 172.18.8.4 auth "password"
    

    Here's the keepalived config:

    global_defs {
       router_id BETAPROXYSLC01
    }
    
    vrrp_script chk_haproxy {
            script "killall -0 haproxy"
            interval 2
            weight 2
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 101
        advert_int 1
        notify /usr/local/bin/notify.sh
        authentication {
            auth_type PASS
            auth_pass password
        }
        virtual_ipaddress {
            172.18.8.4
        }
       track_script{
            chk_haproxy
        }
    }
    

    Here's the log from starting keepalived with "-D -d":

    Oct 15 11:50:31 BETAPROXYSLC01 systemd: Starting LVS and VRRP High Availability Monitor...
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived[2702]: Starting Keepalived v1.2.10 (06/10,2014)
    Oct 15 11:50:31 BETAPROXYSLC01 systemd: Started LVS and VRRP High Availability Monitor.
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived[2703]: Starting Healthcheck child process, pid=2704
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived[2703]: Starting VRRP child process, pid=2705
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Netlink reflector reports IP 172.18.8.2 added
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Netlink reflector reports IP fe80::215:5dff:fe01:108 added
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Registering Kernel netlink reflector
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Registering Kernel netlink command channel
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Opening file '/etc/keepalived/keepalived.conf'.
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Configuration is using : 6133 Bytes
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: ------< Global definitions >------
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Router ID = BETAPROXYSLC01
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Smtp server connection timeout = 30
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Email notification from = root@betaproxyslc01
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Netlink reflector reports IP 172.18.8.2 added
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Netlink reflector reports IP fe80::215:5dff:fe01:108 added
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Registering Kernel netlink reflector
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Registering Kernel netlink command channel
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Registering gratuitous ARP shared channel
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Opening file '/etc/keepalived/keepalived.conf'.
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Configuration is using : 63558 Bytes
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: ------< Global definitions >------
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Router ID = BETAPROXYSLC01
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Smtp server connection timeout = 30
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Email notification from = root@betaproxyslc01
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP IPv4 mcast group = 224.0.0.18
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP IPv6 mcast group = 224.0.0.18
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: SNMP Trap disabled
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: ------< VRRP Topology >------
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP Instance = VI_1
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Want State = BACKUP
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Runing on device = eth0
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Virtual Router ID = 51
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Priority = 101
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Advert interval = 1sec
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Authentication type = SIMPLE_PASSWORD
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Password = password
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Virtual IP = 1
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: 172.18.8.4/32 dev eth0 scope global
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Generic state transition script = '/usr/local/bin/notify.sh'
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: ------< VRRP Scripts >------
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP Script = chk_haproxy
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Command = /usr/local/bin/chk_haproxy
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Interval = 2 sec
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Timeout = 0 sec
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Weight = 2
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Rise = 1
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Fall = 1
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Status = INIT
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: Using LinkWatch kernel netlink reflector...
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) Entering BACKUP STATE
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: VRRP IPv4 mcast group = 224.0.0.18
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: VRRP IPv6 mcast group = 224.0.0.18
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: SNMP Trap disabled
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: ------< SSL definitions >------
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Using autogen SSL context
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Using LinkWatch kernel netlink reflector...
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) forcing a new MASTER election
    Oct 15 11:50:31 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) forcing a new MASTER election
    Oct 15 11:50:32 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) Transition to MASTER STATE
    Oct 15 11:50:33 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) Entering MASTER STATE
    Oct 15 11:50:33 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) setting protocol VIPs.
    Oct 15 11:50:33 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 172.18.8.4
    Oct 15 11:50:33 BETAPROXYSLC01 avahi-daemon[510]: Registering new address record for 172.18.8.4 on eth0.IPv4.
    Oct 15 11:50:33 BETAPROXYSLC01 Keepalived_healthcheckers[2704]: Netlink reflector reports IP 172.18.8.4 added
    Oct 15 11:50:38 BETAPROXYSLC01 Keepalived_vrrp[2705]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 172.18.8.4
    
  • JohannesM
    JohannesM over 8 years
    Good find. You can also mark your own answer as solution.