La conectividad directa es una solución de conexión que permite conexiones de red gRPC directas, autenticadas y de alto rendimiento entre una biblioteca Google Cloud cliente y Cloud Storage, lo que genera una menor latencia y una sobrecarga de conexión. Cuando usas gRPC para conectarte a Google Cloud Cloud Storage con conectividad directa, las solicitudes que se inician a través de las bibliotecas cliente compatibles se enrutan directamente a Cloud Storage, lo que omite los frontends de Google (GFE). Google Cloud
La conectividad directa solo está disponible para las solicitudes realizadas 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 siguientes condiciones:
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 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 estar ubicadas en el mismo lugar que el bucket. Por ejemplo, si el bucket está en
us-central1, la VM puede estar ubicada enus-central1-a. Si el bucket está en una región multirregional o birregional, la VM debe estar ubicada en una región que conforme la región multirregional o birregional. Por ejemplo, si un bucket está ubicado en lausregión múltiple, 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 de IPv4 llegue a
34.126.0.0/18y el tráfico de IPv6 llegue a2001:4860:8040::/42. Además, se debe permitir que el tráfico llegue a los extremosstorage.googleapis.com:443ydirectpath-pa.googleapis.com:443.Para obtener información sobre cómo 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 las rutas.
Las bibliotecas cliente de Cloud Storage tienen requisitos de credenciales específicos para autenticar aplicaciones en Cloud Storage y tener disponible la conectividad directa:
La biblioteca cliente de Java requiere credenciales de cuenta de usuario o credenciales 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 1.52.0 requieren las credenciales de cuenta de servicio predeterminadas 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 Google cuenta que se usa para la autenticación coincide con la cuenta de servicio predeterminada de tu VM, usa el
gcloud compute instances describecomando: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 Google administración de identidades.
Verifica la conectividad con Google Cloud CLI
Google Cloud CLI puede probar los diagnósticos de conectividad directa en tu bucket mediante la emisión de 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 bucket heredado 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 que actualices 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: 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 las configuraciones de red
Si encuentras un error Unable to connect to Traffic Director mientras verificas la conectividad directa con Google Cloud CLI, usa las siguientes instrucciones para asegurarte de que tus 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.
Hay demasiados archivos abiertos
Problema: Cuando se usa la conectividad directa de gRPC, es posible que tu
aplicación mantenga una mayor cantidad de conexiones simultáneas a
Cloud Storage que las APIs de REST. En entornos con un alto paralelismo, esto puede exceder el límite del descriptor 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:
Configura 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 detalles, consulta lagcloud config setreferencia. Ten en cuenta que disminuir la cantidad de tareas simultáneas permitidas reduce el paralelismo y puede afectar el rendimiento.