Connectivité directe gRPC

La connectivité directe est une solution de connexion qui permet des connexions réseau gRPC directes, authentifiées et hautes performances entre une bibliothèque cliente Google Cloud et Cloud Storage. Elle réduit ainsi la latence et la surcharge de connexion. Lorsque vous utilisez gRPC pour vous connecter à Google Cloudavec une connectivité directe, les requêtes initiées via les bibliothèques clientes Google Cloudcompatibles sont directement acheminées vers Cloud Storage, en contournant les Google Front Ends (GFE).

La connectivité directe n'est disponible que pour les requêtes effectuées à partir de machines virtuelles (VM) Compute Engine.

Conditions requises pour la connectivité directe

La connectivité directe est activée par défaut lorsque vous utilisez des bibliothèques clientes Cloud Storage compatibles pour vous connecter à Cloud Storage, mais elle n'est disponible que si toutes les conditions suivantes sont remplies :

  • Les VM Compute Engine qui interagissent avec Cloud Storage doivent disposer d'un compte de service associé, même si ce compte ne dispose d'aucune autorisation. Le compte de service est utilisé pour représenter la VM Compute Engine dans le processus d'établissement de liaison Application Layer Transport Security.

  • Les VM Compute Engine qui interagissent avec un bucket Cloud Storage doivent être colocalisées avec le bucket. Par exemple, si le bucket se trouve dans us-central1, la VM peut se trouver dans us-central1-a. Si le bucket se trouve dans une zone multirégionale ou birégionale, la VM doit être située dans une région qui compose la zone multirégionale ou birégionale. Par exemple, si un bucket se trouve dans la région multirégionale us, la VM peut se trouver dans us-east4-c.

    Pour en savoir plus sur les emplacements des buckets, consultez Emplacements.

  • Vos routes et vos règles de pare-feu autorisent le trafic IPv4 à atteindre 34.126.0.0/18 et le trafic IPv6 à atteindre 2001:4860:8040::/42. Évitez de restreindre les ports de destination dans les règles de pare-feu, car tous les ports sont utilisés pour la diffusion. De plus, le trafic doit être autorisé à atteindre les points de terminaison storage.googleapis.com:443 et directpath-pa.googleapis.com:443.

    Pour savoir comment vérifier si une connexion peut être établie avec ces points de terminaison, consultez Vérifier les configurations réseau. Pour savoir comment configurer des routes, consultez Configurer des routes.

  • Les bibliothèques clientes Cloud Storage ont des exigences spécifiques en termes d'identifiants pour authentifier les applications auprès de Cloud Storage et permettre une connectivité directe :

    • La bibliothèque cliente Java nécessite des identifiants de compte utilisateur ou de compte de service.

    • La bibliothèque cliente C++ nécessite des identifiants de compte de service.

    • La bibliothèque cliente Go nécessite des identifiants de compte de service. Les versions antérieures à 1.52.0 nécessitent les identifiants du compte de service par défaut de la VM accédant à votre bucket.

    Pour afficher le nom du compte utilisé par votre VM pour s'authentifier auprès de Cloud Storage, utilisez la commande gcloud auth list :

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

    Si vous utilisez la bibliothèque cliente Go et que vous devez vérifier si le compte Google utilisé pour l'authentification correspond au compte de service par défaut de votre VM, utilisez la commande gcloud compute instances describe :

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

    Remplacez INSTANCE_NAME par le nom de votre instance.

    Pour en savoir plus sur l'authentification, consultez la présentation de la gestion des identités Google .

Vérifier la connectivité à l'aide de Google Cloud CLI

La Google Cloud CLI peut tester les diagnostics de connectivité directe sur votre bucket en émettant un appel GET au bucket à l'aide de gcloud storage buckets describe gs://example-bucket. Cette section explique comment effectuer un test de diagnostic pour la connectivité directe à l'aide de la Google Cloud CLI.

Avant de commencer

  1. Assurez-vous de disposer de l'autorisation IAM storage.buckets.get sur le bucket, qui peut être accordée à l'aide du rôle Lecteur des anciens buckets Storage (roles/storage.legacyBucketReader).

  2. La commande gcloud alpha storage diagnose n'est disponible que dans la version 531.0.0 ou ultérieure de Google Cloud CLI. Pour utiliser cette commande, nous vous recommandons de passer à la dernière version de Google Cloud CLI.

Exécuter le diagnostic

Pour vérifier si la connectivité directe est disponible, exécutez gcloud alpha storage diagnose avec l'argument --test-type=DIRECT_CONNECTIVITY :

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

Remplacez les éléments suivants :

  • BUCKET_NAME : nom de votre bucket. Exemple : my-bucket.

Si une connexion peut être établie, vous recevez une réponse semblable à la suivante :

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

Vérifier les configurations réseau

Si vous rencontrez une erreur Unable to connect to Traffic Director lors de la vérification de la connectivité directe à l'aide de Google Cloud CLI, suivez les instructions ci-dessous pour vous assurer que vos configurations réseau permettent au trafic de transiter de vos VM vers les points de terminaison requis.

La connectivité directe nécessite un service hébergé sur directpath-pa.googleapis.com:443 et storage.googleapis.com:443. Pour vérifier si une connexion peut être établie avec le service, effectuez un appel curl vers directpath-pa.googleapis.com:443 ou storage.googleapis.com:443. Exemple :

curl directpath-pa.googleapis.com:443

Si une connexion peut être établie, vous recevez une réponse vide sans erreur :

curl: (52) Empty reply from server

Si une connexion ne peut pas être établie, vous recevez un message d'erreur semblable à celui-ci :

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

Limites

La connectivité directe n'est pas compatible avec Private Service Connect.

Dépannage

Cette section fournit des informations et des solutions pour les erreurs qui peuvent se produire lors de l'utilisation de la connectivité directe gRPC.

Trop de fichiers ouverts

Problème : Lorsque vous utilisez la connectivité directe gRPC, votre application peut maintenir un nombre de connexions simultanées à Cloud Storage plus élevé que les API REST. Dans les environnements à parallélisme élevé, cela peut dépasser la limite de descripteurs de fichiers du système d'exploitation, ce qui entraîne une erreur too many open files. Cette erreur peut se produire lorsque vous utilisez Google Cloud CLI.

Solution : Pour résoudre ce problème, choisissez l'une des méthodes suivantes :

  • Définissez le nombre maximal de fichiers ouverts pour votre processus à l'aide de ulimit -n $(ulimit -Hn).

  • Diminuez le nombre de tâches simultanées autorisées à l'aide de la commande gcloud config set avec les propriétés storage/process_count et storage/thread_count. Nous recommandons une valeur maximale de 12 tâches. Pour en savoir plus, consultez la documentation de référence sur gcloud config set. Notez que la diminution du nombre de tâches simultanées autorisées réduit le parallélisme et peut avoir un impact sur les performances.