Administra agentes de transferencia

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Los agentes del Servicio de transferencia de almacenamiento son aplicaciones ejecutadas dentro de un contenedor de Docker que se coordinan con el Servicio de transferencia de almacenamiento para leer datos de fuentes del sistema de archivos POSIX o escribir datos en receptores del sistema de archivos POSIX.

Si tu transferencia no implica un sistema de archivos POSIX, no necesitas configurar agentes.

En este documento, se describe cómo administrar agentes de transferencia en tus servidores.

Descripción general

  • Los procesos de los agentes son dinámicos. Mientras ejecutas una transferencia, puedes agregar agentes para aumentar el rendimiento. Los agentes recién iniciados se unen al grupo de agentes asignado y realizan trabajos a partir de transferencias existentes. Puedes usar esto con el fin de ajustar la cantidad de agentes que se ejecutan o para adaptar el rendimiento de transferencia a los cambios de demanda de la transferencia.

  • Los procesos de los agentes son un conjunto tolerante a errores. Si un agente deja de ejecutarse, los agentes restantes seguirán en funcionamiento. Si se detienen todos tus agentes y los reinicias, la transferencia se reanudará donde se detuvieron. Esto te permite evitar la supervisión de los agentes, el reintento de las transferencias o la implementación de una lógica de recuperación. Puedes aplicar parches en los grupos de agentes, además de moverlo y escalarlo de forma dinámica sin tiempo de inactividad de transferencia. Para ello, coordina los agentes con Google Kubernetes Engine.

    Por ejemplo, envía dos transferencias mientras se ejecutan dos agentes. Si uno de los agentes se detiene debido a un reinicio de la máquina o un parche del sistema operativo, el agente restante continúa en funcionamiento. Las dos transferencias se siguen ejecutando, pero son más lentas, ya que un solo agente transfiere los datos. Si el agente restante también se detiene, todas las transferencias dejan de avanzar, ya que no hay agentes en ejecución. Cuando reinicias los procesos del agente, las transferencias se reanudan desde donde quedaron.

  • Los procesos de los agentes pertenecen a un grupo. Trasladan los datos de forma colectiva en paralelo. Debido a esto, todos los agentes dentro de un grupo deben tener el mismo acceso a todas las fuentes de datos que deseas transferir.

    Por ejemplo, si transfieres datos desde un sistema de archivos en particular, debes activar el sistema de archivos en cada máquina que aloja agentes en el grupo de agentes. Si algunos agentes de tu grupo pueden acceder a una fuente de datos y otros no, las transferencias desde esa fuente de datos no se realizarán de forma correcta.

Antes de comenzar

Antes de configurar las transferencias, asegúrate de haber configurado el acceso para usuarios y cuentas de servicio.

Si usarás comandos de gcloud, instala la CLI de gcloud.

Instala y ejecuta agentes de transferencia

Para instalar y ejecutar un agente de transferencia, haz lo siguiente:

Google Cloud Console

  1. En la consola de Google Cloud, ve a la página Grupos de agentes.

    Ir a los grupos de agentes

  2. Selecciona el grupo de agentes al que deseas agregar el agente nuevo.

  3. Haz clic en Instalar agente.

  4. Sigue las instrucciones que se muestran para instalar y ejecutar el agente.

    Para obtener más información sobre las opciones de línea de comandos del agente, consulta Opciones de línea de comandos del agente.

CLI de gcloud

Para instalar uno o más agentes mediante la CLI de gcloud, ejecuta gcloud transfer agents install:

gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS

La herramienta te guía a través de los pasos necesarios para instalar los agentes. Con este comando, se instalan NUM_AGENTS agentes en tu máquina, asignados al nombre del grupo especificado como POOL_NAME, y autentica al agente con tus credenciales gcloud. El nombre del grupo debe existir o se mostrará un error.

Para ejecutar agentes mediante una clave de cuenta de servicio, usa la opción --creds-file:

gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
  --creds-file=/relative/path/to/service-account-key.json

Para obtener una lista completa de las marcas opcionales, ejecuta gcloud transfer agents install --help o lee la referencia de gcloud transfer.

Recomendamos instalar más de un agente para cada máquina. Para obtener más información sobre cómo determinar cuántos agentes se ejecutan, consulta Maximiza el rendimiento del agente de transferencia.

Confirma las conexiones del agente

Después de instalar los agentes de transferencia, puedes verificar que estén conectados al grupo de agentes.

Para confirmar que los agentes estén conectados, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Grupos de agentes.

    Ir a los grupos de agentes

    Se muestran tus grupos de agentes con la cantidad de agentes conectados.

  2. Selecciona un grupo de agentes para ver los detalles de los agentes conectados.

Si un agente nuevo no aparece en la página del grupo de agentes en un plazo de 10 minutos después de su creación, consulta Los agentes no están conectados.

Supervisar la actividad del agente

Puedes usar alertas de Cloud Monitoring para supervisar la actividad del agente.

Monitoring está disponible en las dimensiones project, agent_pool y agent_id.

