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 inus-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 nellausmulti-regione, la VM può trovarsi inus-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/18e al traffico IPv6 di raggiungere2001:4860:8040::/42. Inoltre, il traffico deve essere autorizzato a raggiungere gli endpointstorage.googleapis.com:443edirectpath-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 describecomando:gcloud compute instances describe INSTANCE_NAME --format='yaml(serviceAccounts)'
Sostituisci
INSTANCE_NAMEcon 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
Assicurati di disporre dell'autorizzazione IAM
storage.buckets.getsul bucket, che può essere concessa utilizzando il ruolo Lettore bucket legacy di Storage (roles/storage.legacyBucketReader).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 setcon le proprietàstorage/process_countestorage/thread_count. Ti consigliamo un valore massimo di 12 attività. Per maggiori dettagli, consulta ilgcloud config setriferimento. Tieni presente che la riduzione del numero di attività simultanee consentite riduce il parallelismo e potrebbe influire sulle prestazioni.