2016-03-15 7 views
1

Я пытаюсь использовать keepalived для мониторинга некоторых сервисов. Смотрите мой конфигурационный файл «keepalived.conf»:Ошибка Keepalived - состояние FAULT

! Configuration File for keepalived 
vrrp_script check_haproxy { 
     script "/usr/local/bin/check_haproxy.sh" 
     interval 2 
     fail 2 
     rise 2 
} 

vrrp_instance Vtest_2 { 
     interface eno16777736 

     track_interface { 
       eno16777736 
     } 

     state BACKUP 
     virtual_router_id 178 
     priority 100 
     nopreempt 

     unicast_src_ip 172.28.7.132 
     unicast_peer { 
       172.28.7.133 
     } 

     virtual_ipaddress { 
       195.221.2.14/32 dev eno16777736 
     } 

     track_script { 
       check_haproxy 
     } 

     notify /usr/local/bin/keepalived.state.sh 
} 

В моем сценарии я сравнить номер файла Pid и процесс обслуживания:

#!/bin/bash 
# check if haproxy is running, return 1 if not. 
# Used by keepalived to initiate a failover in case haproxy is down 

process="" 
HAPROXY_STATUS="" 

if [ -f "/var/run/haproxy.pid" ] 
then 
     process=$(cat /var/run/haproxy.pid) 
     HAPROXY_STATUS=$(ps -aux | grep -w "$process.*[h]aproxy") 
fi 

if [ "$HAPROXY_STATUS" ] 
then 
     exit 0 
else 
     exit 1 
fi 

Мой proble является то, что, когда я start keepived, когда команда:

keepalived -f /etc/keepalived/keepalived.conf --dont-fork --log-console --log-detail  

Все, что работает, работает с отказоустойчивыми работами. Но когда я запустить службу с Systemd:

systemctl start keepalived 

У меня есть эти строки в моем "/ Var/Журнал/сообщения" Файл:

Mar 15 17:05:51 localhost systemd: Starting Session 10 of user root. 
Mar 15 17:06:23 localhost systemd: Starting LVS and VRRP High Availability Monitor... 
Mar 15 17:06:23 localhost Keepalived[34182]: Starting Keepalived v1.2.13 (11/20,2015) 
Mar 15 17:06:23 localhost systemd: Started LVS and VRRP High Availability Monitor. 
Mar 15 17:06:23 localhost Keepalived[34183]: Starting Healthcheck child process, pid=34184 
Mar 15 17:06:23 localhost Keepalived[34183]: Starting VRRP child process, pid=34185 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Netlink reflector reports IP 172.28.7.132 added 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Netlink reflector reports IP fe80::20c:29ff:fe22:a18e added 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Registering Kernel netlink reflector 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Registering Kernel netlink command channel 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Registering gratuitous ARP shared channel 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Opening file '/etc/keepalived/keepalived.conf'. 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Configuration is using : 64365 Bytes 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: Using LinkWatch kernel netlink reflector... 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: VRRP_Instance(Vtest_2) Entering BACKUP STATE 
Mar 15 17:06:23 localhost Keepalived_vrrp[34185]: VRRP sockpool: [ifindex(2), proto(112), unicast(1), fd(10,11)] 
Mar 15 17:06:23 localhost Keepalived_healthcheckers[34184]: Netlink reflector reports IP 172.28.7.132 added 
Mar 15 17:06:23 localhost Keepalived_healthcheckers[34184]: Netlink reflector reports IP fe80::20c:29ff:fe22:a18e added 
Mar 15 17:06:23 localhost Keepalived_healthcheckers[34184]: Registering Kernel netlink reflector 
Mar 15 17:06:23 localhost Keepalived_healthcheckers[34184]: Registering Kernel netlink command channel 
Mar 15 17:06:23 localhost Keepalived_healthcheckers[34184]: Opening file '/etc/keepalived/keepalived.conf'. 
Mar 15 17:06:23 localhost Keepalived_healthcheckers[34184]: Configuration is using : 5344 Bytes 
Mar 15 17:06:23 localhost Keepalived_healthcheckers[34184]: Using LinkWatch kernel netlink reflector... 
Mar 15 17:06:26 localhost Keepalived_vrrp[34185]: VRRP_Instance(Vtest_2) Now in FAULT state 

Кто-нибудь есть идеи?

+0

У меня такая же проблема при использовании адреса моего скрипта в разделе сценария, но с использованием команд в порядке, вы нашли решение? –

ответ

1

Я использую очень простую конфигурацию с той же целью. Утилита pidof должна быть на большинстве ОС Linux по умолчанию. Попробуйте это, например:

vrrp_script check_haproxy 
{ 
    script "pidof haproxy" 
    interval 2 
    weight 2 
} 

Это рабочий приятель.

+0

- любой способ использовать адрес какого-либо скрипта в секции скрипта вместо команды? –

0

У меня была аналогичная проблема с моим track_script, который не работает при запуске keepalived в качестве службы systemctl.

Я узнал, что помещение track_script в /usr/libexec/keepalived решило проблему. Вероятно, это связано с this issue.

! Configuration File for keepalived 

global_defs { 
} 

vrrp_script odr_check { 
     script "/usr/libexec/keepalived/health_check.sh" 
     interval 2 
     weight 50 
     fall 1 
     rise 1 
} 

vrrp_instance VI_1 { 
    state BACKUP 
    interface eno16777984 
    virtual_router_id 42 
    priority 90 

    track_script { 
     odr_check 
    } 

    virtual_ipaddress { 
     192.168.110.84 
    } 
}