Die Controller müssen auf Festplatten mit geringer Latenz betrieben werden. Für den Cluster ist erforderlich, dass das Festplattenspeichersystem für jeden Knoten eine Spitzenschreiblatenz von weniger als 300 ms und eine durchschnittliche Schreiblatenz von weniger als 100 ms aufweist.

Problem

  • Ein bereitgestellter NSX Controller wird von einem Controller-Cluster getrennt.
  • Es können keine Controller-Protokolle gesammelt werden, weil die Festplattenpartition voll ist.
  • Erfüllt das Speichersystem diesen Anforderungen nicht, kann der Cluster instabil werden und zu einem Systemausfall führen.
  • TCP-Listeners für einen funktionierenden NSX Controller erscheinen nicht mehr in der Ausgabe des Befehls show network connections of-type tcp.
  • Der abgetrennte Controller versucht, dem Cluster mit einer UUID aus lauter Nullen beizutreten, was nicht gültig ist.
  • Der Befehl "show control-cluster history" zeigt eine ähnliche Nachricht an wie:

    INFO.20150530-000550.1774:D0530 13:25:29.452639 1983 zookeeper_client.cc:774] Zookeeper client disconnected!

  • Das Ausführen des Befehls show log cloudnet/cloudnet_java-zookeeper*.log in der NSX Controller-Konsole enthält ähnliche Einträge wie:
    cloudnet_java-zookeeper.20150530-000550.1806.log-2015-05-30
    	 13:25:07,382 47956539 [SyncThread:1] WARN
    	 org.apache.zookeeper.server.persistence.FileTxnLog - fsync-ing the write ahead
    	 log in SyncThread:1 took 3219ms which will adversely effect operation latency.
    	 See the ZooKeeper troubleshooting guide
  • Das NSX Controller-Protokoll enthält ähnliche Einträge wie:
    D0525 13:46:07.185200 31975
    	 rpc-broker.cc:369] Registering address resolution for: 20.5.1.11:7777
    D0525 13:46:07.185246 31975
    	 rpc-tcp.cc:548] Handshake complete, both peers support the same
    	 protocol
    D0525 13:46:07.197654 31975
    	 rpc-tcp.cc:1048] Rejecting a connection from peer
    	 20.5.1.11:42195/ef447643-f05d-4862-be2c-35630df39060, cluster
    	 9f7ea8ff-ab80-4c0c-825e-628e834aa8a5, which doesn't match our cluster
    	 (00000000-0000-0000-0000-000000000000)
    D0525 13:46:07.222869 31975
    	 rpc-tcp.cc:1048] Rejecting a connection from peer
    	 20.5.1.11:42195/ef447643-f05d-4862-be2c-35630df39060, cluster
    	 9f7ea8ff-ab80-4c0c-825e-628e834aa8a5, which doesn't match our cluster
    	 (00000000-0000-0000-0000-000000000000)

Ursache

Dieses Problem ist auf eine langsame Festplattenleistung zurückzuführen, die sich negativ auf den NSX Controller-Cluster auswirkt.

  • Um langsame Festplatten zu ermitteln, suchen Sie nach fsync-Nachrichten in der /var/log/cloudnet/cloudnet_java-zookeeper-Protokolldatei. Wenn fsync länger als eine Sekunde dauert, zeigt Zookeeper eine fsync-Warnmeldung an und es deutet darauf hin, dass die Festplatte zu langsam ist. VMware empfiehlt, speziell für den Controller-Cluster eine LUN (Logical Unit Number) zuzuweisen und/oder den Speicher-Array hinsichtlich der Latenzen näher an den Controller-Cluster zu verschieben.
  • Sie können die Berechnungen der Lese- und Schreiblatenz anzeigen, die in einen gleitenden 5-Sekunden-Durchschnitt (standardmäßig) eingegeben werden, was wiederum eine Warnung auslöst, wenn der Latenzhöchstwert überschritten wird. Die Warnung wird abgeschaltet, wenn der Durchschnitt sich dem unteren Grenzwert nähert. Standardmäßig ist der Höchstwert auf 200 ms, der untere Grenzwert auf 100 ms eingestellt. Sie können den Befehl show disk-latency-alert config verwenden. Die Ausgabe wird wie folgt angezeigt:
    enabled=True   low-wm=51      high-wm=150
    nsx-controller # set disk-latency-alert enabled yes
    nsx-controller # set disk-latency-alert low-wm 100
    nsx-controller # set disk-latency-alert high-wm 200
  • Mit der GET /api/2.0/vdn/controller/<controller-id>/systemStats REST API können Sie den Latenzwarnstatus der Controller-Knoten abrufen.
  • Mit der GET /api/2.0/vdn/controller REST API können Sie anzeigen, ob eine Festplattenlatenz-Warnung auf einem Controller-Knoten erkannt wurde.

Lösung

  1. Stellen Sie NSX Controller auf Festplatten mit geringer Latenz bereit.
  2. Jeder Controller sollte einen eigenen Festplattenspeicher-Server nutzen. Verwenden Sie einen Festplattenspeicher-Server nicht für zwei Controller gleichzeitig.

Nächste Maßnahme

Weitere Informationen zum Anzeigen von Warnungen finden Sie unter Festplattenlatenzwarnungen anzeigen.