Direkte gRPC-Verbindung

Mit der direkten Verbindung können unterstützte Google Cloud -Clientbibliotheken authentifizierte gRPC-Netzwerkverbindungen direkt zu Cloud Storage herstellen. Dadurch werden Latenz und Verbindungsoverhead reduziert. Wenn Sie gRPC mit direkter Verbindung verwenden, umgehen Clientbibliotheksanfragen Google Front Ends (GFEs) und werden direkt an Cloud Storage weitergeleitet.

Direkte Verbindungen sind nur für Anfragen von Compute Engine-VMs verfügbar.

Anforderungen für direkte Verbindungen

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

  • Die Compute Engine-VMs, die mit Cloud Storage interagieren, müssen ein angehängtes Dienstkonto haben, 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 befindet, kann sich die VM in us-central1-a befinden. Wenn sich der Bucket in einer multiregionalen oder biregionalen Region befindet, muss sich die VM in einer Region befinden, die Teil der multiregionalen oder biregionalen Region ist. Wenn sich ein Bucket beispielsweise in der Multiregion us 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. Vermeiden Sie es, die Zielports in den Firewallregeln einzuschränken, da alle Ports für die Bereitstellung verwendet werden. Außerdem muss Traffic die Endpunkte storage.googleapis.com:443 und directpath-pa.googleapis.com:443 erreichen können.

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

  • Cloud Storage-Clientbibliotheken haben bestimmte Anforderungen an Anmeldedaten, um Anwendungen bei Cloud Storage zu authentifizieren und eine direkte Verbindung zu ermöglichen:

    • Die Java-Clientbibliothek erfordert entweder Nutzerkonto-Anmeldedaten oder Dienstkonto-Anmeldedaten.

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

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

    Mit dem Befehl gcloud auth list können Sie den Namen des Kontos aufrufen, das Ihre VM zur Authentifizierung bei Cloud Storage verwendet:

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

    Wenn Sie die Go-Clientbibliothek verwenden und prüfen müssen, ob das zur Authentifizierung verwendete Google -Konto mit dem Standarddienstkonto Ihrer VM übereinstimmt, verwenden Sie den Befehl gcloud compute instances describe:

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

    Ersetzen Sie dabei INSTANCE_NAME durch den Namen Ihrer Instanz.

    Weitere Informationen zur Authentifizierung finden Sie unter Übersicht über die Identitätsverwaltung von Google .

Konnektivität mit der Google Cloud CLI prüfen

Mit der Google Cloud CLI können Sie die Diagnose der direkten Verbindung zu Ihrem Bucket testen. Dazu rufen Sie den Bucket mit gcloud storage buckets describe gs://example-bucket auf und geben GET an. 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 IAM-Berechtigung storage.buckets.get für den Bucket, die mit der Rolle „Storage Legacy Bucket Reader“ (roles/storage.legacyBucketReader) erteilt werden kann.

  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 Sie beim Prüfen der direkten Verbindung mit der Google Cloud CLI den Fehler Unable to connect to Traffic Director erhalten, folgen Sie der Anleitung unten, um sicherzustellen, dass Ihre Netzwerkkonfigurationen Traffic von Ihren VMs zu den erforderlichen Endpunkten zulassen.

Für eine direkte Verbindung ist ein Dienst erforderlich, der unter directpath-pa.googleapis.com:443 und storage.googleapis.com:443 gehostet wird. Wenn Sie prüfen möchten, ob eine Verbindung zum Dienst hergestellt werden kann, führen Sie einen curl-Aufruf an directpath-pa.googleapis.com:443 oder storage.googleapis.com:443 aus. 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 eine Fehlermeldung wie die folgende:

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

Beschränkungen

Private Service Connect wird von direkten Verbindungen nicht unterstützt.

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 geöffnete Dateien

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

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

  • Legen Sie mit ulimit -n $(ulimit -Hn) die maximale Anzahl geöffneter Dateien für Ihren Prozess 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 Höchstwert von 12 Aufgaben. Weitere Informationen finden Sie in der Referenz zu gcloud config set. Beachten Sie, dass die Verringerung der Anzahl der zulässigen gleichzeitigen Aufgaben die Parallelität verringert und sich auf die Leistung auswirken kann.