Verificação de dependência de atualização/upgrade do Discourse

Como temos observado ao longo dos anos, às vezes uma atualização/upgrade falha devido a dependências. Ex: versão do Docker/SO.

Minha ideia é que o Discourse execute algum tipo de verificação de dependência para garantir que os requisitos básicos sejam atendidos. Se a verificação falhar, ele fornece alguns detalhes sobre o que pode ser necessário e aborta o processo de atualização/upgrade.

Isso ajudará a reduzir o tempo de inatividade do fórum, abortando uma atualização/upgrade do Core Discourse ao abortar o processo que falhará.

Eles se esforçam bastante para fazer isso. O número de coisas que podem dar errado é bem grande. Principalmente, se você não mantiver seu sistema operacional atualizado (e provavelmente o Docker), a culpa é sua.

Eles tentam verificar a versão do Docker, e os scripts que eu uso atualizam o Docker se for conhecido que ele está ruim (provavelmente deveria sempre atualizar o Docker).

Eu acho que eles poderiam fazer melhor para sempre forçar uma atualização da linha de comando se a imagem base mudar completamente. Eu quase nunca uso isso, já que meu painel faz uma atualização da linha de comando com um clique.

1 curtida

deos update docker_manager update docker?

1 curtida

Eu definitivamente não estou tentando transferir a culpa. O problema com a auto-hospedagem, mais especificamente, não é necessariamente entender o SO (sistema operacional) do servidor. A maioria das pessoas instala um SO e geralmente o mantém atualizado. Mas, frequentemente, com o LTS (suporte de longo prazo), pode não saber ou entender como atualizar o SO, especialmente se estiver acostumada com lançamentos contínuos.

Por exemplo, uma empresa que ajudo, após não atualizar por um tempo, notou que havia uma atualização disponível. Então, eles atualizaram o Docker através da interface web, o que então permitiu que atualizassem o Discourse.

Devido ao Ubuntu LTS não ser novo o suficiente, a atualização do Docker não atendia ao requisito mínimo. A interface web ainda permitiu a tentativa de atualização, que, obviamente, falhou e derrubou o site.

Então, eles tentaram uma reconstrução pela linha de comando, que, obviamente, falhou devido aos requisitos mínimos não serem atendidos.

Se a atualização na web identificasse que a versão do Docker não era a mínima, poderia ter abortado o processo de atualização, notificando uma dependência não atendida, sem que o site caísse.

Dei uma olhada geral para eles. Como parece que eles podem estar executando outras coisas no servidor, instruí-os a pedir para o técnico deles verificar a atualização do LTS para uma versão mais recente, pois eu não queria tentar atualizar o SO, caso isso quebrasse outras coisas que eles estão executando.

Existe uma maneira fácil de reiniciar o contêiner antes da tentativa de reconstrução via web e linha de comando?

Eu tentei ./launcher start app

O que falhou.

A outra coisa. Devido a como o site Discourse caiu, iniciar um novo servidor com rsync funcionaria? Eles estão executando a versão estável em vez dos testes aprovados recomendados.

Se eles executarem o ‘: ‘do-release-upgrade’’ e atualizarem o Docker manualmente, isso seria eficaz para atualizar o PostgreSQL?

Estará dentro da versão suportada pelo Ubuntu LTS. Mas apenas a(s) versão(ões) suportada(s) pelo LTS. Neste caso, o LTS deles está em fim de vida. Portanto, não suporta a versão mínima do Docker.

As versões do Ubuntu LTS, se bem me lembro, têm uma vida útil de 4 anos de atualizações.

1 curtida

Não as pessoas com quem trabalho. Elas não atualizam quando eu digo que está fora do prazo de validade (EOL).

Tenho quase certeza de que o que roda dentro do contêiner não consegue dizer qual versão do Docker está rodando.

Talvez consiga. Parece que você pode obter isso de dentro de um contêiner para ver qual versão está rodando.

https://docs.docker.com/engine/api/v1.30/#operation/SystemVersion

Então, talvez eles pudessem fazer melhor. Isso poderia ser algo legal para adicionar ao painel, se realmente funcionar.

Geralmente funciona. Uma exceção é se o banco de dados foi migrado.

Se o sistema operacional estiver desatualizado, geralmente acho mais fácil e seguro migrar para uma nova VM. Idealmente, você faz isso enquanto o servidor antigo ainda funciona. Veja Mover um site Discourse para outro VPS com rsync

Se você tiver um backup, pode pular a cópia do banco de dados e pular a atualização do banco de dados, apenas restaure-o no novo banco de dados.

1 curtida

É por isso que eu disse atualizar. No caso de EOL, requer uma atualização do sistema operacional. Mas concordo com você que há uma grande variedade de pessoas que não seguem bem as instruções. :wink:

Quando fui promovido a administrador da empresa para a qual ajudo gratuitamente :woman_facepalming:

Eu disse a eles por mais de um mês direto que o fórum deles iria falhar em algum momento, pois eles não tinham espaço necessário para realizar a reconstrução do aplicativo. Eles tinham um servidor de tamanho mínimo (7 anos atrás). Se bem me lembro, tinha 25 GB de espaço no total. Claro que eles não ouviram. E acabaram pagando alguém aqui para colocar o fórum em um novo servidor. Tempo total de inatividade cerca de 2 semanas, talvez um pouco mais.

Isso seria definitivamente legal se pudesse ser feito funcionar. Para pessoas como eu e você que meio que vivem aqui, nos mantemos bastante atualizados, em comparação com muitas pessoas que só visitam depois que um problema surge ou procuram por add-ons e outras questões de suporte mais menores.

Ok, vou avisá-los. No entanto, não tenho certeza de quão antiga é a cópia de segurança. Então, imagine que no caso deles, rsync ou atualização do sistema operacional precisarão ser explorados.

No meu servidor pessoal que estava prestes a ficar desatualizado, li muito e tomei cuidado para não atualizar pela web/linha de comando. Até que eu estivesse confortável usando o procedimento rsync. E ainda tive alguns pequenos soluços que você e a comunidade me ajudaram a depurar.

:clinking_beer_mugs::smiling_face_with_sunglasses::+1::sparkles:

1 curtida