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.
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.
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:
Fügen Sie dann diesen Filter zu Ihren Filterlisten in _ensure_static_filters()
hinzu, indem Sie hinzufügen:
nachdem filter_set
definiert wurde.
Tags und Links linux-kernel network-programming ipv6 openstack openstack-nova