Direkte gRPC-Verbindung

Die direkte Verbindung ist eine Verbindungslösung, die leistungsstarke, authentifizierte, direkte gRPC-Netzwerkverbindungen zwischen einer Google Cloud Client bibliothek und Cloud Storage ermöglicht. Dadurch werden die Latenz und der Verbindungs aufwand reduziert. Wenn Sie gRPC verwenden, um eine Verbindung zu Google Cloud Cloud Storage über eine direkte Verbindung herzustellen, werden Anfragen, die über unterstützte Google Cloud Clientbibliotheken initiiert wurden, direkt an Cloud Storage weitergeleitet, wobei Google Front Ends (GFEs)umgangen werden.

Die direkte Verbindung ist nur für Anfragen verfügbar, die von Compute Engine-VMs (Virtual Machines) gesendet werden.

Anforderungen für die direkte Verbindung

Die direkte Verbindung ist standardmäßig aktiviert, wenn Sie unterstützte Cloud Storage-Clientbibliotheken verwenden, um eine Verbindung zu Cloud Storage herzustellen. Sie ist jedoch nur verfügbar, wenn alle folgenden Bedingungen erfüllt sind:

  • Den Compute Engine-VMs, die mit Cloud Storage interagieren, muss ein Dienstkonto zugewiesen sein, auch wenn das Dienstkonto keine Berechtigungen hat. Das Dienstkonto wird verwendet, um die Compute Engine-VM im Application Layer Transport Security Handshake-Prozess darzustellen.

  • Die Compute Engine-VMs, die mit einem Cloud Storage-Bucket interagieren, müssen sich am selben Standort wie der Bucket befinden. Wenn sich der Bucket beispielsweise in us-central1, kann sich die VM in us-central1-a befinden. Wenn sich der Bucket in einer Multiregion oder Dual-Region befindet, muss sich die VM in einer Region befinden, aus der die Multiregion oder Dual-Region besteht. Wenn sich ein Bucket beispielsweise in der us Multiregion befindet, kann sich die VM in us-east4-c befinden.

    Weitere Informationen zu Bucket-Standorten finden Sie unter Standorte.

  • Ihre Routen und Firewallregeln lassen IPv4-Traffic zu 34.126.0.0/18 und IPv6-Traffic zu 2001:4860:8040::/42 zu. Außerdem muss Traffic zu den Endpunkten storage.googleapis.com:443 und directpath-pa.googleapis.com:443 zugelassen werden.

    Informationen dazu, wie Sie prüfen können, ob eine Verbindung zu diesen Endpunkten hergestellt werden kann, finden Sie unter Netzwerkkonfigurationen prüfen. Informationen zum Einrichten von Routen, siehe Routen konfigurieren.

  • Für Cloud Storage-Clientbibliotheken gelten bestimmte Anforderungen an die Anmeldedaten, damit Anwendungen bei Cloud Storage authentifiziert werden können und eine direkte Verbindung verfügbar ist:

    • Für die Java-Clientbibliothek sind entweder Nutzerkonto- oder Dienstkonto-Anmeldedaten erforderlich.

    • Für die C++-Clientbibliothek sind Dienstkonto-Anmeldedaten erforderlich.

    • Für die Go-Clientbibliothek sind Dienstkonto-Anmeldedaten erforderlich. Bei Versionen vor 1.52.0 sind die Standardanmeldedaten des Dienstkontos der VM erforderlich, die auf Ihren Bucket zugreift.

    Verwenden Sie den Befehl gcloud auth list, um den Namen des Kontos aufzurufen, mit dem sich Ihre VM bei Cloud Storage authentifiziert:

    gcloud auth list --filter=status:ACTIVE --format="value(account)"
    

    Wenn Sie die Go-Clientbibliothek verwenden und prüfen möchten, ob das Google Konto, das für die Authentifizierung verwendet wird, mit dem Standarddienstkonto Ihrer VM übereinstimmt, verwenden Sie den gcloud compute instances describe Befehl:

    gcloud compute instances describe INSTANCE_NAME --format='yaml(serviceAccounts)'
    

    Ersetzen Sie INSTANCE_NAME durch den Namen Ihrer Instanz.

    Weitere Informationen zur Authentifizierung finden Sie unter Übersicht zurIdentitätsverwaltung. Google

Verbindung mit der Google Cloud CLI prüfen

Mit der Google Cloud CLI können Sie die Diagnosen der direkten Verbindung zu Ihrem Bucket testen, indem Sie mit gcloud storage buckets describe gs://example-bucket einen GET-Aufruf an den Bucket senden. In diesem Abschnitt wird beschrieben, wie Sie mit der Google Cloud CLI einen Diagnosetest für die direkte Verbindung durchführen.

