Die NSX-Befehlszeilenschnittstelle kann detaillierte Verfolgungsprotokolle bieten, Pakete erfassen und die Metriken für die Fehlerbehebung des Lastausgleichsdiensts überprüfen.

Problem

Das Load Balancing lässt sich nicht wie gewünscht durchführen.

Prozedur

  1. Aktivieren Sie SSH für die virtuelle Appliance oder prüfen Sie, ob dies möglich ist. Beim Edge-Dienst-Gateway handelt es sich um eine virtuelle Appliance, bei der während der Bereitstellung die Option zur Aktivierung von SSH besteht. Wenn Sie SSH aktivieren müssen, wählen Sie die gewünschte Appliance aus. Klicken Sie dann im Menü Aktionen (Actions) auf Ändern der CLI-Anmeldedaten (Change CLI Credentials).

  2. Das Edge-Dienst-Gateway bietet mehrere Anzeigebefehle, mit denen Sie den Laufzeit- und den Konfigurationsstatus einsehen können. Mit diesen Befehlen können Sie Informationen zur Konfiguration und zu Statistiken anzeigen.
    nsxedge> show configuration loadbalancer 
    nsxedge> show configuration loadbalancer virtual [virtual-server-name] 
    nsxedge> show configuration loadbalancer pool [pool-name] 
    nsxedge> show configuration loadbalancer monitor [monitor-name] 
    nsxedge> show configuration loadbalancer profile [profile-name] 
    nsxedge> show configuration loadbalancer rule [rule-name]
    
  3. Damit das Load-Balancing und NAT ordnungsgemäß funktionieren, müssen Sie die Firewall aktivieren. Führen Sie den Befehl #show firewall aus. Wenn dieser Befehl keine hilfreiche Ausgabe bewirkt, finden Sie weitere Informationen im Abschnitt Überprüfung der Load-Balancer-Konfiguration und Fehlerbehebung über die Benutzeroberfläche.

  4. Damit der Load Balancer ordnungsgemäß funktioniert, ist NAT erforderlich. Führen Sie den Befehl show nat aus. Wenn dieser Befehl keine hilfreiche Ausgabe bewirkt, finden Sie weitere Informationen im Abschnitt Überprüfung der Load-Balancer-Konfiguration und Fehlerbehebung über die Benutzeroberfläche.

  5. Die Firewall sollte also aktiviert sein und für den Load Balancer sollten NAT-Regeln vorliegen. Außerdem sollten Sie sicherstellen, dass der Load-Balancing-Prozess aktiviert ist. Mit dem Befehl show service loadbalancer können Sie den Status der Load-Balancer-Engine überprüfen (L4/L7).
    nsxedge> show service loadbalancer
    haIndex:              0
    -----------------------------------------------------------------------
    Loadbalancer Services Status:
    
    L7 Loadbalancer     : running
    -----------------------------------------------------------------------
    L7 Loadbalancer Statistics:
    STATUS     PID        MAX_MEM_MB MAX_SOCK   MAX_CONN   MAX_PIPE   CUR_CONN   CONN_RATE  CONN_RATE_LIMIT MAX_CONN_RATE
    running    1580       0          2081       1024       0          0          0          0               0
    -----------------------------------------------------------------------
    L4 Loadbalancer Statistics:
    MAX_CONN   ACT_CONN   INACT_CONN TOTAL_CONN
    0          0          0          0
    
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    
    1. Verwenden Sie den show service loadbalancer session-Befehl, um die Sitzungstabelle des Lastausgleichsdiensts anzuzeigen. Wenn im System Datenverkehr vorhanden ist, werden Sitzungen angezeigt.
      nsxedge> show service loadbalancer session
      -----------------------------------------------------------------------
      L7 Loadbalancer Statistics:
      STATUS     PID        MAX_MEM_MB MAX_SOCK   MAX_CONN   MAX_PIPE   CUR_CONN   CONN_RATE  CONN_RATE_LIMIT MAX_CONN_RATE
      running    1580       0          2081       1024       0          0          0          0               0
      
      -----------------L7 Loadbalancer Current Sessions:
      
      0x2192df1f300: proto=unix_stream src=unix:1 fe=GLOBAL be=<NONE> srv=<none> ts=09 age=0s calls=2 rq[f=c08200h,
      i=0,an=00h,rx=20s,wx=,ax=] rp[f=008000h,i=0,an=00h,rx=,wx=,ax=] s0=[7,8h,fd=1,ex=] s1=[7,0h,fd=-1,ex=] exp=19s
      
      
      -----------------------------------------------------------------------
      L4 Loadbalancer Statistics:
      MAX_CONN   ACT_CONN   INACT_CONN TOTAL_CONN
      0          0          0          0
      
      L4 Loadbalancer Current Sessions:
      
      pro expire state       source       virtual    destination
      
    2. Überprüfen Sie den show service loadbalancer-Befehl, um Schicht-7-Status verfügbarer Tabellen des Lastausgleichsdiensts anzuzeigen. Beachten Sie, dass in dieser Tabelle keine Informationen zu beschleunigten virtuellen Servern angezeigt werden.
      nsxedge> show service loadbalancer table
      -----------------------------------------------------------------------
      L7 Loadbalancer Sticky Table Status:
      
      TABLE    TYPE    SIZE(BYTE)   USED(BYTE)
      
      
  6. Wenn alle erforderlichen Dienste ordnungsgemäß ausgeführt werden, prüfen Sie die Routing-Tabelle. Es muss eine Route zum Client und zu den Servern vorliegen. Mit den Befehlen show ip route und show ip forwarding können Sie anzeigen, welche Routen zu den Schnittstellen vorliegen.

  7. Stellen Sie sicher, dass es einen ARP-Eintrag für die Systeme, z. B. das Gateway oder den nächsten Hop, und die Backend-Server gibt. Prüfen können Sie dies mit dem Befehl show arp.

  8. Anhand der Informationen aus den Protokollen lässt sich Datenverkehr identifizieren, der bei der Diagnostizierung von Problemen hilfreich sein kann. Mit den Befehlen show log oder show log follow können Sie das Protokoll verfolgen, mit dem Sie den Datenverkehr identifizieren können. Beachten Sie, dass für die Ausführung des Load Balancers Protokollierung (Logging) aktiviert und auf Info oder Debug festgelegt werden muss.
    nsxedge> show log
    2016-04-20T20:15:36+00:00 vShieldEdge kernel: Initializing cgroup subsys cpuset
    2016-04-20T20:15:36+00:00 vShieldEdge kernel: Initializing cgroup subsys cpu
    2016-04-20T20:15:36+00:00 vShieldEdge kernel: Initializing cgroup subsys cpuacct
    ...
    
  9. Nachdem sichergestellt wurde, dass die grundlegenden Dienste mit den korrekten Pfaden zu den Clients ausgeführt werden, sehen wir uns an, was in der Anwendungsschicht abläuft. Mit dem Befehl show service loadbalancer pool können Sie die Poolstatus des Lastausgleichsdiensts (L4/L7) anzeigen. Ein Poolmitglied muss aktiv sein, um die Inhalte zu unterstützen. Für gewöhnlich sind mehrere Mitglieder vonnöten, da das Anforderungsvolumen die Kapazität einer einzelnen Arbeitslast überschreitet.
    nsxedge> show service loadbalancer pool
    -----------------------------------------------------------------------
    Loadbalancer Pool Statistics:
    
    POOL Web-Tier-Pool-01
    |  LB METHOD round-robin
    |  LB PROTOCOL L7
    |  Transparent disabled
    |  SESSION (cur, max, total) = (0, 0, 0)
    |  BYTES in = (0), out = (0)
       +->POOL MEMBER: Web-Tier-Pool-01/web-01a, STATUS: UP
       |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
       |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:00
       |  |  SESSION (cur, max, total) = (0, 0, 0)
       |  |  BYTES in = (0), out = (0)
       +->POOL MEMBER: Web-Tier-Pool-01/web-02a, STATUS: UP
       |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
       |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:01
       |  |  SESSION (cur, max, total) = (0, 0, 0)
       |  |  BYTES in = (0), out = (0)
    
    
  10. Überprüfen Sie den Status der Dienstüberwachung (OK, WARNUNG, KRITISCH), um den Zustand aller konfigurierten Backend-Server einzusehen.
    nsxedge> show service loadbalancer monitor
    -----------------------------------------------------------------------
    Loadbalancer Health Check Statistics:
    
    MONITOR PROVIDER   POOL               MEMBER     HEALTH STATUS
    built-in           Web-Tier-Pool-01   web-01a    default_https_monitor:L7OK
    built-in           Web-Tier-Pool-01   web-02a    default_https_monitor:L7OK
    
  11. Überprüfen Sie die Statistiken der Load-Balancer-Objekte (VIPs, Pools, Mitglieder). Überprüfen Sie, ob alle Mitglieder des spezifischen Pools aktiv sind und ausgeführt werden. Überprüfen Sie, ob der Transparent-Modus aktiviert ist. Wenn dies der Fall ist, sollte sich das Edge-Dienst-Gateway inline zwischen Client und Server befinden. Überprüfen Sie, ob sich die Sitzungsanzahl der Server erhöht.

    nsxedge> show service loadbalancer pool Web-Tier-VIP-01
    TIMESTAMP            	SESSIONS   	BYTESIN    	BYTESOUT   	SESSIONRATE	HTTPREQS
    2016-04-27 19:56:40  	00         	00         	00         	00         	00
    2016-04-27 19:55:00  	00         	32         	100        	00         	00
    

    nsxedge> show service loadbalancer pool Web-Tier-VIP-01 | MEMBER
    +—> POOL MEMBER: TENANT-1-TCP-POOL-80/SERVER-1, STATUS:  UP
    +—> POOL MEMBER: TENANT-1-TCP-POOL-80/SERVER-2, STATUS:  UP
  12. Überprüfen Sie, ob beim virtuellen Server ein Standardpool vorhanden und dieser an den Server gebunden ist. Wenn Sie Pools über Anwendungsregeln verwenden, müssen Sie sich die einzelnen Pools wie im Befehl #show service loadbalancer pool gezeigt ansehen. Geben Sie den Namen des virtuellen Servers an.
    nsxedge> show service loadbalancer virtual Web-Tier-VIP-01
    
    -----------------------------------------------------------------------
    Loadbalancer VirtualServer Statistics:
    
    VIRTUAL Web-Tier-VIP-01
    |  ADDRESS [172.16.10.10]:443
    |  SESSION (cur, max, total) = (0, 0, 0)
    |  RATE (cur, max, limit) = (0, 0, 0)
    |  BYTES in = (0), out = (0)
       +->POOL Web-Tier-Pool-01
       |  LB METHOD round-robin
       |  LB PROTOCOL L7
       |  Transparent disabled
       |  SESSION (cur, max, total) = (0, 0, 0)
       |  BYTES in = (0), out = (0)
          +->POOL MEMBER: Web-Tier-Pool-01/web-01a, STATUS: UP
          |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
          |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:00
          |  |  SESSION (cur, max, total) = (0, 0, 0)
          |  |  BYTES in = (0), out = (0)
          +->POOL MEMBER: Web-Tier-Pool-01/web-02a, STATUS: UP
          |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
          |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:01
          |  |  SESSION (cur, max, total) = (0, 0, 0)
          |  |  BYTES in = (0), out = (0)
    
    
  13. Wenn alle Konfigurationen in Ordnung zu sein scheinen und der Fehler dennoch fortbesteht, müssen Sie Datenverkehr erfassen, um herauszufinden, wo das Problem liegt. Es gibt zwei Verbindungen: vom Client zum virtuellen Server und vom Edge-Dienst-Gateway zum Backend-Pool (mit oder ohne Transparent-Konfiguration auf der Poolebene). Der Befehl #show ip forwarding führt die vNIC-Schnittstellen auf. Diese Daten können Sie nutzen.

    Nehmen wir beispielsweise an, der Clientcomputer befindet sich auf vNic_0 und der Server auf vNic_1. Sie verwenden die Client-IP-Adresse 192.168.1.2, die VIP-IP-Adresse 192.168.2.2, ausgeführt auf Port 80. Die IP-Adresse für die Load-Balancer-Schnittstelle ist 192.168.3.1 und die IP-Adresse des Backend-Servers 192.168.3.3. Es gibt zwei unterschiedliche Befehle für die Paketerfassung. Einer davon zeigt die Pakete an, der andere erfasst die Pakete in einer Datei, die Sie herunterladen können. Erfassen Sie die Pakete, um den abnormalen Fehler des Load Balancers zu erkennen. Sie können Pakete aus zwei Richtungen erfassen:

    • Erfassen Sie die Pakete vom Client.

    • Erfassen Sie die zum Backend-Server gesendeten Pakete.

    #debug packet capture interface interface-name [filter using _ for space]- creates a packet capture file that you can download
    #debug packet display interface interface-name [filter using _ for space]- outputs packet data to the console
    #debug show files - to see a list of packet capture
    #debug copy scp user@url:path file-name/all - to download the packet capture
    

    Beispiel:

    • Erfassung auf vNIC_0: debug packet display interface vNic_0

    • Erfassung auf allen Schnittstellen: debug packet display interface any

    • Erfassung auf vNIC_0 mit einem Filter: debug packet display interface vNic_0 host_192.168.11.3_and_host_192.168.11.41

    • Eine Paketerfassung aus dem Datenverkehr vom Client zum virtuellen Server: #debug packet display|capture interface vNic_0 host_192.168.1.2_and_host_192.168.2.2_and_port_80

    • Eine Paketerfassung aus dem Datenverkehr zwischen dem Edge-Dienst-Gateway und dem Server, auf dem sich der Pool im Transparent-Modus befindet: #debug packet display|capture interface vNic_1 host 192.168.1.2_and_host_192.168.3.3_and_port_80

    • Eine Paketerfassung aus dem Datenverkehr zwischen dem Edge-Dienst-Gateway und dem Server, auf dem sich der Pool nicht im Transparent-Modus befindet: #debug packet display|capture interface vNic_1 host 192.168.3.1_and_host_192.168.3.3_and_port_80