IPv6: IP-Schnittstellenoperationen werden mit HA-Failover mit Floating-IP gestoppt

9

Wenn ein Hauptknoten ausfällt, schwebt seine IP (IPv6) zum Standby-Knoten. Der Standby-Knoten soll fortan auf dieser IP Dienste bereitstellen.

Vorausgesetzt, dass diese beiden Knoten im selben LAN koexistieren, wird häufig festgestellt, dass der Standby-Knoten nicht mehr erreichbar ist. Die Schnittstelle ist UP und RUNNING mit der zugewiesenen IPv6-Adresse, aber alle IP-Operationen werden gestoppt.

Eine Möglichkeit ist die Duplicate Address Detection (DAD), wenn die IP im Standby-Modus konfiguriert wird. Der RFC sagt, dass alle IP-Operationen gestoppt werden müssen.

Meine Frage bezieht sich auf die Besonderheiten der IPv6-Implementierung des Linux-Kernels. Zuvor, vom Kernel-Code, vermutete ich, dass die sysctl-Variable "disable_ipv6" gesetzt werden muss. Aber der Kernel deaktiviert IPv6 nicht, er stoppt nur alle IP-Operationen an dieser Schnittstelle.

Kann jemand erklären, was der Linux-Kernel IPv6 macht, wenn er diese IP-Operationen bei einem DAD-Fehler "deaktiviert"? Kann dies auf normal zurückgesetzt werden, ohne die Schnittstelle DOWN & amp; OBEN? Alle Zeiger im Code werden sehr hilfreich sein.

    
user31986 06.07.2015, 22:26
quelle

2 Antworten

2

Dieser Artikel erarbeitet die Spezifikation und das Verhalten w.r.t. Was passiert wirklich im Kernel w.r.t. IPv6-Implementierung und die Floating-IP-Konfiguration. Es schlägt auch eine Lösung vor: Ссылка

Er erwähnt für "user-associated link-local", die IPv6-Zuweisung bleibt im vorläufigen Zustand hängen, markiert durch IFA_F_TENTATIVE im Kernel. Dieser Zustand impliziert, dass die DAD in Bearbeitung ist und die IP noch nicht validiert ist. Bei "automatisch zugewiesener Link-Local" versucht der DAD bei fehlgeschlagenem Versuch accept_dad mal (mit jeder neuen automatisch generierten IP-Adresse) und deaktiviert danach IPv6 für diese Schnittstelle.

Lösung, die es vorschlägt, ist: Deaktivieren Sie DAD vor der Konfiguration der Floating-IP und aktivieren Sie es zurück, wenn es nicht mehr im vorläufigen Zustand ist.

Weitere Details finden Sie unter dem obigen Link.

    
user31986 17.07.2015, 06:14
quelle
0

Dies hängt mit einem Fehler in Nova zusammen, Fehler # 101134

Die Dokumentation für accept_dad lautet:

  

accept_dad - INTEGER       Ob DAD (Duplicate Address Detection) akzeptiert werden soll.       0: Deaktiviere DAD       1: DAD aktivieren (Standard)       2: Aktivieren Sie DAD, und deaktivieren Sie den IPv6-Vorgang, wenn MAC-basiert ist          Es wurde eine doppelte link-lokale Adresse gefunden.

Sie können also sysctl -w net.ipv6.conf.default.accept_dad=0 verwenden, um den Fehler zu umgehen und den DAD zu deaktivieren.

Alternativ können Sie diesen Fehler beheben, indem Sie die vorgeschlagenen Patches in nova/virt/libvirt/firewall.py aus demselben Fehlerbericht implementieren.

Wenn es nicht bereits in der Klasse NWFilterFirewall vorhanden ist, fügen Sie die folgende statische Methode hinzu:

%Vor%

Fügen Sie dann diesen Filter zu Ihren Filterlisten in _ensure_static_filters() hinzu, indem Sie hinzufügen:

%Vor%

nachdem filter_set definiert wurde.

    
ssnobody 17.07.2015 23:41
quelle