Saltar para o conteúdo principal Saltar para a navegação Saltar para o rodapé
Por tempo limitado: Programa de Parceiro de Design. Plano BUSINESS grátis para sempre.

Migração em Direto

Mova um repositório em execução, contentores, base de dados e memória de processo incluídos, para outra máquina com um único comando e tempo de inatividade mínimo.

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

Two phases, minimal downtime

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.