Miałem dokładnie ten sam problem, jednak mój problem nie dotyczył zapory ani adaptera Ethernet, ale ustawienia „wagi” skryptu sprawdzającego.
To była moja konfiguracja:
MISTRZ:
vrrp_instance haproxy {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
UTWORZYĆ KOPIĘ ZAPASOWĄ:
vrrp_instance haproxy {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
Skrypt kontrolny:
vrrp_script chk_haproxy {
script "python /root/ha_check.py"
interval 2 # check every 2 seconds
weight 2
rise 2
fall 2
}
Powodem, dla którego mistrz odmówił wydania VIP, było to, że pomimo niepowodzenia skryptu, master nadal miał wyższy priorytet z serwera BACKUP. Stało się tak, ponieważ ustawienie „weight” na check_script nie wystarczało do pokrycia „GAP” między numerem priorytetu, co oznacza podniesienie numeru priorytetu serwera BACKUP większego niż ten z serwera MASTER Server. Wyjaśnię dalej:
Zgodnie z instrukcją zachowania, dodatnia liczba w ustawieniu „waga” doda tę liczbę do priorytetu, jeśli kontrola się powiedzie.
Liczba ujemna odejmie tę liczbę od numeru priorytetu, jeśli kontrola się nie powiedzie.
Zgodnie z moją konfiguracją:
Priorytety serwera Uprzednia awaria skryptu:
MASTER: 152
BACKUP: 100
Failover_IP: MASTER
IP przełączania awaryjnego jest poprawnie „przechwytywane” przez serwer główny, ponieważ serwer główny ma wyższy priorytet w porównaniu do serwera zapasowego (152> 100)
Priorytety serwera PO awarii skryptu:
serwer MASTER: 148
serwer BACKUP: 102
Failover_IP: STILL ON MASTER
IP pracy awaryjnej jest nadal na serwerze głównym, ponieważ Master ma ponownie wyższy priorytet w porównaniu do BACKUP (148> 102). Serwer MASTER odmówił wydania adresu IP i zrobił to, ponieważ jego priorytet był wyższy niż na drugim serwerze.
Rozwiązaniem mojej sytuacji było:
Rozwiązanie -1: Zmień numer priorytetowy obu serwerów, aby nie miały dużo „GAP”.
Na przykład:
Priorytet główny: 150
Priorytet kopii zapasowej: 149
Waga skryptu kontrolnego: jak to jest (2).
W powyższej konfiguracji, gdy skrypt się powiedzie (co oznacza, że wszystko jest w porządku), priorytetami będą:
Master: 152
Backup: 149
IP_Lokalizacja: On Master (152> 149)
Gdy skrypt się nie powiedzie:
Master: 150
Backup: 151
IP_Lokalizacja: On Backup (151> 150)
Rozwiązanie - 2: Zmień liczbę wag skryptu z 2 na -60