Skip to main content

Por diversos motivos, pode ser necessário dar um boot em algum servidor.

Esse é um processo CRÍTICO que deve ser evitado a todo custo, porque:

  • leva algum tempo
  • os containers voltam "tortos" e exigem interação manual
  • se você perder conexão com a internet no meio do caminho, o servidor não deve voltar sozinho

Então EVITE DAR BOOT NO SERVIDOR.

Mas, se precisar...

OPÇÕES

Existem duas maneiras de rebootar um servidor:

  • reboot via SSH (preferencial)
  • reboot pela interface DigitalOcean (dedoff)

Sempre que possível, faça o processo via SSH, porque há menos chance de problemas e o sofrimento será menor.

Em situaçõe críticas (crash geral que não permite nem conexão via SSH), daí não há alternativa e é necessário "tirar o servidor da tomada" pela interface da DigitalOcean.

REBOOT VIA SSH

Se é possível conectar via SSH, o melhor procedimento é o seguinte:

  • parar todos os containers Docker de Acceleros
  • parar todos os containers Docker de infra-estrutura
  • garantir que não há nenhum container em execução
  • rebootar o servidor

Isso pode ser feito da seguinte maneira:

/root/docker/scripts/docker-stopDeploys.sh
/root/docker/scripts/docker-stopEverything.sh
docker ps
# NÃO DEVE MOSTRAR NENHUM CONTAINER
reboot now

REBOOT VIA INTERFACE DIGITALOCEAN

Se não for possível acessar o servidor via SSH (nem pelo console da DigitalOcean), o jeito é "desligar na brutalidade".

Basta acessar a tela do servidor e clicar no botão de Ligar/Desligar.

TODO: Adicionar imagem

Imagem original do YouTrack não migrada (image.png). Reanexar o screenshot correspondente.

Vai demorar um pouco (2/3 minutos?), porque primeiro é feita uma tentativa de "shutdown controlado", e apenas se essa tentativa falhar (e deve falhar, porque se chegou aqui é porque já está tudo danado) é feito um shutdown bruto.

Assim que o servidor desligar, o botão muda de cor. Daí basta clicar mais uma vez nele pra "religar".

A VOLTA APÓS SHUTDOWN BRUTO

Se você conseguiu parar todos os containers ANTES de fazer o boot, essa seção não serve pra nada.

Se você teve que fazer um shutdown bruto, você terá que ser rápido: o Docker vai tentar reiniciar todos os containers que estavam em execução antes do boot, mas será tanta coisa ao mesmo tempo (e tudo sem controle de ordem) que a chance do servidor não aguentar é grande.

Por isso, assim que você religar a máquina, acesse ela via SSH o mais rápido possível e pare todos os containers:

ssh root@molecula.iongrade.com.br
#CONECTOU NO SERVIDOR...
/root/docker/scripts/docker-stopEverything.sh

A máquina estará lenta, por isso é necessário paciência.

Mas assim que você conseguir parar os containers, tudo volta ao normal. Garanta via htop que a CPU está tranquila e que realmente não tem nenhum container em execução (docker ps).

Se for necessário, pode rodar o script docker-stopEverything.sh novamente.

RECOLOCANDO AS COISAS NO AR

Com o servidor de volta no ar e "zerado" (nenhum container em execução), e você conectado nele via SSH, podemos seguir o processo de manutenção.

Se tiver tempo, aproveite o momento pra fazer upgrades, por que é rara essa situação de "servidor limpo":

apt upgrade -y

Em seguida, vamos colocar as coisas no ar novamente de forma controlada.

Primeiro, vamos subir os serviços de infra-estrutura:

/root/docker/scripts/docker-startInfra.sh

Em seguida, suba os deploys (individualmente, se quiser priorizar algum, ou em lote através de script pronto):

# SE QUISER SUBIR TODOS OS DEPLOYS EM ORDEM ALFABÉTICA (PREFERENCIAL)
/root/docker/scripts/docker-startDeploys.sh

# SE QUISER ESCOLHER A ORDEM DE SUBIDA, TERÁ QUE FAZER MANUALMENTE EM TODOS
cd /root/docker/cliente01.accelerobr.com.br/scripts
./up.sh
cd /root/docker/cliente02.accelerobr.com.br/scripts
./up.sh
# ...
# ...
cd /root/docker/clientenn.accelerobr.com.br/scripts
./up.sh

Depois de subir todos os deploys, aguarde alguns instantes pra CPU "acalmar" e faça os seguintes testes:

  • todos os containers estão em execução, sem reiniciar (docker ps)?
  • os deploys estão acessíveis via HTTP?
  • é possível acessar o broker MQTT dos clientes?
  • a tela de Status servidores do Ozone está mostrando informações atualizadas deste servidor?

Acompanhe por alguns momentos.

Aproveite para fazer uma limpeza geral de logs:

clearAllLogs

Seu servidor deve estar de volta em funcionamento.