Bei NSX Data Center for vSphere dient die Kontrollebene (netcpa) als lokaler Agentendaemon, der mit NSX Manager und dem Controller-Cluster kommuniziert. Die Funktion Kommunikationskanalstatus (Communication Channel Health) ist eine Überprüfung des Systemzustands, die in regelmäßigen Abständen den Zustand der zentralen bis zur lokalen Kontrollebene an NSX Manager meldet und die in der Benutzeroberfläche von NSX Manager angezeigt wird. Dieser Bericht dient auch als Taktsignal, um den Betriebszustand des NSX Manager zum ESXi-Host-netcpa-Kanal zu erkennen. Er bietet Fehlerdetails bei Kommunikationsfehlern, generiert ein Ereignis, wenn ein Kanal in den falschen Status verfällt, und erstellt außerdem Taktsignalnachrichten vom NSX Manager zu Hosts.

Problem

Konnektivitätsprobleme zwischen Steuerungsebenen-Agent und Controller.

Ursache

Wenn eine Verbindung ausfällt, funktioniert der Steuerungsebenen-Agent möglicherweise nicht ordnungsgemäß.

Lösung

  1. Wenn der Kanal in einen fehlerhaften Status wechselt, überprüfen Sie den Verbindungsstatus mit folgender API-Anforderung:
    GET https://<NSX_Manager_IP>/api/2.0/vdn/inventory/host/{hostId}/connection/status

    Weitere Informationen zur Verwendung dieser API finden Sie im NSX-API-Handbuch.

    Sie können „hostId“ entweder mithilfe der NSX Manager-CLI oder des vCenter Managed Object Browsers (MOB) finden.
    • Um den vCenter MOB zu verwenden, öffnen Sie einen Webbrowser und geben Sie unter http://vCenter-IP-Address/mob die URL des vCenter MOB ein. Weitere Informationen finden Sie in der Anleitung zum Suchen von Cluster- oder Host-MOID im NSX-API-Handbuch.
    • Um die NSX Manager-CLI zu verwenden, melden Sie sich als Admin-Benutzer an und führen Sie den Befehl show cluster all oder show cluster clusterID aus. Weitere Informationen zu diesen Befehlen finden Sie im Referenzschnellhandbuch für die NSX-Befehlszeilenschnittstelle.

    Nachfolgend ein Beispiel für die API-Antwort:

    <?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>

    Die folgenden Fehlercodes werden unterstützt:

    1255602: Unvollständiges Controller-Zertifikat 1255603: SSL-Handshake-Fehler 1255604: Verbindung abgelehnt. 1255605: Keep-alive-Zeitüberschreitung 1255606: SSL-Ausnahme 1255607: Ungültige Meldung 1255620: Unbekannter Fehler
  2. Ermitteln Sie den Grund für den Ausfall des Steuerungsebenen-Agenten wie folgt:
    1. Überprüfen Sie durch Ausführung des Befehls /etc/init.d/netcpad status auf den ESXi-Hosts den Status des Steuerungsebenen-Agenten auf den Hosts.
      [root@esx-01a:~] /etc/init.d/netcpad status
      netCP agent service is running
      
    2. Überprüfen Sie die Konfigurationen des Steuerungsebenen-Agenten mithilfe des Befehls more /etc/vmware/netcpa/config-by-vsm.xml. Es müssen die IP-Adressen der NSX Controller aufgeführt sein.
      [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. Überprüfen Sie mit folgendem Befehl die Verbindungen zwischen den Controllern und dem Steuerungsebenen-Agenten. Die Ausgabe ist eine Verbindung für jeden Controller.
    >[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. Überprüfen Sie mit folgendem Befehl, ob die Verbindungen zwischen den Controllern und dem Steuerungsebenen-Agenten den Status CLOSED oder CLOSE_WAIT aufweisen:
    esxcli network ip
    		connection list |grep "1234.*netcpa*" | egrep "CLOSED|CLOSE_WAIT"
  5. Falls der Steuerungsebenen-Agent bereits länger ausgefallen war, sind die Verbindungen möglicherweise gar nicht vorhanden. Um den Status der Verbindung zu validieren, führen Sie den folgenden Befehl aus. Die Ausgabe ist eine Verbindung für jeden Controller.
    esxcli network ip
    		connection list |grep "1234.*netcpa*" |grep ESTABLISHED
  6. Mechanismus zur automatischen Wiederherstellung des Steuerungsebenen-Agenten (netcpa): Der Prozess zur automatischen Überwachung des Steuerebenen-Agenten erkennt, dass der Steuerungsebenen-Agent einen fehlerhaften Status aufweist. Wenn der Steuerungsebenen-Agent einen fehlerhaften Status aufweist, reagiert er nicht mehr und versucht dann automatisch, eine Wiederherstellung durchzuführen.
    1. Wenn der Steuerungsebenen-Agent nicht mehr reagiert, wird eine Live-Core-Datei generiert. Sie finden die Core-Datei wie folgt:
      ls /var/core       
       netcpa-worker-zdump.000
    2. Syslog-Fehler werden in der Datei vmkwarning.log gemeldet.
      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!
      
    Hinweis:

    Wenn bei der Überwachung des Steuerungsebenen-Agenten aufgrund einer verspäteten Antwort auf die Statusüberprüfung ein temporärer Fehler auftritt, wird in den VMKernel-Protokollen möglicherweise eine Warnmeldung angezeigt, die der folgenden ähnelt.

    Warning - NETCPA getting netcpa status failed!

    Sie können diese Warnung ignorieren.

  7. Wenn keine automatische Wiederherstellung erfolgt, starten Sie den Steuerungsebenen-Agenten wie folgt neu:
    1. Melden Sie sich über SSH oder die Konsole als Root beim ESXi-Host an.
    2. Führen Sie den Befehl /etc/init.d/netcpad restart aus, um den Steuerungsebenen-Agenten auf dem ESXi-Host neu zu starten.