Fehlerbehebung bei externen Passthrough-Network-Load-Balancern

In dieser Anleitung wird beschrieben, wie Sie Probleme mit der Konfiguration eines externen Google Cloud-Passthrough-Network-Load-Balancers beheben können. Machen Sie sich vor der Untersuchung von Problemen mit den folgenden Seiten vertraut:

Häufige Probleme mit dem Network Analyzer beheben

Der Network Analyzer überwacht automatisch die Konfiguration Ihres VPC-Netzwerks und erkennt sowohl suboptimale Konfigurationen als auch Fehlkonfigurationen. Der Analyzer ermittelt Netzwerkfehler, bietet mögliche Ursacheninformationen und schlägt Lösungen vor. Informationen zu den verschiedenen Fehlkonfigurationsszenarien, die automatisch von Network Analyzer erkannt werden, finden Sie in der Dokumentation zu Network Analyzer unter Load-Balancer-Statistiken.

Network Analyzer ist in der Google Cloud Console als Teil von Network Intelligence Center verfügbar.

Network Analyzer aufrufen

Einrichtungsprobleme beheben

Back-Ends haben nicht kompatible Balancing-Modi

Beim Erstellen eines Load-Balancers kann der folgende Fehler auftreten:

Validation failed for instance group INSTANCE_GROUP:

backend services 1 and 2 point to the same instance group
but the backends have incompatible balancing_mode. Values should be the same.

Dies ist der Fall, wenn Sie versuchen, dasselbe Back-End in zwei verschiedenen Load-Balancern zu verwenden, und die Back-Ends keine kompatiblen Balancing-Modi haben.

Hier finden Sie weitere Informationen:

Allgemeine Verbindungsprobleme beheben

Wenn Sie keine Verbindung zu Ihrem externen Passthrough-Network-Load-Balancer herstellen können, überprüfen Sie Ihr System auf folgende häufige Probleme:

  • Überprüfen Sie die Firewallregeln.

    • Sorgen Sie dafür, dass Firewallregeln für zulässigen eingehenden Traffic definiert sind, durch die Systemdiagnosen von Back-End-VMs erlaubt werden.
    • Achten Sie darauf, dass Firewallregeln eingehenden Traffic von den Clients zu den Back-End-VMs zulassen.
    • Sorgen Sie dafür, dass relevante Firewallregeln vorhanden sind, damit Traffic die Back-End-VMs an den vom Load-Balancer verwendeten Ports erreichen kann.
    • Wenn Sie Zieltags für die Firewallregeln verwenden, achten Sie darauf, dass die Backend-VMs des Load-Balancers entsprechend getaggt sind.

    Informationen zum Konfigurieren von Firewallregeln, die für Ihren externen Passthrough-Network-Load-Balancer erforderlich sind, finden Sie unter Firewallregeln konfigurieren.

  • Prüfen Sie, ob der Google-Gast-Agent auf der Backend-VM ausgeführt wird. Wenn Sie eine Verbindung zu einer fehlerfreien Backend-VM, aber keine Verbindung zum Load-Balancer herstellen können, wird der Google-Gast-Agent (früher Windows-Gastumgebung oder Linux-Gastumgebung) auf der VM möglicherweise nicht ausgeführt oder kann nicht mit dem Metadatenserver (metadata.google.internal, 169.254.169.254) kommunizieren.

    Überprüfen Sie Folgendes:

  • Prüfen Sie, ob Back-End-VMs Pakete akzeptieren, die an den Load-Balancer gesendet werden. Jede Back-End-VM muss so konfiguriert sein, dass sie Pakete akzeptiert, die an den Load-Balancer gesendet werden. Das heißt, das Ziel von Paketen, die an die Backend-VMs geliefert werden, ist die IP-Adresse des Load-Balancers. In den meisten Fällen wird dies mit einer lokalen Route getan.

    Bei VMs, die aus Google Cloud-Images erstellt wurden, installiert der Gast-Agent die lokale Route für die IP-Adresse des Load-Balancers. Google Kubernetes Engine-Instanzen, die auf Container-Optimized OS basieren, implementieren dies stattdessen mit iptables.

    Auf einer Linux-Back-End-VM können Sie prüfen, ob die lokale Route vorhanden ist, indem Sie den folgenden Befehl ausführen. Ersetzen Sie LOAD_BALANCER_IP durch die IP-Adresse des Load-Balancers:

    sudo ip route list table local | grep LOAD_BALANCER_IP
    
  • Prüfen Sie die Dienst-IP-Adresse und die Portbindung auf den Backend-VMs. Pakete, die an einen externen Passthrough-Network-Load-Balancer gesendet werden, kommen bei Backend-VMs mit der Ziel-IP-Adresse des Load-Balancers selbst an. Diese Art von Load-Balancer ist kein Proxy. Dies ist das erwartete Verhalten.

    Führen Sie den folgenden Befehl aus, um die Dienste aufzurufen, die einen Port überwachen:

    netstat -nl | grep ':PORT'
    

    Die auf der Backend-VM ausgeführte Software muss Folgendes tun:

    • Die IP-Adresse des Load-Balancers oder eine beliebige IP-Adresse überwachen (0.0.0.0 oder ::)
    • Überwachung eines Ports, der in der Weiterleitungsregel des Load-Balancers enthalten ist

    Zum Testen stellen Sie eine Verbindung zu einer Backend-VM über SSH oder RDP her. Führen Sie dann die folgenden Tests mit curl, telnet oder einem ähnlichen Tool aus:

    • Versuchen Sie, den Dienst zu erreichen, indem Sie ihn über die interne IP-Adresse der Backend-VM selbst, 127.0.0.1, oder localhost, kontaktieren.
    • Versuchen Sie, den Dienst über die IP-Adresse der Weiterleitungsregel des Load-Balancers zu erreichen.
  • Prüfen Sie, ob der Traffic der Systemdiagnose Backend-VMs erreichen kann. Wenn Sie prüfen möchten, ob der Systemdiagnose-Traffic Ihre Backend-VMs erreicht, aktivieren Sie das Logging für Systemdiagnosen und suchen Sie nach erfolgreichen Logeinträgen.

