Les contrôleurs doivent fonctionner sur des disques à latence faible. Le cluster requiert un système de stockage de disque pour chaque nœud afin d'avoir une latence d'écriture maximale inférieure à 300 ms et une latence d'écriture moyenne inférieure à 100 ms.

Problème

  • Un dispositif NSX Controller déployé est déconnecté d'un cluster de contrôleurs.
  • Impossible de recueillir des journaux de contrôleur car la partition de disque est pleine.
  • Si le système de stockage ne respecte pas ces exigences, le cluster risque de devenir instable et d'entraîner l'interruption du système.
  • Les écouteurs TCP applicables à un dispositif NSX Controller en fonctionnement n'apparaissent plus dans la sortie de la commande show network connections of-type tcp.
  • Le contrôleur déconnecté tente de rejoindre le cluster à l'aide d'une UUID composée de zéros uniquement, ce qui n'est pas valide.
  • La commande de l'historique des clusters de contrôle d'affichage affiche un message ressemblant à :

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

  • L'exécution de la commande show log cloudnet/cloudnet_java-zookeeper*.log dans la console NSX Controller contient des entrées similaires à :
    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
  • Les journaux NSX Controller contiennent des entrées similaires à :
    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)

Cause

Ce problème survient en raison de lentes performances du disque, ce qui impacte négativement le cluster NSX Controller.

  • Vérifiez la présence de disques lents en recherchant les messages fsync dans le fichier /var/log/cloudnet/cloudnet_java-zookeeper log. Si fsync prend plus d'une seconde, ZooKeeper affiche un message d'avertissement fsync, qui est une bonne indication mettant en valeur la trop grande lenteur du disque. VMware recommande de consacrer un numéro d'unité logique spécifiquement pour le cluster de contrôles et/ou de déplacer la baie de stockage plus près du cluster de contrôles en termes de latences.
  • Vous pouvez afficher les calculs de latence en lecture et en écriture qui sont ajoutés à une moyenne de déplacement de 5 secondes (par défaut), qui est à son tour utilisée pour déclencher une alerte lors de la violation de la limite de la latence. L'alerte est désactivée une fois que la moyenne revient à la limite inférieure. Par défaut, la limite supérieure est définie sur 200 ms et la limite inférieure sur 100 ms. Vous pouvez utiliser la commande show disk-latency-alert config. La sortie s'affiche comme suit :
    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
  • Utilisez l'API REST GET /api/2.0/vdn/controller/<controller-id>/systemStats pour récupérer l'état d'alerte de latence des nœuds du contrôleur.
  • Utilisez l'API REST GET /api/2.0/vdn/controller pour indiquer si une alerte de latence du disque est détectée sur un nœud de contrôleur.

Solution

  1. Déployez NSX Controller sur des disques à faible latence.
  2. Chaque contrôleur doit utiliser son propre serveur de stockage de disque. Ne partagez pas le même serveur de stockage de disque entre deux contrôleurs.

Que faire ensuite

Pour plus d'informations sur l'affichage des alertes, consultez la section Afficher les alertes de latence du disque