Con estos datos de supervisión, puedes configurar alertas para recibir notificaciones de posibles problemas con la transferencia. Para hacerlo, crea una alerta en cualquiera de las siguientes métricas de Google Cloud:

Nombre de la métrica Qué describe Usos sugeridos
storagetransfer.googleapis.com/agent/transferred_bytes_count Mide la rapidez con la que un agente específico transfiere datos (en todos los trabajos a los que brinda servicio) en un momento determinado. Alerta de caídas en el rendimiento.
storagetransfer.googleapis.com/agent/connected Un booleano que es verdadero para cada agente del que Google Cloud recibió un mensaje reciente de señal de supervisión de funcionamiento.
  • Alerta para agentes con fallas
  • Hay una cantidad de agentes menor que la considerada necesaria para un rendimiento razonable
  • Indica un problema con máquinas de agentes

Detén un agente

Para detener un agente, ejecuta docker stop en su ID de contenedor de Docker. Para encontrar el ID y detener el agente, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Grupos de agentes.

    Ir a los grupos de agentes

  2. Selecciona el grupo de agentes que contiene el agente que deseas detener.

  3. Selecciona un agente de la lista. Usa el campo Filtro para buscar prefijos, estado del agente, antigüedad del agente, etcétera.

  4. Haz clic en Detener agente. Se muestra el comando docker stop con el ID del contenedor específico.

  5. Ejecuta el comando en la máquina en la que se ejecuta el agente. Un comando docker stop exitoso muestra el ID del contenedor.

Una vez que el agente se detiene, aparece en la lista de grupos de agentes como Desconectado.

Borra un agente

Para borrar agentes específicos, obtén una lista de los agentes que se ejecutan en tu máquina:

docker container list --all --filter ancestor=gcr.io/cloud-ingest/tsop-agent

Luego, pasa los ID de agente a transfer agents delete:

gcloud transfer agents delete --ids=id1,id2,…

Para borrar todos los agentes que se ejecutan en la máquina, usa la marca --all o la marca --uninstall. Ambas marcas borran todos los agentes de la máquina; la marca --uninstall también desinstala la imagen de Docker del agente.

gcloud transfer agents delete --all
gcloud transfer agents delete --uninstall

Detalles de transferencia del sistema de archivos

Transferencias incrementales

El Servicio de transferencia de almacenamiento comienza todas las transferencias mediante el cálculo de los datos presentes en el origen y el destino para determinar qué archivos de origen son nuevos, cuáles fueron actualizados y cuáles quitados con respecto a la última transferencia. Hacemos esto para reducir la cantidad de datos que enviamos desde tus máquinas, para usar el ancho de banda de manera eficaz y para reducir los tiempos de transferencia.

Para detectar si un archivo ha cambiado, usamos un algoritmo similar a gsutil rsync: verificamos la última hora de modificación y el tamaño del archivo de origen y comparamos esos datos con la última hora de modificación y el tamaño registrados cuando se copió el archivo por última vez. Cuando detectamos un archivo nuevo o modificado, copiamos todo el archivo en su destino. Para obtener más información sobre la actualización de archivos, consulta Detalles de coherencia de datos.

De forma predeterminada, detectamos los archivos borrados en la fuente, pero no actuamos. Si eliges la opción de sincronización Eliminar archivos de destino que no están en la fuente al crear o editar, tu transferencia eliminará el objeto correspondiente del destino.

Si eliges la opción de sincronización Eliminar archivos de destino que no están también en la fuente, los archivos que se eliminan accidentalmente en la fuente también se eliminan en el destino. Para evitar la pérdida de datos por eliminaciones accidentales, recomendamos habilitar las versiones de objetos en el depósito de destino si eliges usar esta opción. Entonces, si eliminas un archivo accidentalmente, puedes restaurar sus objetos en Cloud Storage a una versión anterior.

Detalles de coherencia de datos

Una operación de transferencia correcta transferirá todos los archivos de origen que existían y no se modificaron durante todo el tiempo de ejecución de la operación. Los archivos de origen que se crearon, actualizaron o borraron durante una transferencia pueden o no tener esos cambios reflejados en el conjunto de datos de destino.

El Servicio de transferencia de almacenamiento usa la última hora de modificación y el tamaño de un archivo para determinar si cambió. Si se actualiza un archivo sin cambiar la última hora de modificación o tamaño, y habilitas la opción delete-objects-from-source, es posible que pierdas datos de ese cambio.

Cuando uses la función delete-objects-from-source, te recomendamos que suspendas las escrituras en la fuente durante la transferencia para protegerte contra la pérdida de datos.

Para inmovilizar las escrituras en tu fuente, realiza una de las siguientes acciones:

  • Clona el directorio que deseas transferir y, luego, usa el directorio clonado como fuente de la transferencia.
  • Detén las aplicaciones que escriben en el directorio de origen.

Si es importante capturar los cambios que se produjeron durante una transferencia, puedes volver a ejecutar la transferencia o configurar el sistema de archivos de origen en modo de solo lectura mientras se ejecuta la operación.

Dado que Cloud Storage no tiene la noción de directorios, los directorios de origen vacíos no se transfieren.