Bei einem Phantom-Controller kann es sich um eine Live-Controller-VM oder eine nicht vorhandene VM handeln, die am Cluster beteiligt ist oder nicht. NSX Manager synchronisiert die Liste aller VMs aus der vCenter Server-Bestandsliste. Ein Phantom-Controller wird erstellt, wenn vCenter Server oder der Host eine Controller-VM ohne Anforderung von NSX Manager löscht oder wenn die vCenter Server-Bestandsliste die Referenz-MOID der Controller-VMs ändert.

Wenn ein Controller von NSX erstellt wird, werden die Konfigurationsinformationen in NSX Manager gespeichert. NSX Manager stellt die neue Controller-VM über vCenter Server bereit.

Der NSX-Administrator stellt die Konfiguration, darunter auch den IP-Adressenpool, für NSX Manager bereit, um einen Controller zu erstellen. NSX Manager entfernt eine IP-Adresse aus dem Pool und überträgt diese IP mit dem Rest der Controller-Konfiguration als VM-Erstellungsanforderung an vCenter Server. NSX Manager wartet darauf, dass vCenter Server den Status der Anforderung bestätigt.

  • The controller creation process was successful: Wenn die Controller-VM erfolgreich erstellt wurde, startet vCenter Server die Controller-VM. NSX Manager speichert die Managed Object ID (ID für ein verwaltetes Objekt, MOID) der virtuellen Maschine mit dem Rest der Konfigurationsinformationen des Controllers. Bei der MOID (oder MO-REF) handelt es sich um einen eindeutigen Bezeichner, den vCenter allen Objekten seiner Bestandsliste zuweist. vCenter Server verwendet diese MOID auch, um die VM zu überwachen, wenn sie Teil der vCenter Server-Bestandsliste bleibt.
  • The controller creation process was not successful: Wenn IP- und Netzwerkverbindungskonfigurationen fehlerhaft waren, kann NSX ManagervCenter Server möglicherweise nicht kontaktieren. NSX Manager wartet für einen vordefinierten Zeitraum, um einen Einzelknoten-Controller-Cluster (für den ersten) oder einen neuen Controller für einen Beitritt zum aktiven Cluster zu erstellen. Wenn der Timer abläuft, übermittelt NSX Manager eine Anforderung an vCenter Server, die VM zu löschen. Die IP-Adresse wird an den Pool zurückgegeben, und NSX erklärt die Erstellung des Controllers für gescheitert.

Entstehung von Phantom-Controllern

Wenn NSX Manager die Löschung eines Controllers anfordert, ermittelt vCenter Server die Controller-VM für die Löschung mithilfe der MOID.

Doch wenn beliebige vCenter-Aktivitäten die Entfernung der Controller-VM aus der vCenter Server-Bestandsliste zur Folge haben, entfernt vCenter die MOID aus seiner Datenbank. Beachten Sie, dass die Controller-VM nach wie vor auf NSX Manager vorhanden und aktiv sein kann, auch wenn sie aus der vCenter-Bestandsliste entfernt wurde. Doch für vCenter Server ist die Controller-VM nicht mehr vorhanden. Obwohl die VM aus der Bestandsliste von vCenter Server entfernt wurde, wurde die VM möglicherweise nicht gelöscht. Wenn die VM noch aktiv ist, ist sie noch am Controller-Cluster von NSX beteiligt oder versucht, sich daran zu beteiligen.

In den folgenden Fällen kommt es besonders häufig zur Entstehung von Phantom-Controllern:

  • Der Administrator von vCenter Server entfernt den Host, der die Controller-VM aus der Bestandsliste enthält. Später fügt er den Host wieder hinzu. Wenn der Host entfernt wird, löscht vCenter Server alle dem Host und den darin enthaltenen VMs zugeordneten MOIDs. Wenn der Host später wieder hinzugefügt wird, weist vCenter Server dem Host und den VMs eine ganz neue MOID zu. Für die Benutzer von NSX erscheinen Host und VMs unverändert, doch für vCenter Server sind Host und VMs ganz neue Objekte. In der Praxis können Host und VMs jedoch unverändert genutzt werden. Die Anwendungen, die auf Host und VMs ausgeführt werden, ändern sich nicht.
  • Der Administrator von vCenter Server löscht die Controller-VM über vCenter Server oder unter Verwendung der Hostverwaltung. Die Löschung wurde nicht von NSX Manager initiiert.
  • Löschen umfasst in diesem Fall auch alle Host-/Speicherfehler, die zum Verlust der VM führen. In diesem Fall geht die VM für vCenter Server und auch für den Cluster und NSX Manager verloren. Doch weil die Löschung nicht von NSX Manager initiiert wurde, gehen sowohl NSX Manager und der Controller-Cluster davon aus, dass der Controller nach wie vor gültig ist. Der an NSX Manager zurückgegebene Controller-Status besagt, dass dieser Controller-Knoten ausgefallen ist und nicht Teil des Clusters ist. Es erfolgt keine Anzeige in der Benutzeroberfläche. NSX Manager verfügt auch über Protokolle, denen entnommen werden kann, dass der Controller nicht mehr erreichbar ist.

Vorgehen bei Ermitteln eines Phantom-Controllers

  1. Führen Sie eine Synchronisierung durch, wie unter NSX Controller ist getrennt beschrieben.
  2. Sehen Sie sich die Protokolleinträge an. Wenn die Controller-VM versehentlich gelöscht oder beschädigt wurde, müssen Sie die Option Löschen erzwingen (Forcefully Delete) verwenden, um den Eintrag aus der Datenbank von NSX Manager zu löschen. Einzelheiten dazu finden Sie unter Einen NSX-Controller löschen.
  3. Stellen Sie nach dem Löschen des Controllers Folgendes sicher:
  • Die Controller-VM ist tatsächlich gelöscht.
  • Der Befehl show control-cluster startup-nodes zeigt nur gültige Controller.
  • Die syslog-Einträge für NSX Manager zeigen keinen zusätzlichen Controller mehr.

Ab NSX 6.2.7 oder höher überprüft NSX Manager die vCenter-Bestandsliste, um sicherzustellen, dass die Controller-VM noch in der Bestandsliste vorhanden ist. Dies geschieht auf Basis der ursprünglichen MOID. Wenn NSX Manager die Controller-VM nicht in der Bestandsliste finden kann, sucht NSX Manager die VM mithilfe der Instanz-UUID der VM. Die Instanz-UUID ist in der VM gespeichert. Sie ändert sich also auch dann nicht, wenn die VM wieder zur vCenter-Bestandsliste hinzugefügt wird. Wenn NSX Manager die VM mit der Instanz-UUID finden kann, nimmt NSX Manager die neue MOID in seine Datenbank auf.

Wenn Sie die Controller-VM klonen, hat die geklonte VM jedoch dieselben Eigenschaften wie die ursprüngliche VM, sowie eine neue Instanz-UUID. NSX Manager kann die MOID für die geklonte VM nicht erkennen.

Protokolleinträge für Phantom-Controller

Der folgende Protokolleintrag auf Fehlerstufe wird angezeigt, wenn ein Phantom-Controller erkannt wird:

  • 2017-07-31 22:15:05.844 UTC ERROR NVPStatusCheck ControllerServiceImpl:2146 - Controller <#> does not exist, might be deleted already. Skip saving its connectivity info.
  • 2017-07-31 22:15:05.769 UTC ERROR NVPStatusCheck ControllerServiceImpl:2580 - the node is created by this NSX Manager <#>, but database has no record and delete might be in progress.