Hinweis

  1. Sie benötigen die storage.buckets.get IAM-Berechtigung für den Bucket. Diese kann mit der Rolle Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) gewährt werden.

  2. Der Befehl gcloud alpha storage diagnose ist nur in der Google Cloud CLI-Version 531.0.0 oder höher verfügbar. Wenn Sie diesen Befehl verwenden möchten, empfehlen wir ein Upgrade auf die neueste Version der Google Cloud CLI.

Diagnose ausführen

Führen Sie gcloud alpha storage diagnose mit dem Argument --test-type=DIRECT_CONNECTIVITY aus, um zu prüfen, ob eine direkte Verbindung verfügbar ist:

gcloud alpha storage diagnose --test-type=DIRECT_CONNECTIVITY gs://BUCKET_NAME

Ersetzen Sie Folgendes:

  • BUCKET_NAME: der Name Ihres Buckets. Beispiel: my-bucket.

Wenn eine Verbindung hergestellt werden kann, erhalten Sie eine Antwort ähnlich der folgenden:

Using my-bucket bucket for the diagnostic tests.
Bucket location : US
Bucket storage class : STANDARD
Running diagnostic: Direct Connectivity Diagnostic...
WARNING: This diagnostic is experimental. The output may change, and checks may be added or removed at any time. Please do not rely on the diagnostic being present.
Finished running diagnostic: Direct Connectivity Diagnostic
Generating diagnostic report...
NAME
Direct Connectivity Diagnostic
    ┌────────────────────────────┬─────────────────────────────────────────────────────────────────────────┬──────────┐
    │            NAME            │                           PAYLOAD_DESCRIPTION                           │  RESULT  │
    ├────────────────────────────┼─────────────────────────────────────────────────────────────────────────┼──────────┤
    │ Direct Connectivity Call   │ Able to get bucket metadata using Direct Connectivity network path.     │ Success. │
    └────────────────────────────┴─────────────────────────────────────────────────────────────────────────┴──────────┘

Netzwerkkonfigurationen prüfen

Wenn beim Prüfen der direkten Verbindung mit der Google Cloud CLI der Fehler Unable to connect to Traffic Director auftritt, prüfen Sie anhand der folgenden Anleitung, ob Ihre Netzwerkkonfigurationen Traffic von Ihren VMs zu den erforderlichen Endpunkten zulassen.

Für die direkte Verbindung ist ein Dienst erforderlich, der unter directpath-pa.googleapis.com:443 und storage.googleapis.com:443 gehostet wird. Um zu prüfen, ob eine Verbindung zum Dienst hergestellt werden kann, senden Sie einen curl-Aufruf an directpath-pa.googleapis.com:443 oder storage.googleapis.com:443. Beispiel:

curl directpath-pa.googleapis.com:443

Wenn eine Verbindung hergestellt werden kann, erhalten Sie eine leere Antwort ohne Fehler:

curl: (52) Empty reply from server

Wenn keine Verbindung hergestellt werden kann, erhalten Sie einen Fehler ähnlich dem folgenden:

curl: (56) Recv failure: Connection reset by peer

Beschränkungen

Die direkte Verbindung unterstützt Private Service Connect nicht.

Fehlerbehebung

In diesem Abschnitt finden Sie Details und Lösungen für Fehler, die bei der Verwendung der direkten gRPC-Verbindung auftreten können.

Zu viele offene Dateien

Problem: Bei Verwendung der direkten gRPC-Verbindung kann Ihre Anwendung eine höhere Anzahl gleichzeitiger Verbindungen zu Cloud Storage aufrechterhalten als bei REST APIs. In Umgebungen mit hoher Parallelität kann dies das Dateideskriptorlimit des Betriebssystems überschreiten, was zu einem Fehler too many open files führt. Dieser Fehler kann auftreten, wenn Sie die Google Cloud CLI verwenden.

Lösung: Wählen Sie eine der folgenden Methoden aus, um dieses Problem zu beheben:

  • Legen Sie die maximale Anzahl offener Dateien für Ihren Prozess mit ulimit -n $(ulimit -Hn) fest.

  • Verringern Sie die Anzahl der zulässigen gleichzeitigen Aufgaben mit dem Befehl gcloud config set und den Attributen storage/process_count und storage/thread_count. Wir empfehlen einen Maximalwert von 12 Aufgaben. Weitere Informationen finden Sie in der gcloud config set Referenz. Wenn Sie die Anzahl der zulässigen gleichzeitigen Aufgaben verringern, wird die Parallelität reduziert und die Leistung kann beeinträchtigt werden.