Migração em Direto
Os servidores são substituídos: o hardware envelhece, os fornecedores mudam, as regiões movem-se. O rdc repo migrate move um repositório em execução para outra máquina com um único comando, e com --checkpoint até a memória de processo faz a viagem. A aplicação de demonstração, pulse, mantém um contador em RAM; após a migração continua a contar em vez de recomeçar do zero.
Ver o tutorial
Como se move
A fase um copia a maior parte enquanto a aplicação continua a correr. A fase dois faz checkpoint dos processos ativos (CRIU, para contentores com a etiqueta rediacc.checkpoint=true), transporta o delta final mais o estado dos processos, e retoma tudo na nova máquina. O tempo de inatividade é o delta, não os dados.
Passo 1: A prova — um contador em RAM
rdc term connect --machine <machine-name> --repository pulse --command 'docker logs heartbeat_app --tail 5' O app mantém um contador em memória e registra uma batida a cada cinco segundos. O contador vive apenas na RAM: reiniciar o processo o resetaria para um.
memory counter=6 e a subir, um batimento a cada cinco segundos. O contador vive apenas na memória do processo. Se o processo reiniciasse, recomeçaria em um.
Passo 2: Migrar — em direto
rdc repo migrate --name pulse --from <machine-name> --to <target-machine> --checkpoint --skip-dns Migre com checkpoint: a fase um transfere os 2 GB principais enquanto a origem permanece online, depois uma breve virada faz o checkpoint dos processos em execução e carrega o delta final. A saída imprime cada fase e o tempo de inatividade real.
O resultado narra a migração: a fase um transfere os 2 GB principais enquanto a origem fica online, depois a linha de transição imprime o DOWNTIME real: algumas dezenas de megabytes e cerca de vinte segundos, para um repositório de dois gigabytes.
Passo 3: Verificar a nova casa
rdc repo list --machine <target-machine> Liste os repositórios na máquina de destino: pulse está montado, o Docker está rodando e os containers estão ativos.
No destino, o pulse está montado, o Docker está ativo, os contentores a correr.
Passo 4: A origem está parada
rdc repo list --machine <machine-name> Na origem, o repositório está parado e desmontado: sem Docker, zero containers. A imagem é mantida como base para futuras transferências delta.
A origem ainda lista o repositório, mas honestamente: não montado, sem Docker, zero contentores. Nada corre lá. A imagem é mantida propositadamente como base para a próxima transferência delta, para que um futuro envio de volta seja barato.
Passo 5: O contador continuou a contar
rdc term connect --machine <target-machine> --repository pulse --command 'docker logs heartbeat_app --tail 5' Os logs na nova máquina mostram o contador continuando de onde o checkpoint o congelou, sem resetar para um. A memória do processo fez a viagem.
memory counter=17, depois 18, 19, 20… Retomou exatamente onde o checkpoint o congelou, em vez de repor em um. É a memória de processo a fazer a viagem; a aplicação nunca deu conta de ter mudado de máquina.
Sem
--checkpoint, o migrate ainda move o disco e os contentores; eles reiniciam a fresco no destino em vez de retomarem a meio.
Próximo: Transferência Delta.