Mam dwie maszyny (A i B, A to Master) z systemem VRPP (z keepalived) dla wirtualnego adresu IP.
Jak mogę zapobiec ponownemu zostaniu Mistrzem A, jeśli zawiódł i nie wrócił (z jakiegokolwiek powodu)?
Robię to, abyśmy mieli jedno przełączenie awaryjne na drugie okno, a powrót do normy wymagałby ręcznej interwencji.
linux
keepalived
vrrp
MrMagu
źródło
źródło
Odpowiedzi:
Zgodnie z tym stosunkowo starym wątkiem na liście programistów Keepalived można to zrobić. Ustawiasz oba serwery na równy priorytet (lub wcale), i nie deklarujesz stanu jako MASTER lub BACKUP, a zamiast tego ustawiasz stan na EQUAL dla obu.
EDYCJA (07 grudnia 2017):
Wygląda na to, że EQUAL nie jest tak naprawdę prawidłowym stanem, mimo że wydaje się, że zapewnia pożądany efekt w chwili opublikowania tej odpowiedzi. Zwróć uwagę na poniższe komentarze, w szczególności link do bieżącej listy problemów dla keepalived, dostarczonej przez @cristi.
źródło
EQUAL
dyrektywę i traktowało ją tak, jakby żaden priorytet nie został ustawiony (co akurat przyniosło pożądany efekt).Rozwiązaliśmy to poprzez dodanie
nopreempt
flagi do naszego pliku konfiguracyjnego Keepalived. Nie musiałem nic zmieniać (nadal pozostawiałem jeden jako taki,MASTER
a drugi takBACKUP
i tak dalej). Zasadniczo mówi to, aby nie przełączać masterów tylko dlatego, że nowy serwer wszedł w tryb online, przełącza się tylko, gdy obecny master zawiedzie.źródło
Jak rozumiem, kiedy pojawia się nowy serwer VRRP, wymusza wybory, a obecny serwer nie ma żadnych korzyści, więc stary mistrz przyjdzie i wygra wybory. Wątpię, byś mógł zrobić wiele, by to powstrzymać, poza dość brutalnym Shoot The Other Node In The Head. Keepalive może mieć pewną konfigurację do kontrolowania procesu wyborczego. Niestety nie mam teraz czasu na sprawdzenie, ale spróbuję później.
źródło