Fehlerbehebung beim internen TCP/UDP-Load-Balancing

In diesem Leitfaden wird beschrieben, wie Sie Probleme bei der Konfiguration eines internen Google Cloud TCP/UDP-Load-Balancers beheben können.

Überblick

Folgende Arten von Problemen werden in dieser Anleitung behandelt:

  • Allgemeine Verbindungsprobleme
  • Probleme mit Back-End-Failover
  • Probleme mit dem Load-Balancer als nächstem Hop

Hinweise

Machen Sie sich vor der Untersuchung von Problemen mit den folgenden Seiten vertraut.

Zu allgemeinen Verbindungen:

Zum Failover:

Zum nächsten Hop:

Fehlerbehebung allgemeiner Verbindungsprobleme

  • Symptom: Ich kann keine Verbindung zu meinem internen TCP/UDP-Load-Balancer über einen VM-Client in einer anderen Region herstellen.
  • Ursache: Der globale Zugriff ist nicht aktiviert.

Wenn Sie keine Verbindung zu einem internen TCP/UDP-Load-Balancer herstellen können, überprüfen Sie Ihr System auf folgende Probleme:

  • 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.
  • Prüfen Sie, ob sich der Client, der eine Verbindung zum Load-Balancer herstellt, in derselben Region befindet wie der Load-Balancer. Wenn sich der Client in einer anderen Region befindet, achten Sie darauf, dass der globale Zugriff aktiviert ist.
  • Wenn Sie prüfen möchten, ob der Systemdiagnose-Traffic Ihre Back-End-VMs erreicht, aktivieren Sie das Logging der Systemdiagnose und suchen Sie nach erfolgreichen Logeinträgen.

  • Symptom: Ich kann über meinen internen TCP/UDP-Load-Balancer keine Verbindung zu meinem Dienst herstellen, aber ich kann mich direkt mit einer Back-End-VM verbinden.

  • Ursache: Die Gastumgebung wird entweder nicht ausgeführt oder kann nicht mit dem Metadatenserver kommunizieren (metadata.google.internal, 169.254.169.254).

Überprüfen Sie Folgendes:

  • Die Gastumgebung ist auf der Back-End-VM installiert und wird ausgeführt.
  • Die Firewallregeln im Gastbetriebssystem der Back-End-VM (iptables, Windows Firewall) dürfen den Zugriff auf den Metadatenserver nicht blockieren.
  • Der Dienst auf der Back-End-VM überwacht die IP-Adresse der Weiterleitungsregel des Load-Balancers.

Fehlerbehebung bei Problemen mit freigegebenen VPC

Wenn Sie eine freigegebene VPC verwenden und keinen neuen internen TCP/UDP-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 in der Einschränkung constraints/compute.restrictSharedVpcSubnetworks.

Fehlerbehebung bei Failover-Problemen

Für den Fall, dass Sie ein Failover für einen internen TCP/UDP-Load-Balancer konfiguriert haben, finden Sie in den folgenden Abschnitten mögliche Probleme, die auftreten können.

Verbindung

  • Stellen Sie sicher, dass Sie mindestens ein Failover-Back-End festgelegt haben.
  • Prüfen Sie die Richtlinieneinstellungen für Failover:
    • Failover-Quote
    • Traffic wird gelöscht, wenn alle Back-End-VMs fehlerhaft sind
    • Verbindungsausgleich bei Failover ist deaktiviert

Probleme mit verwalteten Instanzgruppen und Failovers

  • Symptom: Der aktive Pool wechselt zwischen dem primären und dem Failover-Back-End hin und her ("flapping").
  • Mögliche Ursache: Die Verwendung von verwalteten Instanzgruppen mit Autoscaling und Failover kann dazu führen, dass der aktive Pool wiederholt ein Failover und ein Failback zwischen dem primären und dem Failover-Back-End ausführt. Google Cloud hindert Sie nicht daran, ein Failover mit verwalteten Instanzgruppen zu konfigurieren, da Ihre Bereitstellung von dieser Einrichtung profitieren könnte.

Deaktivieren Sie die Beschränkung des Verbindungsausgleichs für Failover-Gruppen

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

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

gcloud compute backend-services create my-failover-bs
  --global-health-checks \
  --load-balancing-scheme internal
  --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.

Traffic wird an unerwartete Back-End-VMs gesendet

Kontrollieren Sie zunächst Folgendes: Wenn die Client-VM auch eine Back-End-VM des Load-Balancers ist, wird erwartet, dass Verbindungen, die an die IP-Adresse der Weiterleitungsregel des Load-Balancers gesendet werden, immer von der Back-End-VM selbst beantwortet werden. Weitere Informationen finden Sie unter Verbindungen von einem einzelnen Client testen und Anfragen von VMs mit Load-Balancing senden.

