Keepalived не набирает кворум при появлении отслеживаемого процесса

Я использую keepalived v2.0.19 на CentOS7 с одним экземпляром vrrp, отслеживающим присутствие процесса haproxy. К сожалению, экземпляр vrrp никогда не выходит из состояния FAULT после перезапуска процесса haproxy

Вот моя конфигурация

vrrp_track_process chk_service {
    process haproxy
    weight 0
}

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 51
        priority 101
        advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.100 dev eth0 label eth0:shared
    }
    track_process {
        chk_service
    }
}

Журналы системных журналов показывают, что кворум теряется, когда процесс haproxy останавливается, но кворум никогда не достигается, когда процесс haproxy возвращается онлайн через несколько секунд.

systemd: Stopping HAProxy Load Balancer...
haproxy: [WARNING] 330/081104 (72258) : Exiting Master process...
haproxy: [ALERT] 330/081104 (72258) : Current program 'dataplane-api' (72260) exited with code 0 (Exit)
haproxy: [ALERT] 330/081104 (72258) : Current worker #1 (72261) exited with code 143 (Terminated)
haproxy: [WARNING] 330/081104 (72258) : All workers exited. Exiting... (0)
systemd: Stopped HAProxy Load Balancer.
Keepalived_vrrp[72335]: Quorum lost for tracked process chk_service
Keepalived_vrrp[72335]: (VI_1) Entering FAULT STATE
Keepalived_vrrp[72335]: (VI_1) sent 0 priority
Keepalived_vrrp[72335]: (VI_1) removing VIPs.
systemd: Starting HAProxy Load Balancer...
haproxy[113178]: Proxy stats started.
haproxy[113178]: Proxy main started.
haproxy[113178]: Proxy app started.
haproxy: [NOTICE] 330/081112 (113178) : New program 'dataplane-api' (113179) forked
haproxy: [NOTICE] 330/081112 (113178) : New worker #1 (113180) forked
systemd: Started HAProxy Load Balancer.

Обратите внимание, что наличие процесса haproxy правильно определяется, когда я запускаю процесс поддержки активности.

Вот вывод команды keepalived -v

Keepalived v2.0.19 (unknown)

Copyright(C) 2001-2019 Alexandre Cassen, <acassen@gmail.com>

Built with kernel headers for Linux 3.10.0
Running on Linux 3.10.0-1062.el7.x86_64 #1 SMP Thu Jul 18 20:25:13 UTC 2019

configure options: --prefix=/opt/keepalived

Config options:  LIBIPTC LIBIPSET_DYNAMIC LVS VRRP VRRP_AUTH OLD_CHKSUM_COMPAT FIB_ROUTING

System options:  PIPE2 SIGNALFD INOTIFY_INIT1 VSYSLOG EPOLL_CREATE1 IPV6_ADVANCED_API LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_PREF FRA_SUPPRESS_PREFIXLEN FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK FRA_OIFNAME IFA_FLAGS IP_MULTICAST_ALL LIBIPTC NET_LINUX_IF_H_COLLISION LIBIPVS_NETLINK VRRP_VMAC IFLA_LINK_NETNSID CN_PROC SOCK_NONBLOCK SOCK_CLOEXEC O_PATH GLOB_BRACE INET6_ADDR_GEN_MODE SO_MARK SCHED_RT SCHED_RESET_ON_FORK

Я безуспешно пытался установить минимальное и максимальное значения кворума.

Кто-нибудь сталкивался с такой же проблемой?

0
задан 27 November 2019 в 10:50
1 ответ

Была такая же проблема с keepalived версии 2.0.19.

В нашем случае проблема заключалась в том, что для процесса с pid больше 32767 keepalived пытался открыть файл :/proc/xxxxx/comm с отрицательным числом xxxx. Поэтому, если компьютер работает в течение длительного периода времени, а PID становится огромным, вы можете поэкспериментировать с этим поведением.

К счастью, в Keepalived 2.0.20 эта ошибка исправлена, как указано здесь.:

  • Исправлен процесс отслеживания_с PID > 32767

https://www.keepalived.org/changelog.html(Выпуск 2.0.20)

0
ответ дан 14 October 2021 в 20:20

Теги

Похожие вопросы