Controllo delle dipendenze per l'aggiornamento/upgrade di Discourse

Come abbiamo osservato negli anni, a volte un aggiornamento fallisce a causa delle dipendenze, ad esempio versione di Docker/OS.

La mia idea è che Discourse esegua una sorta di controllo delle dipendenze per garantire che i requisiti di base siano soddisfatti. Se il controllo fallisce, fornisce alcuni dettagli su ciò che potrebbe essere necessario e interrompe il processo di aggiornamento.

Ciò contribuirà a ridurre i tempi di inattività del forum interrompendo un aggiornamento del Core Discourse bloccando il processo che fallirà.

Ci provano piuttosto duramente a farlo. Il numero di cose che possono andare storte è piuttosto elevato. Per lo più, se non mantieni aggiornato il tuo sistema operativo (e probabilmente Docker) è colpa tua.

Cercano di verificare la versione di Docker e gli script che uso aggiornano Docker se è noto che sia difettoso (probabilmente dovrebbe sempre aggiornare Docker).

Pensano che potrebbero fare meglio a forzare sempre un aggiornamento da riga di comando se l’immagine di base cambia minimamente. Per lo più non lo uso mai dato che la mia dashboard fa un aggiornamento da riga di comando con un clic.

1 Mi Piace

deos aggiorna docker_manager aggiorna docker?

1 Mi Piace

Non sto assolutamente cercando di dare la colpa a nessuno. La cosa sfortunata con l’auto-hosting, più nello specifico, non è necessariamente capire il sistema operativo del server. La maggior parte delle persone installa un sistema operativo e generalmente lo mantiene aggiornato. Ma spesso con LTS (Long Term Support) potrebbero non sapere o capire come aggiornare il sistema operativo, specialmente se sono abituati alle rolling release (rilasci continui).

Ad esempio, una società che aiuto, dopo non aver eseguito aggiornamenti per un po’, ha notato che era disponibile un aggiornamento. Quindi hanno aggiornato Docker tramite l’interfaccia utente web, il che ha permesso loro di aggiornare Discourse.

A causa del fatto che Ubuntu LTS non era abbastanza recente, l’aggiornamento di Docker non soddisfaceva il requisito minimo. Tuttavia, l’interfaccia utente web ha comunque consentito il tentativo di aggiornamento, che ovviamente è fallito e ha fatto cadere il sito.

Quindi hanno tentato una ricostruzione da riga di comando, che ovviamente è fallita a causa dei requisiti minimi non soddisfatti.

Se l’aggiornamento nel web avesse identificato che la versione di Docker non era la minima richiesta, avrebbe potuto interrompere il processo di aggiornamento notificando una dipendenza non soddisfatta, senza che il sito cadesse.

Ho dato un’occhiata generale per loro, poiché sembra che possano essere in esecuzione altre cose sul server. Ho dato loro istruzioni di far controllare ai loro tecnici l’aggiornamento della LTS a una versione più recente, poiché non volevo provare ad aggiornare il sistema operativo nel caso in cui ciò interrompesse altre cose che stanno eseguendo.

Esiste un modo semplice per riavviare il container prima del tentativo di ricostruzione web e da riga di comando?

Ho provato ./launcher start app

Che è fallito.

L’altra cosa. Dato che il sito di Discourse è andato giù, può funzionare l’avvio di un nuovo server con rsync? Stanno eseguendo la versione stabile invece della versione testata raccomandata.

Se eseguono il ‘do-release-upgrade’ e aggiornano manualmente Docker, sarebbe efficace per aggiornare postgreq?

Sarà all’interno della versione supportata da Ubuntu LTS. Ma solo le versioni supportate dall’LTS. In questo caso il loro LTS è giunto al termine. Quindi non supporta la versione minima di Docker.

Le versioni di Ubuntu LTS, se ricordo bene, hanno un ciclo di vita di aggiornamenti di 4 anni.

1 Mi Piace

Non le persone con cui lavoro. Non lo aggiorneranno quando gli dirò che è obsoleto.

Sono abbastanza sicuro che ciò che viene eseguito all’interno del container non possa dire quale versione di Docker sta eseguendo.

Forse può. Sembra che tu possa ottenerlo dall’interno di un container per vedere quale versione è in esecuzione.

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

Quindi forse potrebbero fare di meglio. Potrebbe essere una cosa interessante da aggiungere alla dashboard, se funziona davvero.

Di solito funziona. Un’eccezione è se il database è stato migrato.

Se il sistema operativo è obsoleto, generalmente trovo più facile e sicuro passare a una nuova VM. Idealmente, lo fai mentre il vecchio server funziona ancora. Vedi Sposta un sito Discourse su un altro VPS con rsync

Se hai un backup, puoi saltare la copia del database e saltare l’aggiornamento del database, basta ripristinarlo sul nuovo database.

1 Mi Piace

Ecco perché ho detto aggiornare. Nel caso di fine supporto, richiede l’aggiornamento del sistema operativo. Ma sono d’accordo con te sul fatto che ci sono una vasta gamma di persone che non seguono bene le istruzioni. :wink:

Quando sono stato promosso ad amministratore per l’azienda per cui aiuto gratuitamente :woman_facepalming:

Ho detto loro per più di un mese di fila che il loro forum sarebbe andato in crash a un certo punto poiché non avevano lo spazio necessario per eseguire la ricostruzione dell’app. Avevano un server di dimensioni minime (7 anni fa). Se ricordo bene, aveva 25 GB di spazio in totale. Ovviamente non hanno ascoltato. E alla fine hanno pagato qualcuno qui per trasferire il forum su un nuovo server. Tempo di inattività totale circa 2 settimane, forse un po’ di più.

Sarebbe sicuramente fantastico se ciò potesse funzionare. Per persone come te e me che vivono un po’ qui, ci teniamo abbastanza aggiornati rispetto a molte persone che visitano solo dopo che si è verificato un problema o cercano componenti aggiuntivi e altri problemi di supporto minori.

Ok, li informerò. Tuttavia, non sono sicuro di quanto sia vecchio il backup. Quindi immagino che nel loro caso sarà necessario esplorare rsync o l’aggiornamento del sistema operativo.

Sul mio server personale che stava per diventare obsoleto, ho letto molto e ho fatto attenzione a non aggiornare via web/riga di comando. Finché non mi sono sentito a mio agio nell’usare la procedura rsync. E ho ancora avuto un paio di piccoli intoppi che tu e la community mi avete aiutato a risolvere.

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

1 Mi Piace