Zum Inhalt springen

Migration

Migriere einen Dienst von einem Node zu einem anderen unter Wahrung der Datenintegrität. Die Migrationsaufgabe orchestriert Backup-, Stopp-, Restore-, Start- und DNS-Update-Schritte über Quell- und Ziel-Nodes hinweg.

Konfiguration

Datenelemente, die während der Migration übertragen werden, müssen sowohl eine backup- als auch eine restore-Aktion in data_protect haben. Deklariere sie in 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
SchlüsselTypErforderlichBeschreibung
namestringJaMuss auf einen data_protect.data[].name mit sowohl Backup- als auch Restore-Aktionen verweisen.
enabledboolNeinAktiviert oder deaktiviert die Migration für dieses Element.

Migration ausführen

Web-UI:

  1. Öffne die Dienst-Detailseite.
  2. Verwende die Migrationssteuerung, um Quell- und Ziel-Nodes auszuwählen.
  3. Klicke auf Migrieren.

CLI:

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

Migrationsschritte

  1. Daten exportieren — Führe eine Backup-Aufgabe auf dem Quell-Node für jedes konfigurierte Datenelement aus.
  2. Quellinstanz stoppen — Führe docker compose down aus, entferne die Caddy-Konfiguration.
  3. Caddy auf der Quelle neu laden — Entferne den Proxy-Eintrag von der Quell-Caddy-Instanz.
  4. Daten auf dem Ziel wiederherstellen — Führe eine Restore-Aufgabe auf dem Ziel-Node für jedes Datenelement aus.
  5. Auf dem Ziel deployen — Führe docker compose up -d aus, synchronisiere die Caddy-Konfiguration.
  6. Caddy auf dem Ziel neu laden — Wende den Proxy-Eintrag auf der Ziel-Caddy-Instanz an.
  7. DNS aktualisieren — Aktualisiere DNS-Records, um auf den Ziel-Node zu verweisen.
  8. Konfiguration schreiben — Aktualisiere nodes in composia-meta.yaml, committe in Git.

Überlegungen

  • Der Dienst muss auf dem Quell-Node deployed sein und der Ziel-Node muss online sein.
  • Die Migration verursacht kurze Ausfallzeiten. Führe sie außerhalb der Spitzenzeiten durch.
  • Die Quellinstanz wird vor der Datenübertragung gestoppt, um Konsistenz zu gewährleisten.
  • Für Datenbanken verwende Exportstrategien (database.pgdumpall / database.pgimport).

Rollback

Ein Zustands-Rollback ist derzeit nur in der Web-UI verfügbar. Öffne die Details der Migrationsaufgabe, wähle die zum fehlgeschlagenen Schritt passenden Wiederherstellungsaktionen und starte dort den Rollback.

AktionBeschreibung
deploy_sourceDienst erneut auf dem ursprünglichen Quell-Node bereitstellen.
stop_targetDienst auf dem Ziel-Node stoppen und bereinigen.
rollback_dnsDNS-Einträge wieder mit dem Quell-Node synchronisieren.

Die CLI hat noch keinen Befehl task rollback. Die Migrationsaufgabe kann weiterhin so geprüft und verfolgt werden:

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

Siehe auch

Zuletzt aktualisiert am • alexma233