Aller au contenu

Migration

Migrez un service d’un nœud à un autre tout en préservant l’intégrité des données. La tâche de migration orchestre les étapes de sauvegarde, arrêt, restauration, démarrage et mise à jour DNS à travers les nœuds source et cible.

Configuration

Les éléments de données transportés pendant la migration doivent avoir à la fois une action backup et une action restore dans data_protect. Déclarez-les dans migrate :

name: my-app
nodes:
  - main

data_protect:
  data:
    - name: uploads
      backup:
        strategy: files.copy
        include:
          - ./data/uploads
      restore:
        strategy: files.copy
        include:
          - ./data/uploads

migrate:
  data:
    - name: uploads
CléTypeRequisDescription
namestringOuiDoit référencer un data_protect.data[].name avec les deux actions de sauvegarde et de restauration.
enabledboolNonActiver ou désactiver la migration pour cet élément.

Exécuter la migration

Interface web :

  1. Ouvrez la page de détail du service.
  2. Utilisez les contrôles de migration pour sélectionner les nœuds source et cible.
  3. Cliquez sur Migrate.

CLI :

composia service my-app migrate --source main --target edge-1 --wait --follow --timeout 30m

Étapes de la migration

  1. Exporter les données — exécuter une tâche de sauvegarde sur le nœud source pour chaque élément de données configuré.
  2. Arrêter l’instance source — exécuter docker compose down, supprimer la configuration Caddy.
  3. Recharger Caddy sur la source — supprimer l’entrée de proxy de l’instance Caddy source.
  4. Restaurer les données sur la cible — exécuter une tâche de restauration sur le nœud cible pour chaque élément de données.
  5. Déployer sur la cible — exécuter docker compose up -d, synchroniser la configuration Caddy.
  6. Recharger Caddy sur la cible — appliquer l’entrée de proxy sur l’instance Caddy cible.
  7. Mettre à jour le DNS — mettre à jour les enregistrements DNS pour pointer vers le nœud cible.
  8. Écrire la configuration — mettre à jour nodes dans composia-meta.yaml, commiter dans Git.

Considérations

  • Le service doit être déployé sur le nœud source et le nœud cible doit être en ligne.
  • La migration entraîne une brève interruption de service. Effectuez-la pendant les heures creuses.
  • L’instance source est arrêtée avant le transfert de données pour garantir la cohérence.
  • Pour les bases de données, utilisez les stratégies d’export (database.pgdumpall / database.pgimport).

Restauration

La restauration d’état est actuellement disponible uniquement dans l’interface web. Ouvrez les détails de la tâche de migration, choisissez les actions de récupération correspondant à l’étape ayant échoué, puis démarrez la restauration.

ActionDescription
deploy_sourceRedéployer le service sur le nœud source d’origine.
stop_targetArrêter et nettoyer le service sur le nœud cible.
rollback_dnsResynchroniser les enregistrements DNS vers le nœud source.

La CLI ne dispose pas encore de commande task rollback. Vous pouvez néanmoins inspecter et suivre la tâche de migration avec :

composia task wait --follow --timeout 30m <task-id>

Voir aussi

Dernière modification • alexma233