Wenn die Client-VM keine Back-End-VM des Load-Balancers ist:

  • Für Anfragen von einem einzelnen Client finden Sie unter Verbindungen von einem einzelnen Client testen weitere Informationen, um die Einschränkungen dieser Methode kennenzulernen.

  • Achten Sie darauf, dass Ihre Konfiguration der Firewallregeln für zulässigen eingehenden Traffic Systemdiagnosen erlaubt.

  • Achten Sie im Falle einer Failover-Konfiguration darauf, dass Sie genau verstehen, wie die Mitgliedschaft im aktiven Pool funktioniert und wann Google Cloud Failover und Failback ausführt. Überprüfen Sie die Konfiguration des Load-Balancers:

    • Verwenden Sie die Cloud Console, um die Anzahl der fehlerfreien Back-End-VMs in jeder Back-End-Instanzgruppe zu prüfen. In der 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.

Vorhandene Verbindungen werden während eines Failovers oder Failbacks beendet

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

Fehlerbehebung für den Load-Balancer als nächsten Hop

Wenn Sie einen internen TCP/UDP-Load-Balancer als nächsten Hop einer benutzerdefinierten statischen Route festlegen, können folgende Probleme auftreten:

Verbindung

  • Wenn Sie Ihr Back-End nicht per Ping kontaktieren können, beachten Sie, dass eine Route mit dem internen TCP/UDP-Load-Balancer als nächstem Hop nur für TCP- und UDP-Traffic unterstützt wird. Andere Protokollpakete wie ICMP werden vom Load-Balancer ignoriert. Weitere Informationen finden Sie unter TCP, UDP und anderen Protokolltraffic.

  • Wenn Sie einen internen TCP/UDP-Load-Balancer als nächsten Hop für eine benutzerdefinierte statische Route verwenden, wird sämtlicher TCP- und UDP-Traffic an die fehlerfreien Back-End-VMs des Load-Balancers gesendet. Dabei ist unerheblich, wie das Protokoll für den internen Back-End-Dienst des Load-Balancers konfiguriert ist bzw. wie der Port oder die Ports in der internen Weiterleitungsregel des Load-Balancers konfiguriert sind.

  • Sorgen Sie dafür, dass Sie Firewallregeln für zulässigen eingehenden Traffic erstellt haben, welche in der Lage sind, die Traffic-Quellen korrekt zu identifizieren, die an Back-End-VMs über den nächsten Hop der benutzerdefinierten statischen Route gesendet werden sollen. Pakete, die auf Back-End-VMs ankommen, behalten ihre Quell-IP-Adressen bei, auch wenn sie über eine benutzerdefinierte statische Route gesendet werden.

Ungültiger Wert für Zielbereich

Der Zielbereich einer benutzerdefinierten statischen Route kann nicht spezifischer sein als eine Subnetzroute in Ihrem VPC-Netzwerk. Die folgenden Lösungen können Ihnen helfen, wenn beim Erstellen einer benutzerdefinierten statischen Route diese Fehlermeldung angezeigt wird:

Invalid value for field 'resource.destRange': [ROUTE_DESTINATION].
[ROUTE_DESTINATION] hides the address space of the network .... Cannot change
the routing of packets destined for the network.
  • Sie können keine benutzerdefinierte statische Route mit einem Ziel erstellen, das genau mit einer Subnetzroute übereinstimmt oder spezifischer als diese ist (eine längere Maske hat). Weitere Informationen finden Sie unter Anwendbarkeit und Reihenfolge.

  • Wenn Pakete an ein unerwartetes Ziel gelangen, entfernen Sie andere Routen mit spezifischeren Zielen aus Ihrem VPC-Netzwerk. Sehen Sie sich die Routing-Reihenfolge an, um mehr über die Routenauswahl von Google Cloud zu erfahren.

Netzwerk-Tags werden nicht unterstützt

Sie können einer benutzerdefinierten statischen Route kein Netzwerk-Tag zuweisen, wenn der nächste Hop ein interner TCP/UDP-Load-Balancer ist. Der folgende gcloud-Befehl liefert beispielsweise die folgende Fehlermeldung:

$ gcloud compute routes create example-route \
--destination-range=0.0.0.0/0 \
--next-hop-ilb=internal-lb-forwarding-rule \
--tags='my_tag'

ERROR: (gcloud.compute.routes.create) Could not fetch resource:
 - Invalid value for field 'resource.tags': ''. Tag is not supported for routes
 with next hop ilb.

Nächste Schritte