La conectividad directa permite que las bibliotecas cliente de Google Cloud compatibles establezcan conexiones de red de gRPC autenticadas directamente con Cloud Storage, lo que reduce la latencia y la sobrecarga de conexión. Cuando usas gRPC con conectividad directa, las solicitudes de la biblioteca cliente omiten los Google Front Ends (GFE) y se enrutan directamente a Cloud Storage.
La conectividad directa solo está disponible para las solicitudes que se realizan desde máquinas virtuales (VMs) de Compute Engine.
Requisitos para la conectividad directa
La conectividad directa está habilitada de forma predeterminada cuando usas bibliotecas cliente de Cloud Storage compatibles para conectarte a Cloud Storage, pero solo está disponible si se cumplen todas las condiciones siguientes:
Las VMs de Compute Engine que interactúan con Cloud Storage deben tener una cuenta de servicio adjunta, incluso si la cuenta de servicio no tiene permisos. La cuenta de servicio se usa para representar la VM de Compute Engine en el proceso de protocolo de enlace de la Seguridad de transporte de la capa de la aplicación.
Las VMs de Compute Engine que interactúan con un bucket de Cloud Storage deben ubicarse junto con el bucket. Por ejemplo, si el bucket está en
us-central1, la VM puede estar ubicada enus-central1-a. Si el bucket se encuentra en una multirregión o birregión, la VM debe estar ubicada en una región que forme parte de la multirregión o birregión. Por ejemplo, si un bucket se encuentra en la multirregiónus, la VM puede estar ubicada enus-east4-c.Para obtener más información sobre las ubicaciones de bucket, consulta Ubicaciones.
Tus rutas y reglas de firewall permiten que el tráfico IPv4 llegue a
34.126.0.0/18y el tráfico IPv6 llegue a2001:4860:8040::/42. Evita restringir los puertos de destino en las reglas de firewall, ya que todos los puertos se usan para la entrega. Además, se debe permitir que el tráfico llegue a los extremosstorage.googleapis.com:443ydirectpath-pa.googleapis.com:443.Para aprender a verificar si se puede establecer una conexión con estos extremos, consulta Verifica las configuraciones de red. Para obtener información sobre cómo configurar rutas, consulta Configura rutas.
Las bibliotecas cliente de Cloud Storage tienen requisitos de credenciales específicos para autenticar aplicaciones en Cloud Storage y que la conectividad directa esté disponible:
La biblioteca cliente de Java requiere credenciales de cuenta de usuario o de cuenta de servicio.
La biblioteca cliente de C++ requiere credenciales de cuenta de servicio.
La biblioteca cliente de Go requiere credenciales de cuenta de servicio. Las versiones anteriores a la 1.52.0 requieren las credenciales de la cuenta de servicio predeterminada de la VM que accede a tu bucket.
Para ver el nombre de la cuenta que usa tu VM para autenticarse en Cloud Storage, usa el comando
gcloud auth list:gcloud auth list --filter=status:ACTIVE --format="value(account)"
Si usas la biblioteca cliente de Go y necesitas verificar si la cuenta de Google que se usa para autenticar coincide con la cuenta de servicio predeterminada de tu VM, usa el comando
gcloud compute instances describe:gcloud compute instances describe INSTANCE_NAME --format='yaml(serviceAccounts)'
Reemplaza
INSTANCE_NAMEpor el nombre de tu instancia.Para obtener más información sobre la autenticación, consulta Descripción general de la administración de identidades de Google .
Verifica la conectividad con Google Cloud CLI
Google Cloud CLI puede probar el diagnóstico de la conectividad directa en tu
bucket emitiendo una llamada GET al bucket con
gcloud storage buckets describe gs://example-bucket. En esta
sección, se describe cómo realizar una prueba de diagnóstico para la conectividad directa con
Google Cloud CLI.
Antes de comenzar
Asegúrate de tener el permiso de IAM
storage.buckets.geten el bucket, que se puede otorgar con el rol de lector de buckets heredados de Storage (roles/storage.legacyBucketReader).El comando
gcloud alpha storage diagnosesolo está disponible en la versión 531.0.0 o posterior de Google Cloud CLI. Para usar este comando, te recomendamos actualizar a la versión más reciente de Google Cloud CLI.
Ejecuta el diagnóstico
Para verificar si la conectividad directa está disponible, ejecuta
gcloud alpha storage diagnose con el argumento
--test-type=DIRECT_CONNECTIVITY:
gcloud alpha storage diagnose --test-type=DIRECT_CONNECTIVITY gs://BUCKET_NAME
Reemplaza lo siguiente:
BUCKET_NAME: Es el nombre de tu bucket. Por ejemplo,my-bucket.
Si se puede establecer una conexión, recibirás una respuesta similar a la siguiente:
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. │
└────────────────────────────┴─────────────────────────────────────────────────────────────────────────┴──────────┘
Verifica la configuración de red
Si encuentras un error Unable to connect to Traffic Director mientras verificas
la conectividad directa con Google Cloud CLI, sigue las instrucciones
que se indican a continuación para asegurarte de que las configuraciones de red permitan que el tráfico pase
de tus VMs a los extremos requeridos.
La conectividad directa requiere un servicio alojado en
directpath-pa.googleapis.com:443 y en storage.googleapis.com:443. Para verificar
si se puede establecer una conexión con el servicio, realiza una llamada curl a
directpath-pa.googleapis.com:443 o storage.googleapis.com:443. Por ejemplo:
curl directpath-pa.googleapis.com:443
Si se puede establecer una conexión, recibirás una respuesta vacía sin errores:
curl: (52) Empty reply from server
Si no se puede establecer una conexión, recibirás un error similar al siguiente:
curl: (56) Recv failure: Connection reset by peer
Limitaciones
La conectividad directa no admite Private Service Connect.
Soluciona problemas
En esta sección, se proporcionan detalles y soluciones para los errores que pueden ocurrir cuando se usa la conectividad directa de gRPC.
Demasiados archivos abiertos
Problema: Cuando usas la conectividad directa de gRPC, tu
aplicación puede mantener una mayor cantidad de conexiones simultáneas a
Cloud Storage que las APIs de REST. En entornos con un alto paralelismo, esto puede superar el límite de descriptores de archivos del sistema operativo,
lo que genera un error too many open files. Este error puede ocurrir cuando usas
Google Cloud CLI.
Solución: Para resolver este problema, elige uno de los siguientes métodos:
Establece la cantidad máxima de archivos abiertos para tu proceso con
ulimit -n $(ulimit -Hn).Disminuye la cantidad de tareas simultáneas permitidas con el comando
gcloud config setcon las propiedadesstorage/process_countystorage/thread_count. Recomendamos un valor máximo de 12 tareas. Para obtener más información, consulta la referencia degcloud config set. Ten en cuenta que disminuir la cantidad de tareas simultáneas permitidas reduce el paralelismo y puede afectar el rendimiento.