Connettività diretta gRPC

La connettività diretta è una soluzione di connessione che consente connessioni di rete gRPC dirette, autenticate e ad alte prestazioni tra una libreria client e Cloud Storage, con conseguente riduzione della latenza e del sovraccarico di connessione. Google Cloud Quando utilizzi gRPC per connetterti a Google Cloud utilizzando la connettività diretta, le richieste avviate tramite le librerie client supportate Google Cloud vengono indirizzate direttamente a Cloud Storage, ignorando i Google Front End (GFE).

La connettività diretta è disponibile solo per le richieste effettuate dalle macchine virtuali (VM) di Compute Engine.

Requisiti per la connettività diretta

La connettività diretta è abilitata per impostazione predefinita quando utilizzi le librerie client di Cloud Storage supportate per connetterti a Cloud Storage, ma diventa disponibile solo se vengono soddisfatte tutte le seguenti condizioni:

  • Le VM di Compute Engine che interagiscono con Cloud Storage devono avere un service account collegato, anche se il account di servizio non ha autorizzazioni. Il account di servizio viene utilizzato per rappresentare la VM di Compute Engine nel processo di handshake di Application Layer Transport Security.

  • Le VM di Compute Engine che interagiscono con un bucket Cloud Storage devono trovarsi nella stessa località del bucket. Ad esempio, se il bucket si trova in us-central1, la VM può trovarsi in us-central1-a. Se il bucket si trova in una multi-regione o in una regione a due aree geografiche, la VM deve trovarsi in una regione che compone la multi-regione o la regione a due aree geografiche. Ad esempio, se un bucket si trova nella us multi-regione, la VM può trovarsi in us-east4-c.

    Per saperne di più sulle località dei bucket, consulta Località.

  • Le tue route e le tue regole firewall consentono al traffico IPv4 di raggiungere 34.126.0.0/18 e al traffico IPv6 di raggiungere 2001:4860:8040::/42. Inoltre, il traffico deve essere autorizzato a raggiungere gli endpoint storage.googleapis.com:443 e directpath-pa.googleapis.com:443.

    Per scoprire come verificare se è possibile stabilire una connessione a questi endpoint, consulta Controllare le configurazioni di rete. Per informazioni sulla configurazione delle route, consulta Configurare le route.

  • Le librerie client di Cloud Storage hanno requisiti di credenziali specifici per autenticare le applicazioni in Cloud Storage e rendere disponibile la connettività diretta:

    • La libreria client Java richiede le credenziali dell'account utente o del service account.

    • La libreria client C++ richiede le credenziali del account di servizio.

    • La libreria client Go richiede le credenziali del account di servizio. Le versioni precedenti alla 1.52.0 richiedono le credenziali del service account predefinito della VM che accede al bucket.

    Per visualizzare il nome dell'account utilizzato dalla VM per l'autenticazione in Cloud Storage, utilizza il comando gcloud auth list:

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

    Se utilizzi la libreria client Go e devi verificare se l' Google account utilizzato per l'autenticazione corrisponde al account di servizio predefinito della VM, utilizza il gcloud compute instances describe comando:

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

    Sostituisci INSTANCE_NAME con il nome dell'istanza.

    Per saperne di più sull'autenticazione, consulta Panoramica della Google gestione delle identità.

Controllare la connettività utilizzando Google Cloud CLI

Google Cloud CLI può testare la diagnostica della connettività diretta sul bucket emettendo una chiamata GET al bucket utilizzando gcloud storage buckets describe gs://example-bucket. Questa sezione descrive come eseguire un test di diagnostica per la connettività diretta utilizzando Google Cloud CLI.

Prima di iniziare

  1. Assicurati di disporre dell'autorizzazione IAM storage.buckets.get sul bucket, che può essere concessa utilizzando il ruolo Lettore bucket legacy di Storage (roles/storage.legacyBucketReader).

  2. Il comando gcloud alpha storage diagnose è disponibile solo in Google Cloud CLI versione 531.0.0 o successive. Per utilizzare questo comando, ti consigliamo di eseguire l'upgrade all'ultima versione di Google Cloud CLI.

Eseguire la diagnosi

Per verificare se la connettività diretta è disponibile, esegui gcloud alpha storage diagnose con l'argomento --test-type=DIRECT_CONNECTIVITY:

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

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket. Ad esempio, my-bucket.

Se è possibile stabilire una connessione, riceverai una risposta simile alla seguente:

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. │
    └────────────────────────────┴─────────────────────────────────────────────────────────────────────────┴──────────┘

Controllare le configurazioni di rete

Se riscontri un errore Unable to connect to Traffic Director durante il controllo della connettività diretta utilizzando Google Cloud CLI, segui queste istruzioni per assicurarti che le configurazioni di rete consentano il passaggio del traffico dalle VM agli endpoint richiesti.

La connettività diretta richiede un servizio ospitato su directpath-pa.googleapis.com:443 e su storage.googleapis.com:443. Per verificare se è possibile stabilire una connessione al servizio, effettua una chiamata curl a directpath-pa.googleapis.com:443 o storage.googleapis.com:443. Ad esempio:

curl directpath-pa.googleapis.com:443

Se è possibile stabilire una connessione, riceverai una risposta vuota senza errori:

curl: (52) Empty reply from server

Se non è possibile stabilire una connessione, riceverai un errore simile al seguente:

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

Limitazioni

La connettività diretta non supporta Private Service Connect.

Risoluzione dei problemi

Questa sezione fornisce dettagli e soluzioni per gli errori che possono verificarsi quando si utilizza la connettività diretta gRPC.

Troppi file aperti

Problema: quando utilizzi la connettività diretta gRPC, la tua applicazione potrebbe mantenere un numero maggiore di connessioni simultanee a Cloud Storage rispetto alle API REST. Negli ambienti con un elevato parallelismo, questo può superare il limite dei descrittori di file del sistema operativo, causando un errore too many open files. Questo errore potrebbe verificarsi quando utilizzi Google Cloud CLI.

Soluzione: per risolvere il problema, scegli uno dei seguenti metodi:

  • Imposta il numero massimo di file aperti per il tuo processo utilizzando ulimit -n $(ulimit -Hn).

  • Riduci il numero di attività simultanee consentite utilizzando il comando gcloud config set con le proprietà storage/process_count e storage/thread_count. Ti consigliamo un valore massimo di 12 attività. Per maggiori dettagli, consulta il gcloud config set riferimento. Tieni presente che la riduzione del numero di attività simultanee consentite riduce il parallelismo e potrebbe influire sulle prestazioni.