TCP-Traffic-Routing einrichten

In dieser Anleitung wird beschrieben, wie Sie Cloud Service Mesh verwenden können, um Traffic an Dienste weiterzuleiten, die TCP-Traffic verarbeiten. Dazu gehören Datenbanken, VoIP-Dienste und Verwaltungsplattformen, die TCP-Traffic an bestimmten Ports oder Portbereichen empfangen.

Diese Anleitung gilt für die Bereitstellung mit den älteren APIs. Wenn Sie die neuen Diensweiterleitungs-APIs verwenden, die sich in der Vorschau befinden, finden Sie weitere Informationen unter Cloud Service Mesh-Einrichtung für TCP-Dienste mit einer TCPRoute-Ressource.

Mit dieser Anleitung können Sie Folgendes tun:

  • Einen Dienst einrichten, der eine Sammlung identischer Backends oder Endpunkte darstellt, die TCP-Anfragen von Clients akzeptieren.
  • Eine Routingregelzuordnung einrichten, damit Envoy-Proxys, die Cloud Service Mesh konfiguriert, TCP-Anfragen senden können.

Die folgenden Diagramme zeigen, wie TCP-Routing für VM-Instanzen bzw. Netzwerk-Endpunktgruppen (NEGs) funktioniert.

Compute Engine API-Ressourcen für VMs
Cloud Service Mesh für TCP und Compute Engine-Backends einrichten (zum Vergrößern klicken)


Compute Engine API-Ressourcen für NEGs
Cloud Service Mesh für TCP- und NEG-Backends einrichten (zum Vergrößern klicken)

Vorbereitung

  • Diese Anleitung baut auf dem Leitfaden zur Vorbereitung von Envoy für Service Mesh auf und setzt voraus, dass Sie mit der grundlegenden Funktionsweise von Cloud Service Mesh vertraut sind.
  • Sie konzentriert sich auf Aspekte der Einrichtung von Cloud Service Mesh, die sich beim Konfigurieren Ihrer Dienste und des Routings für TCP-Traffic unterscheiden.
  • In dieser Anleitung wird davon ausgegangen, dass Sie bereits eine verwaltete Instanzgruppe (Managed Instance Group, MIG) oder eine NEG eingerichtet haben.

Load-Balancing-Ressourcen konfigurieren

Führen Sie die folgenden Schritte aus, um die Load-Balancing-Ressourcen zu konfigurieren.

TCP-Systemdiagnose erstellen

Mit VMs einrichten

Verwenden Sie beim Konfigurieren von MIGs den folgenden Befehl, um eine globale Systemdiagnose zu erstellen. Ersetzen Sie PORT durch die TCP-Portnummer, die von dieser Systemdiagnose überwacht wird:

gcloud compute health-checks create tcp td-vm-health-check \
    --global \
    --port=PORT

Mit NEGs einrichten

Verwenden Sie beim Konfigurieren von NEGs den folgenden Befehl, um eine Systemdiagnose zu erstellen:

gcloud compute health-checks create tcp td-gke-health-check \
    --use-serving-port

Weitere Informationen zu Systemdiagnosen finden Sie hier:

Firewallregel für Systemdiagnose erstellen

Mit dieser Regel können Systemdiagnosen von Google Cloud-Systemdiagnosetools Ihre Backends erreichen.

gcloud

gcloud compute firewall-rules create fw-allow-health-checks \
  --action=ALLOW \
  --direction=INGRESS \
  --source-ranges=35.191.0.0/16,130.211.0.0/22 \
  --target-tags=TAGS \
  --rules=tcp:80

Weitere Informationen zu Firewallregeln für Systemdiagnosen finden Sie hier:

Backend-Dienst für TCP-Backends erstellen

Die Einrichtung von Backend-Diensten für TCP mit Cloud Service Mesh unterscheidet sich nur geringfügig von der Einrichtung für HTTP. Diese Unterschiede werden in den folgenden Schritten dargestellt.

Mit VMs einrichten

Wenn Sie MIGs konfigurieren, verwenden Sie mit den folgenden Befehl, um einen Backend-Dienst zu erstellen und die Systemdiagnose hinzuzufügen:

 gcloud compute backend-services create td-vm-service \
     --global \
     --load-balancing-scheme=INTERNAL_SELF_MANAGED \
     --health-checks=td-vm-health-check \
     --protocol=TCP \
     --global-health-checks

