La connettività diretta consente alle librerie client Google Cloud supportate di stabilire connessioni di rete gRPC autenticate direttamente con Cloud Storage, riducendo la latenza e l'overhead di connessione. Quando utilizzi gRPC con la connettività diretta, le richieste della libreria client bypassano i Google Front End (GFE) e vengono indirizzate direttamente a Cloud Storage.
La connettività diretta è disponibile solo per le richieste effettuate da 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 sono 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 dispone di 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 essere collocate nello stesso luogo 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 multiregione o in due regioni, la VM deve trovarsi in una regione che compone la multiregione o le due regioni. Ad esempio, se un bucket si trova nella multi-regioneus, 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. Evita di limitare le porte di destinazione nelle regole firewall, poiché tutte le porte vengono utilizzate per la pubblicazione. 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 Controlla le configurazioni di rete. Per informazioni sulla configurazione delle route, consulta Configura 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'account Google utilizzato per l'autenticazione corrisponde al account di servizio predefinito della VM, utilizza il comando
gcloud compute instances describe: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 gestione delle identità Google .
Controlla la connettività utilizzando Google Cloud CLI
Google Cloud CLI può testare la diagnostica della connettività diretta sul tuo bucket inviando 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 Storage Legacy Bucket Reader (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.
Esegui 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. │
└────────────────────────────┴─────────────────────────────────────────────────────────────────────────┴──────────┘
Controlla le configurazioni di rete
Se riscontri un errore Unable to connect to Traffic Director durante la verifica 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, ricevi una risposta vuota senza errori:
curl: (52) Empty reply from server
Se non è possibile stabilire una connessione, ricevi 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 durante l'utilizzo della 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. In ambienti con un elevato parallelismo, questo può superare il limite del descrittore del file del sistema operativo, generando 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 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. Consigliamo un valore massimo di 12 attività. Per maggiori dettagli, consulta il riferimentogcloud config set. Tieni presente che la riduzione del numero di attività simultanee consentite riduce il parallelismo e potrebbe influire sulle prestazioni.