Gérer les agents de transfert

Les agents du service de transfert de stockage sont des applications exécutées dans un conteneur Docker qui se coordonnent avec le service de transfert de stockage pour lire les données des sources du système de fichiers POSIX et/ou écrire des données dans des récepteurs du système de fichiers POSIX.

Si le transfert n'implique pas de système de fichiers POSIX, vous n'avez pas besoin de configurer d'agents.

Ce document explique comment administrer les agents de transfert sur vos serveurs.

Présentation

  • Les processus d'agent sont dynamiques. Lors d'un transfert, vous pouvez ajouter des agents pour améliorer les performances. Les agents nouvellement lancés rejoignent le pool d'agents et effectuent des tâches à partir des transferts existants. Cela vous permet d'ajuster le nombre d'agents en cours d'exécution ou d'adapter les performances de transfert en fonction de la demande.

  • Les processus d'agent constituent une entité collective tolérante aux pannes. Si un agent cesse de s'exécuter, les agents restants continuent leur travail. Si tous vos agents s'arrêtent, le transfert reprend là où ils ont été arrêtés dès que vous les redémarrez. Ainsi, vous n'avez pas besoin d'exploiter des agents de surveillance, de relancer les transferts ni de mettre en œuvre une logique de récupération. Vous pouvez corriger, déplacer et effectuer un scaling dynamique de votre pool d'agents sans que vos transferts ne subissent de temps d'arrêt en coordonnant les agents avec Google Kubernetes Engine.

    Imaginons par exemple que vous lanciez deux transferts pendant que deux agents sont en cours d'exécution. Si l'un des agents s'arrête en raison d'un redémarrage de la machine ou d'un correctif du système d'exploitation, l'agent restant continue de fonctionner. Les deux transferts sont toujours en cours d'exécution, mais à une vitesse réduite, car un seul agent déplace les données. Si l'agent restant s'arrête aussi, tous les transferts cessent de progresser, car aucun agent n'est en cours d'exécution. Lorsque vous redémarrez les processus d'agent, les transferts reprennent là où ils s'étaient arrêtés.

  • Les processus d'agent appartiennent à un pool. Ils déplacent collectivement vos données en parallèle. Pour cette raison, tous les agents d'un pool doivent disposer du même accès à toutes les sources de données que vous souhaitez transférer.

    Par exemple, si vous transférez des données à partir d'un système de fichiers spécifique, vous devez installer le système de fichiers sur chaque machine hébergeant des agents dans votre pool d'agents. Si certains agents de votre pool peuvent accéder à une source de données et que d'autres ne le peuvent pas, les transferts à partir de cette source de données échoueront.

Avant de commencer

Avant de configurer vos transferts, assurez-vous d'avoir configuré l'accès : pour les utilisateurs et les comptes de service.

Si vous prévoyez d'utiliser les commandes gcloud, installez la CLI gcloud.

Installer et exécuter des agents de transfert

Pour installer et exécuter un agent de transfert:

console Google Cloud

  1. Dans la console, accédez à la page Pools d'agents.

    Accéder aux pools d'agents

  2. Sélectionnez le pool d'agents auquel ajouter le nouvel agent.

  3. Cliquez sur Installer l'agent.

  4. Suivez les instructions pour installer et exécuter l'agent.

    Pour en savoir plus sur les options de ligne de commande de l'agent, consultez la section Options de ligne de commande de l'agent.

CLI gcloud

Pour installer un ou plusieurs agents à l'aide de la CLI gcloud, exécutez la commande gcloud transfer agents install:

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

L'outil vous guide tout au long du processus d'installation des agents. Cette commande installe le ou les agents NUM_AGENTS sur votre ordinateur, mappés au nom du pool spécifié en tant que POOL_NAME et authentifie l'agent à l'aide de vos identifiants gcloud. Si le nom du pool n'existe pas, une erreur est renvoyée.

Pour exécuter des agents à l'aide d'une clé de compte de service, utilisez l'option --creds-file:

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

Pour obtenir la liste complète des options facultatives, exécutez gcloud transfer agents install --help ou consultez la documentation de référence sur gcloud transfer.

Nous vous recommandons d'installer plusieurs agents par machine. Pour savoir comment déterminer le nombre d'agents à exécuter, consultez la section Optimiser les performances de l'agent de transfert.

Confirmer les connexions des agents

Après avoir installé vos agents de transfert, vous pouvez vérifier qu'ils sont connectés à votre pool d'agents.

Pour vérifier que vos agents sont bien connectés, procédez comme suit :

  1. Dans la console, accédez à la page Pools d'agents.

    Accéder aux pools d'agents

    Vos pools d'agents s'affichent, avec le nombre d'agents connectés.

  2. Sélectionnez un pool d'agents pour afficher les détails des agents connectés.

Si un nouvel agent n'apparaît pas sur la page du pool d'agents dans les dix minutes suivant sa création, consultez la section Les agents ne sont pas connectés.

Surveiller l'activité des agents

Vous pouvez surveiller l'activité des agents à l'aide des alertes Cloud Monitoring.

La surveillance est disponible avec les dimensions project, agent_pool et agent_id.

