Passa al contenuto principale Passa alla navigazione Passa al piè di pagina
A tempo limitato: Programma Design Partner. Piano BUSINESS gratuito per sempre.

Migrazione Live

Sposta un repository in esecuzione, container, database e memoria dei processi inclusi, su un'altra macchina con un solo comando e downtime minimo.

Migrazione Live

I server vengono sostituiti: l’hardware invecchia, i provider cambiano, le region si spostano. rdc repo migrate sposta un repository in esecuzione su un’altra macchina con un solo comando, e con --checkpoint anche la memoria dei processi fa il viaggio. L’app demo, pulse, mantiene un contatore in RAM; dopo lo spostamento continua a contare invece di ricominciare da capo.

Guarda il tutorial

Come si sposta

Due fasi, downtime minimo

La fase uno copia la massa mentre l’app continua a girare. La fase due fa il checkpoint dei processi attivi (CRIU, per i container con etichetta rediacc.checkpoint=true), trasporta il delta finale più lo stato dei processi, e riprende tutto sulla nuova macchina. Il downtime è il delta, non i dati.

Passo 1: La prova, un contatore in RAM

rdc term connect --machine <machine-name> --repository pulse --command 'docker logs heartbeat_app --tail 5'

L'app mantiene un contatore in memoria e registra un battito ogni cinque secondi. Il contatore vive solo nella RAM: un riavvio del processo lo azzererebbe a uno.

memory counter=6 è in aumento, un battito ogni cinque secondi. Il contatore vive solo nella memoria del processo. Se il processo si riavviasse, ricomincerebbe da uno.

Passo 2: Migra, live

rdc repo migrate --name pulse --from <machine-name> --to <target-machine> --checkpoint --skip-dns

Migrazione con checkpoint: la fase uno trasferisce i 2 GB principali mentre il sorgente rimane online, poi un breve cutover crea un checkpoint dei processi in esecuzione e trasporta il delta finale. L'output stampa ogni fase e il downtime effettivo.

L’output racconta lo spostamento: la fase uno trasferisce i 2 GB di massa mentre la sorgente rimane online, poi la riga di cutover stampa il DOWNTIME effettivo: qualche decina di megabyte e circa venti secondi, per un repository da due gigabyte.

Passo 3: Verifica la nuova casa

rdc repo list --machine <target-machine>

Elenca i repository sulla macchina di destinazione: pulse è montato, Docker è in esecuzione e i suoi container sono attivi.

Sulla destinazione, pulse è montato, Docker è attivo, container in esecuzione.

Passo 4: La sorgente è ferma

rdc repo list --machine <machine-name>

Sul sorgente il repository è fermo e smontato: nessun Docker, zero container. L'immagine viene conservata come base per i futuri trasferimenti delta.

La sorgente elenca ancora il repository, ma onestamente: non montato, nessun Docker, zero container. La non gira più nulla. L’immagine viene conservata apposta come base per il prossimo delta transfer, così un futuro push di ritorno costa poco.

Passo 5: Il contatore ha continuato a contare

rdc term connect --machine <target-machine> --repository pulse --command 'docker logs heartbeat_app --tail 5'

I log sulla nuova macchina mostrano il contatore che continua dal punto in cui il checkpoint lo ha congelato, senza azzerarsi a uno. La memoria del processo ha fatto il viaggio.

memory counter=17, poi 18, 19, 20… Ha ripreso esattamente da dove il checkpoint lo aveva congelato, invece di azzerarsi a uno. È la memoria del processo che ha fatto il viaggio; l’app non si è accorta di aver cambiato macchina.

Senza --checkpoint, la migrazione sposta comunque disco e container; si riavviano freschi sulla destinazione invece di riprendere a metà.


Successivo: Delta Transfer.