Sur NSX Data Center for vSphere, le plan de contrôle (netcpa) fonctionne comme daemon d'agent local, en communiquant avec NSX Manager et le cluster de contrôleurs. La fonctionnalité Intégrité du canal de communication (Communication Channel Health) est une vérification d'intégrité qui signale périodiquement l'état du plan de contrôle central au plan de contrôle local à NSX Manager et s'affiche dans l'interface utilisateur de NSX Manager. Ce rapport sert aussi de pulsation pour détecter l'état opérationnel du dispositif NSX Manager pour le canal netcpa de l'hôte ESXi. Il fournit les détails des erreurs pendant les erreurs de communication, génère un événement lorsqu'un canal passe à un état incorrect et génère aussi des messages de pulsation du dispositif NSX Manager vers les hôtes.

Problème

Problèmes de connectivité entre l'agent du plan de contrôle et le contrôleur.

Cause

Il se peut que l'agent du plan de contrôle ne fonctionne pas correctement en cas de connexion manquante.

Solution

  1. Validez l'état de connexion lorsque le canal passe dans un état incorrect à l'aide de la demande d'API suivante :
    GET https://<NSX_Manager_IP>/api/2.0/vdn/inventory/host/{hostId}/connection/status

    Pour plus d'informations sur l'utilisation de cette API, reportez-vous au Guide de NSX API.

    Pour rechercher l'élément « hostId », vos pouvez utiliser l'interface de ligne de commande de NSX Manager ou vCenter Managed Object Browser (MOB).
    • Pour utiliser vCenter MOB, ouvrez un navigateur Web et entrez l'URL de vCenter MOB à http://Adresse-IP-vCenter/mob. Consultez les instructions sur la recherche d'un MOID de cluster ou d'hôte dans le Guide de NSX API.
    • Pour utiliser l'interface de ligne de commande de NSX Manager, connectez-vous en an qu'utilisateur admin, puis exécutez la commande show cluster all ou show cluster clusterID. Pour plus d'informations sur cette commande, consultez la Référence rapide des lignes de commande de NSX.

    Vous trouverez ci-après un exemple de réponse d'API :

    <?xml version="1.0" encoding="UTF-8"?>
    <hostConnStatus>
      <hostName>10.161.246.20</hostName>
      <hostId>host-21</hostId>
      <nsxMgrToFirewallAgentConn>UP</nsxMgrToFirewallAgentConn>
      <nsxMgrToControlPlaneAgentConn>UP</nsxMgrToControlPlaneAgentConn>
      <hostToControllerConn>DOWN</hostToControllerConn>
      <fullSyncCount>-1</fullSyncCount>
      <hostToControllerConnectionErrors>
        <hostToControllerConnectionError>
          <controllerIp>10.160.203.236</controllerIp>
          <errorCode>1255604</errorCode>
          <errorMessage>Connection Refused</errorMessage>
        </hostToControllerConnectionError>
        <hostToControllerConnectionError>
          <controllerIp>10.160.203.237</controllerIp>
          <errorCode>1255603</errorCode>
          <errorMessage>SSL Handshake Failure</errorMessage>
        </hostToControllerConnectionError>
      </hostToControllerConnectionErrors>
    </hostConnStatus>

    Les codes d'erreur suivants sont pris en charge :

    1255602 : Certificat de contrôleur incomplet 1255603 : Échec d'établissement d'une liaison SSL 1255604 : Connexion refusée 1255605 : Expiration de la connexion persistante 1255606 : Exception SSL 1255607 : Message incorrect 1255620 : Erreur inconnue
  2. Déterminez la raison pour laquelle l'agent du plan de contrôle est inactif de la manière suivante :
    1. Vérifiez l'état de l'agent du plan de contrôle sur les hôtes en exécutant la commande /etc/init.d/netcpad status sur les hôtes ESXi.
      [root@esx-01a:~] /etc/init.d/netcpad status
      netCP agent service is running
      
    2. Vérifiez les configurations de l'agent du plan de contrôle à l'aide de la commande more /etc/vmware/netcpa/config-by-vsm.xml. Les adresses IP des instances de NSX Controller devraient apparaître.
      [root@esx-01a:~] more /etc/vmware/netcpa/config-by-vsm.xml
      <config>
        <connectionList>
          <connection id="0000">
            <port>1234</port>
            <server>192.168.110.31</server>
            <sslEnabled>true</sslEnabled>
            <thumbprint>A5:C6:A2:B2:57:97:36:F0:7C:13:DB:64:9B:86:E6:EF:1A:7E:5C:36</thumbprint>
          </connection>
          <connection id="0001">
            <port>1234</port>
            <server>192.168.110.32</server>
            <sslEnabled>true</sslEnabled>
            <thumbprint>12:E0:25:B2:E0:35:D7:84:90:71:CF:C7:53:97:FD:96:EE:ED:7C:DD</thumbprint>
          </connection>
          <connection id="0002">
            <port>1234</port>
            <server>192.168.110.33</server>
            <sslEnabled>true</sslEnabled>
            <thumbprint>BD:DB:BA:B0:DC:61:AD:94:C6:0F:7E:F5:80:19:44:51:BA:90:2C:8D</thumbprint>
          </connection>
        </connectionList>
       ...
      
  3. Validez les connexions aux contrôleurs depuis l'agent du plan de contrôle à l'aide de la commande suivante. La sortie est une connexion pour chaque contrôleur.
    >[root@esx-01a:~] esxcli network ip connection list | grep 1234
    tcp     0   0  192.168.110.51:16594     192.168.110.31:1234   ESTABLISHED     36754  newreno  netcpa-worker
    tcp     0   0  192.168.110.51:46917     192.168.110.33:1234   ESTABLISHED     36754  newreno  netcpa-worker
    tcp     0   0  192.168.110.51:47891     192.168.110.32:1234   ESTABLISHED     36752  newreno  netcpa-worker
    
  4. Validez les connexions aux contrôleurs depuis l'agent du plan de contrôle pour afficher l'état CLOSED ou CLOSE_WAIT en exécutant la commande suivante :
    esxcli network ip
    		connection list |grep "1234.*netcpa*" | egrep "CLOSED|CLOSE_WAIT"
  5. Si l'agent du plan de contrôle est inactif depuis longtemps, il se peut que les connexions ne soient pas présentes du tout. Pour valider l'état de connexion, exécutez la commande suivante. La sortie est une connexion pour chaque contrôleur.
    esxcli network ip
    		connection list |grep "1234.*netcpa*" |grep ESTABLISHED
  6. Mécanisme de récupération automatique de l'agent du plan de contrôle (netcpa) : le processus de surveillance de l'agent du plan de contrôle automatique détecte que l'agent du plan de contrôle est dans un état incorrect. Lorsque l'agent du plan de contrôle est dans un état incorrect, il ne répond plus et essaie automatiquement de récupérer.
    1. Lorsque l'agent du plan de contrôle ne répond plus, un fichier de base dynamique est généré. Vous pouvez trouver le fichier de base comme suit :
      ls /var/core       
       netcpa-worker-zdump.000
    2. Une erreur de Syslog est signalée dans le fichier vmkwarning.log.
      cat /var/run/log/vmkwarning.log | grep NETCPA
      2017-08-11T06:32:17.994Z cpu1:1000044539)ALERT: Critical - NETCPA is hanged
      Taking live-dump & restarting netcpa process!
      
    Note :

    Si le moniteur de l'agent du plan de contrôle connaît une défaillance temporaire en raison d'une réponse différée à la vérification de l'état, un message d'avertissement semblable au suivant peut être consigné dans les journaux VMKernel.

    Avertissement - NETCPA n'a pas pu obtenir l'état de netcpa !

    Vous pouvez ignorer cet avertissement.

  7. Si le problème n'est pas récupéré automatiquement, redémarrez l'agent du plan de contrôle comme suit :
    1. Connectez-vous en tant que racine à l'hôte ESXi via SSH ou via la console.
    2. Exécutez la commande /etc/init.d/netcpad restart pour redémarrer l'agent du plan de contrôle sur l'hôte ESXi.