À l'aide de ces données de surveillance, vous pouvez configurer des alertes pour vous avertir des problèmes potentiels avec votre transfert. Pour ce faire, créez une alerte sur l'une des métriques Google Cloud suivantes :

Nom de la métrique Description Suggestions d'utilisation
storagetransfer.googleapis.com/agent/transferred_bytes_count Mesure la vitesse à laquelle un agent spécifique déplace des données (parmi toutes les tâches qu'il traite) à un instant donné. Alerte en cas de baisses de performances
storagetransfer.googleapis.com/agent/connected Valeur booléenne correspondant à True si un agent a récemment envoyé un message de pulsation à Google.
  • Alerte en cas d'agents défaillants
  • Chute du nombre d'agents sous un seuil que vous jugez nécessaire pour obtenir des performances raisonnables
  • Signalement d'un problème avec les machines agents

Arrêter un agent

Pour arrêter un agent, exécutez docker stop sur son ID de conteneur Docker. Pour trouver cet ID et arrêter l'agent, procédez comme suit:

  1. Dans la console, accédez à la page Pools d'agents.

    Accéder aux pools d'agents

  2. Sélectionnez le pool d'agents contenant l'agent à arrêter.

  3. Sélectionnez un agent dans la liste. Utilisez le champ Filtre pour rechercher suivant un préfixe, l'état de l'agent, l'âge de l'agent, etc.

  4. Cliquez sur Arrêter l'agent. La commande docker stop s'affiche avec l'ID de conteneur spécifique.

  5. Exécutez la commande sur la machine sur laquelles s'exécute l'agent. Si la commande docker stop réussit, l'ID du conteneur est renvoyé.

Une fois arrêté, l'agent apparaît dans la liste des agents du pool comme étant déconnecté.

Supprimer un agent

Pour supprimer des agents spécifiques, répertoriez ceux qui sont en cours d'exécution sur votre ordinateur :

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

Transmettez ensuite les ID d'agent à transfer agents delete :

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

Pour supprimer tous les agents exécutés sur la machine, utilisez l'option --all ou l'option --uninstall. Les deux options suppriment tous les agents de la machine. L'option --uninstall désinstalle également l'image Docker de l'agent.

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

Détails du transfert du système de fichiers

Transferts incrémentiels

Le service de transfert de stockage commence tous les transferts en calculant les données présentes à la source et à la destination afin de déterminer quels fichiers sources sont nouveaux, mis à jour ou supprimés depuis le dernier transfert. Nous procédons ainsi afin de réduire la quantité de données envoyées depuis vos machines, d'utiliser efficacement la bande passante et de réduire les temps de transfert.

Pour détecter si un fichier a changé, nous utilisons un algorithme semblable à gsutil rsync : nous vérifions les date et heure de la dernière modification et la taille du fichier source, et les comparons à celles enregistrées date de la dernière copie du fichier. Lorsque nous détectons un fichier nouveau ou modifié, nous copions l'intégralité de ce fichier vers sa destination. Pour plus d'informations sur la fraîcheur des fichiers, consultez la section Détails sur la cohérence des données.

Par défaut, nous détectons, mais n'agissons pas sur, les fichiers supprimés sur la source. Si vous choisissez l'option de synchronisation Supprimer les fichiers de destination qui n'existent pas également dans la source lors de la création ou de la modification, le transfert supprime l'objet correspondant dans la destination.

Si vous choisissez l'option de synchronisation Supprimer les fichiers de destination qui n'existent pas également dans la source, les fichiers supprimés accidentellement dans la source le sont également dans la destination. Pour éviter toute perte de données due à des suppressions accidentelles, nous vous recommandons d'activer la gestion des versions d'objets dans votre bucket de destination. Par la suite, si vous supprimez accidentellement un fichier, vous pouvez restaurer une ancienne version de vos objets dans Cloud Storage.

Détails sur la cohérence des données

Une opération de transfert réussie transfère tous les fichiers sources existants et n'ayant pas été modifiés pendant toute la durée d'exécution de l'opération. Les fichiers sources qui ont été créés, mis à jour ou supprimés pendant un transfert pourraient ne pas refléter ces modifications dans l'ensemble de données de destination.

Le service de transfert de stockage utilise la date et l'heure de la dernière modification d'un fichier ainsi que sa taille pour déterminer s'il a été modifié. Si un fichier est mis à jour sans modifier sa date ou sa taille de dernière modification, et que vous activez l'option delete-objects-from-source, vous risquez de perdre les données de cette modification.

Lorsque vous utilisez la fonctionnalité delete-objects-from-source, nous vous recommandons vivement de geler les écritures sur la source pendant la durée du transfert afin d'éviter toute perte de données.

Pour geler les écritures sur votre source, effectuez l'une des opérations suivantes :

  • Clonez le répertoire que vous souhaitez transférer, puis utilisez le répertoire cloné en tant que source de transfert.
  • Arrêtez les applications qui écrivent dans le répertoire source.

S'il est important de capturer les modifications survenues lors d'un transfert, vous pouvez relancer le transfert ou définir le système de fichiers source en lecture seule pendant l'exécution de l'opération.

Étant donné que Cloud Storage n'a pas la notion de répertoires, les répertoires sources vides ne sont pas transférés.