Fehlerbehebung bei Problemen mit freigegebenen VPC

Wenn Sie eine freigegebene VPC verwenden und keinen neuen externen Passthrough-Network-Load-Balancer in einem bestimmten Subnetz erstellen können, ist möglicherweise eine Organisationsrichtlinie die Ursache. Fügen Sie in der Organisationsrichtlinie das Subnetz der Liste zulässiger Subnetze hinzu oder wenden Sie sich an den Administrator Ihrer Organisation. Weitere Informationen finden Sie im Abschnitt zur Einschränkung constraints/compute.restrictSharedVpcSubnetworks.

Fehlerbehebung bei Failover-Problemen

Wenn Sie das Failover für einen externen Passthrough-Network-Load-Balancer konfiguriert haben, führen Sie die folgenden Schritte aus, um Ihre Konfiguration zu prüfen:

  • Stellen Sie sicher, dass Sie mindestens ein Failover-Backend festgelegt haben.
  • Überprüfen Sie die Richtlinieneinstellungen für Failover.
  • Sie müssen wissen, wie die Mitgliedschaft im aktiven Pool funktioniert und wann Google Cloud Failover und Failback ausführt. Prüfen Sie die Konfiguration des Load-Balancers mit den folgenden Schritten:

    • Verwenden Sie die Google Cloud Console, um die Anzahl der fehlerfreien Backend-VMs in jeder Backend-Instanzgruppe zu überprüfen. In der Google Cloud Console sehen Sie auch, welche VMs sich im aktiven Pool befinden.

    • Sorgen Sie dafür, dass die Failover-Quote des Load-Balancers richtig eingestellt ist. Wenn Sie beispielsweise zehn primäre VMs und ein auf 0.2 festgelegtes Failover-Verhältnis haben, führt Google Cloud ein Failover durch, wenn weniger als zwei (10 × 0.2 = 2) primäre VMs intakt sind. Ein Failover-Verhältnis von 0.0 hat eine besondere Bedeutung: Google Cloud führt ein Failover durch, wenn keine primären VMs fehlerfrei sind.

Sonstige Probleme, die auftreten können:

  • Der aktive Pool wechselt zwischen dem primären und dem Failover-Backend hin und her („flapping“).

    Wenn verwaltete Instanzgruppen mit Autoscaling und Failover verwendet werden, führt der aktive Pool möglicherweise wiederholt ein Failover und ein Failback zwischen dem primären und dem Failover-Backend aus. Google Cloud hindert Sie nicht daran, ein Failover mit verwalteten Instanzgruppen zu konfigurieren, da Ihre Bereitstellung von dieser Einrichtung profitieren könnte.

  • Das Deaktivieren des Verbindungsausgleichs funktioniert nicht.

    Das Deaktivieren des Verbindungsausgleichs funktioniert nur, wenn der Backend-Dienst mit TCP-Protokoll eingerichtet ist.

    Die folgende Fehlermeldung wird angezeigt, wenn Sie einen Backend-Dienst mit UDP erstellen, während der Verbindungsausgleich deaktiviert ist:

    gcloud compute backend-services create my-failover-bs
      --load-balancing-scheme external \
      --health-checks-region us-central1 \
      --health-checks my-tcp-health-check \
      --region us-central1 \
      --no-connection-drain-on-failover \
      --drop-traffic-if-unhealthy \
      --failover-ratio 0.5 \
      --protocol UDP
    ERROR: (gcloud.compute.backend-services.create) Invalid value for
    [--protocol]: can only specify --connection-drain-on-failover if the protocol is
    TCP.
    
  • Vorhandene Verbindungen werden während eines Failovers oder Failbacks beendet.

    Bearbeiten Sie die Failover-Richtlinie Ihres Backend-Dienstes. Achten Sie darauf, dass der Verbindungsausgleich bei Failover aktiviert ist.

Logging-Probleme beheben

Wenn Sie das Logging für einen externen Passthrough-Network-Load-Balancer konfigurieren, können die folgenden Probleme auftreten:

  • RTT-Messungen wie Bytewerte können in einigen Logs fehlen, wenn nicht genügend Pakete zur Erfassung von RTT geprüft werden. Bei Verbindungen mit geringem Volumen ist dies wahrscheinlicher.
  • RTT-Werte sind nur für TCP-Flüsse verfügbar.
  • Einige Pakete werden ohne Nutzlast gesendet. Wenn Nur-Header-Pakete abgetastet werden, ist der Bytewert 0.