Skip to content

Atualizações ​

O Orbit se atualiza em Configurações → Atualizações do Orbit. Rodar o install.sh de novo também funciona: ele instala a versão mais recente, ou a de ORBIT_VERSION, e confere o arquivo com o SHA256SUMS, mas, diferente do console, não confere a assinatura.

Antes de começar ​

Uma atualização só começa depois de uma verificação sem nada bloqueando:

VerificaçãoBloqueia quando
Assinatura da versãoA versão não está assinada com a chave de versões do Orbit
Caminho de upgradeA versão não é mais nova que a que está rodando
Disco livreMenos de 2 GB livres para o download, o backup e os binários antigos
Backup dos metadadosNunca bloqueia; avisa quando o último tem mais de um dia
Operações rodandoDeploys, backups ou outras operações ainda estão rodando
AgenteO agente do servidor está offline

O console confere de novo logo antes de começar, e só uma atualização roda por vez.

O que uma atualização faz ​

  1. Faz backup dos dados do Orbit em /var/lib/orbit/backups/metadata/, o mesmo arquivo que o orbit backup escreve.
  2. Baixa a versão e a verifica: o SHA256SUMS precisa ter uma assinatura Ed25519 válida da chave de versões fixada no Orbit em execução, e o arquivo precisa bater com o hash dele. Uma versão sem assinatura, adulterada ou incompleta para aqui, e nada no servidor mudou.
  3. Reinicia o Orbit na versão nova, guardando os binários anteriores como orbit.previous e orbit-agent.previous. O console desconecta por alguns segundos e reconecta sozinho. As aplicações e os bancos continuam rodando.
  4. Aplica as migrações em ordem, registrando cada uma ao terminar.
  5. Verifica a atualização: o esquema, a API, o fluxo de eventos e o agente do servidor.

A atualização pode ser cancelada enquanto faz backup, baixa e verifica a versão, não depois.

Se a versão nova nunca subir, uma proteção preparada antes do reinício traz de volta os binários anteriores e o backup de antes da atualização depois de 3 minutos, sobe a versão anterior, e o console diz por que a atualização falhou.

Se uma atualização for interrompida ​

Se o console não estiver disponível, no servidor:

sh
sudo orbit status                                # versão, instalação, operações em andamento
sudo systemctl restart orbit                     # retomar: a atualização continua da última etapa
sudo orbit update rollback                       # voltar os binários anteriores e o backup de antes da atualização
sudo journalctl -u orbit --since "1 hour ago"
  • Retome quando a causa foi temporária (o servidor reiniciou, o disco encheu e foi liberado). A atualização continua de onde parou, e migrações já aplicadas não são aplicadas de novo.

  • Volte atrás quando o problema é a própria versão. Voltar atrás restaura o backup feito por esta atualização, então o que mudou no Orbit depois que ela começou se perde. As aplicações e os bancos delas não são tocados.

  • Reinstalar uma versão à mão:

    sh
    curl -fsSL https://github.com/getcortexlabs/orbit-releases/releases/latest/download/install.sh | sudo ORBIT_VERSION=<versão> sh

O que uma atualização não cobre ​

Com um servidor principal só, o console do Orbit fica indisponível enquanto ele reinicia, e uma atualização não protege contra a perda desse servidor. Mantenha uma cópia do orbit backup fora do servidor.

Orbit by Cortex Labs