Im letzten Schritt zum Einrichten des Backend-Diensts fügen Sie die Backends hinzu. Da dieser Schritt zur Standardeinrichtung von Cloud Service Mesh gehört, die auch für TCP-basierte Dienste gilt, wird er hier nicht dargestellt. Weitere Informationen finden Sie unter Backend-Dienst erstellen im Einrichtungsleitfaden für Compute Engine-VMs mit automatischer Envoy-Bereitstellung.

Mit NEGs einrichten

Wenn Sie NEGs konfigurieren, verwenden Sie die folgenden Befehle, um einen Backend-Dienst zu erstellen und die Systemdiagnose mit dem Backend-Dienst zu verknüpfen:

gcloud compute backend-services create td-gke-service \
    --global \
    --health-checks=td-gke-health-check \
    --protocol=TCP \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED

Im letzten Schritt zur Einrichtung des Backend-Diensts muss Ihre Backend-Gruppe hinzugefügt werden. Da dieser Schritt zur Standardeinrichtung von Cloud Service Mesh gehört, die auch für TCP-basierte Dienste gilt, wird er hier nicht dargestellt. Weitere Informationen finden Sie unter Backend-Dienst erstellen im Einrichtungsleitfaden für GKE-Pods mit automatischer Envoy-Injektion.

Routing für TCP-basierten Backend-Dienst einrichten

In diesem Abschnitt erstellen Sie einen globalen Ziel-TCP-Proxy sowie eine globale Weiterleitungsregel. Mit diesen Ressourcen können Ihre Anwendungen mit den neu erstellten Backend-Diensten Traffic an die Backends senden.

Berücksichtigen Sie Folgendes:

  • Die Weiterleitungsregel muss das Load-Balancing-Schema INTERNAL_SELF_MANAGED enthalten.
  • Die virtuelle IP-Adresse (VIP) und der Port, die Sie in der Weiterleitungsregel konfigurieren, sind die VIP und der Port, die Ihre Anwendungen beim Senden von Traffic an Ihre TCP-Dienste verwenden. Sie können die VIP aus einem Ihrer Subnetze auswählen. Cloud Service Mesh nutzt diese VIP und den Port, um Clientanfragen einem bestimmten Backend-Dienst zuzuordnen.

    Informationen darüber, wie Clientanfragen Backend-Diensten zugeordnet werden, finden Sie unter Service Discovery.

gcloud

  1. Verwenden Sie den folgenden Befehl, um den Ziel-TCP-Proxy zu erstellen. Ersetzen Sie BACKEND_SERVICE durch den Namen des im vorherigen Schritt erstellten Backend-Diensts. Im folgenden Beispiel wird td-tcp-proxy als Name für den Ziel-TCP-Proxy verwendet. Sie können aber einen beliebigen Namen nutzen, der Ihren Anforderungen entspricht.

    gcloud compute target-tcp-proxies create td-tcp-proxy \
       --backend-service=BACKEND_SERVICE
    
  2. Erstellen Sie die Weiterleitungsregel. Mit der Weiterleitungsregel werden die VIP und der Port angegeben, die für die Zuordnung von Clientanfragen zu einem bestimmten Backend-Dienst verwendet werden. Weitere Informationen finden Sie unter gcloud compute forwarding-rules create in der Referenz zum Befehl gcloud.

    gcloud compute forwarding-rules create td-tcp-forwarding-rule \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --address=VIP\
        --target-tcp-proxy=td-tcp-proxy \
        --ports=PORT \
        --network=default
    

Cloud Service Mesh ist jetzt so konfiguriert, dass für den Traffic für die in der Weiterleitungsregel angegebene VIP ein Load-Balancing ausgeführt wird.

Beschränkungen

Sie können keine Google Cloud Armor-Sicherheitsrichtlinie konfigurieren, wenn Sie TCP-Traffic-Routing verwenden.

Problembehebung

Wenn Ihre Anwendungen versuchen, Anfragen an Ihre TCP-basierten Dienste zu senden, gehen Sie so vor:

  • Prüfen Sie, ob der Port der TCP-Systemdiagnose mit dem Port übereinstimmt, über den die TCP-Anwendung Traffic für die Systemdiagnose erwartet.
  • Prüfen Sie, ob der Portname des Backend-Diensts mit dem in der Instanzgruppe angegebenen Portnamen übereinstimmt.

Nächste Schritte