VIP не выпадает из резервной копии

Возможно, я не понимаю, как это должно работать, но я не могу понять, почему система BACKUP с этим базовым vrrp_instance сразу переходит к мастеру и, кажется, никогда не выполняет приоритет.

Почему виртуальный IP-адрес не будет сброшен системой резервного копирования, если оба исправны и подключены к сети?

Похоже, обе системы транслируют рекламу vrrp. От tcpdump в резервной системе:

betaproxyslc01.fakecorp.com> vrrp.mcast.net: vrrp betaproxyslc01.fakecorp.com> vrrp.mcast.net: VRRPv2, Реклама, vrid 51, prio 150, простой тип authtype, intvl 1s, длина 20,> addrs: virtual-app.fakecorp.com auth "пароль" 15: 52: 24.541637 IP (tos 0xc0, ttl 255, id 1611, смещение 0, флаги [нет], прото VRRP (112), длина 40)

betaproxyslc02.fakecorp.com> vrrp.mcast.net: vrrp betaproxyslc02.fakecorp.com> vrrp.mcast.net: VRRPv2, Реклама, vrid 51, prio 100, простой тип authtype, intvl 1s, длина 20,> addrs: virtual-app.fakecorp.com auth "пароль" 15: 52: 25.410073 IP (tos 0xc0, ttl 255, id 1779, смещение 0, флаги [нет], прото VRRP (112), длина 40)

но виртуальный IP-адрес отображается на обоих хостах с ip addr команда.

Вот конфиг:

global_defs {
   notification_email {
   me@fakecorp.com
   }
   notification_email_from keepalived@betaproxyslc01.fakecorp.com
   smtp_server mysmtpserver.fakecorp.com
   smtp_connect_timeout 30
   router_id BETAPROXYSLC01
}

vrrp_script chk_haproxy{
   script "killall -0 haproxy"
   interval 2 # check every 2 seconds
   weight 2   # add 2 points of prio if OK
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    notify /usr/local/bin/notify.sh
    authentication {
        auth_type PASS
        auth_pass keep0ut!
    }
    virtual_ipaddress {
        10.10.0.40
    }
    track_script{
        chk_haproxy
    }
}

На сервере BACKUP значение router_id отличается, состояние - BACKUP, приоритет - 100. Остальные настройки такие же.

Это происходит при установке CentOS 7 с Keepalived v1.2.10 (06/10,2014), гостевой виртуальной машиной Hyper-V, с ядром 3.10.0-123.8.1.el7.x86_64.

2 ответа

Решение

Связь VRRP между маршрутизаторами использует многоадресный IP-адрес 224.0.0.18[1] и IP-протокол № 112[2].

Таким образом, вам нужно только разрешить входящий и исходящий трафик с этими конкретными параметрами, чтобы VRRP работал правильно. Правила брандмауэра, которые обычно упоминаются, являются избыточными и излишне широко сформулированы.

Я предлагаю вам использовать эти правила брандмауэра:

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload

[1] http://tools.ietf.org/html/rfc5798
[2] http://tools.ietf.org/html/rfc5798

Обращаясь к информации о брандмауэре в конце этой страницы, я смог заставить ее работать, открыв брандмауэр с помощью:

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -i eth0 -d 224.0.0.0/8 -j ACCEPT
firewall-cmd --direct --perm --add-rule ipv4 filter INPUT 0 -i eth0 -d 224.0.0.0/8 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p vrrp -i eth0 -j ACCEPT
firewall-cmd --direct --perm --add-rule ipv4 filter INPUT 0 -p vrrp -i eth0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -p vrrp -o eth0 -j ACCEPT
firewall-cmd --direct --perm --add-rule ipv4 filter OUTPUT 0 -p vrrp -o eth0 -j ACCEPT

Только первые (два) варианта казались необходимыми. Как только я установил правило для приема трафика на адрес многоадресной рассылки, система резервного копирования заметила трафик vrrp, вернулась в режим резервного копирования и отозвала VIP. Полагаю, меня смутило то, что я мог видеть многоадресный трафик из обеих систем в обеих системах с помощью tcpdump.

Другие вопросы по тегам