Nova-Netzwerk-DHCP gibt IP nicht frei mit force_dhcp_release=True

Nova-Netzwerk-DHCP gibt IP nicht frei mit force_dhcp_release=True

Das Problem, das ich sehe, ist, dass, wenn nova-network dhcprelease bei Beendigung der Instanz aufruft (aufgrundforcedhcp_release=Wahr) die Adresse wird nicht immer freigegeben(Syslog zeigt keine DHCPRELEASE-Anforderung an). Wenn Nova dann später einer neuen Instanz die gleiche IP-Adresse zuweist, dienichtfreigegeben, wird die DHCP-Anforderung ignoriert und ein Fehler im Syslog zeigt an, dass dnsmasq die Anforderung gesehen und abgelehnt hat, weil die IP-Adresse bereits an eine andere MAC-Adresse (diejenige, die zur alten, beendeten VM gehört) geleast war.

Einige Details zu meinem Setup:

  • Juno-Version
  • Legacy-(Nova-)Netzwerk
  • Ubuntu 14.04
  • DHCP wird von DNSMASQ verwaltet.

Wenn Hosts ihre IP-Adresse vom DHCP-Server beziehen können, scheint alles einwandfrei zu funktionieren. Es scheint, als ob der Fehler nur dann auftritt, wenn eine IP nicht freigegeben werden kann und die nachfolgende Verwendung für zukünftige VMs blockiert wird.

Ich habe meine Nova-*-Protokolle auf Fehler überprüft und keine gefunden.Die einzigen Fehler treten in meinem Syslog auf, wenn dnsmasq sich aufgrund der widersprüchlichen MAC-Adressen weigert, die IP-Adresse zu leasen.

Ich wäre für alle Informationen und Vorschläge sehr dankbar.

Antwort1

Ich kann noch immer keine perfekte Lösung für dieses Problem finden, aber ich habe den Problembereich gefunden und kenne einige Workarounds.

1. Problembereich:Das Problem liegt bei dnsmasq, nicht bei OpenStack. Ich habe beobachtet, dass OpenStack jedes Mal nach dem Beenden der Instanz die Funktion „dhcprelease“ ausführt, dnsmasq jedoch nur auf wenige dhcprelease-Anfragen antwortet.

2. Problemumgehung:Die Standard-Lease-Dauer eines IP beträgt 24 Stunden (86400 Sekunden), was bedeutet, dass jede Instanz ihren Lease alle 24 Stunden erneuern muss. Wenn die Instanz ihren IP-Lease nicht erneuert, betrachtet dnsmasq diesen Lease als ungültig und gibt die durch diesen Lease erhaltene IP frei.
Ich habe diesen Lease auf 3 Minuten (180 Sekunden) reduziert. Daher kann kein Lease die IP länger als 3 Minuten nach Beendigung der Instanz halten.

Schritte zum Reduzieren der Leasingzeit auf 3 Minuten:

Führen Sie die folgenden Schritte nacheinander auf allen Compute-Knoten aus.

  1. Öffnen Sie eine Datei /etc/nova/nova.conf

vi /etc/nova/nova.conf

  1. Konfigurieren Sie im Abschnitt [DEFAULT] die dhcp_lease_time.
    Die Angabe erfolgt in Sekunden.

[STANDARD]
...
dhcp_lease_time = 180

  1. Datei speichern und beenden.

  2. Beenden Sie den dnsmasq-Prozess für jede Bridge auf dem Server. (ODER Sie können killall auch ausführen, wenn dnsmasq nicht für andere Zwecke verwendet wird)

kill (ODER killall dnsmasq)

  1. Starten Sie die Dienste neu.

nova-api-metadata
neu starten nova-compute
neu starten nova-network neu starten

verwandte Informationen