Verhindern Sie, dass VRRP Master Master wird, sobald er fehlgeschlagen ist


11

Ich habe zwei Maschinen (A und B, A ist Master), auf denen VRPP (von keepalived) für eine virtuelle IP ausgeführt wird.

Wie kann ich verhindern, dass A wieder Meister wird, wenn es fehlgeschlagen ist und wieder auftaucht (aus welchem ​​Grund auch immer)?

Ich mache das so, dass wir ein einziges Failover auf die zweite Box haben und die Rückkehr zum Normalzustand manuelle Eingriffe erfordern würde.


Ich bin zu neu, um das Tag "VRRP"
MrMagu

Antworten:


13

Laut diesem relativ alten Thread auf der Keepalived-Entwicklerliste ist dies möglich. Sie setzen beide Server auf gleiche Priorität (oder gar keine) und deklarieren den Status weder für MASTER noch für BACKUP. Stattdessen setzen Sie den Status für beide auf EQUAL.

BEARBEITEN (07.12.2017):

Es scheint, dass EQUAL tatsächlich kein gültiger Status ist, obwohl es zum Zeitpunkt der Veröffentlichung dieser Antwort den gewünschten Effekt zu bieten scheint. Bitte beachten Sie die folgenden Kommentare, insbesondere den von @cristi bereitgestellten Link zur Liste der aktuellen Probleme für Keepalived.


3
Vielen Dank - Auch bei Verwendung der obigen Konfiguration (mit gleicher Priorität und unter Verwendung von "EQUAL") ist die VRRP-Instanz mit der niedrigsten IP zu MASTER.
MrMagu

1
Das ist falsch. Siehe diese Nachricht von den Entwicklern: github.com/acassen/keepalived/issues/707
cristi

@cristi - Es war eine funktionierende Lösung zum Zeitpunkt der Veröffentlichung (2009), die wiederum auf Informationen beruhte, von denen ich eindeutig bestätigte, dass sie schon damals alt waren (2003). Ich habe den Link in meiner Antwort auf einen funktionierenden aktualisiert, da osdir.com anscheinend nicht mehr über die Keepalived-Devel-Archive verfügt. Ich würde vermuten, dass die Software zu diesem Zeitpunkt die ungültige EQUALDirektive stillschweigend ignorierte und sie so behandelte, als ob überhaupt keine Priorität festgelegt worden wäre (was zufällig den gewünschten Effekt hatte).
James Sneeringer

8

Wir haben dies gelöst, indem wir das nopreemptFlag zu unserer Keepalived-Konfigurationsdatei hinzugefügt haben . Musste nichts anderes ändern (immer noch eins als MASTERund eins als BACKUPund so weiter). Grundsätzlich bedeutet dies, dass der Master nicht gewechselt werden soll, nur weil ein neuer Server online gegangen ist, sondern nur gewechselt werden soll, wenn der aktuelle Master ausfällt.


4
from " article.gmane.org/gmane.linux.keepalived.devel/1537 " Wenn "state" auf MASTER gesetzt ist, wird "nopreempt" grundsätzlich ignoriert, da der Computer mit "state MASTER" nur die IP-Adresse abruft die Maschine mit "State BACKUP" ohne eine Wahl abzuhalten. Ich musste beide Maschinen so einstellen, dass BACKUP mit einer höheren Priorität angegeben wurde, damit "nopreempt" wie beabsichtigt funktioniert.
MrMagu

Priorität und Status gelöscht und Nopreempt hinzugefügt. Funktioniert gut für mich
Rihard Novozhilov

-1

So wie ich es verstehe, erzwingt ein neuer VRRP-Server eine Wahl, und der aktuelle Server erhält keinen Vorteil, sodass der alte Meister auftaucht und die Wahl gewinnt. Ich bezweifle, dass Sie viel tun können, um dies zu stoppen, abgesehen von dem ziemlich brutalen Shoot The Other Node In The Head. Keepalive verfügt möglicherweise über eine Konfiguration zur Steuerung des Wahlprozesses. Leider habe ich jetzt keine Zeit, dies zu überprüfen, aber ich werde versuchen, es später zu überprüfen.


Dafür gibt es ein Konfigurationsflag, daher ist diese Antwort falsch.
Davr

Die abgestimmte Antwort ist für eine allgemeine Bereitstellung von vrrp korrekt, bei der kein Master die Kontrolle übernehmen soll, wenn er wieder in Betrieb genommen wird. Wie Sie sagen, gibt es auch eine Keepalived-Methode, die wahrscheinlich korrekter ist, wenn Sie Linux-HA-Inhalte ausführen, anstatt nur vrrp zu verwenden, um L3-Redundanz für eine Standardroute bereitzustellen (der traditionellere Grund für die Verwendung von vrrp).
Chris
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.