Das Upgrade auf 3.3 schlägt bei mir fehl

Ich habe versucht, über die Benutzeroberfläche ein Upgrade durchzuführen, was wie unter folgendem Link beschrieben fehlgeschlagen ist:

Also habe ich mein Droplet aus einem Backup wiederhergestellt und dann versucht, manuell ein Upgrade durchzuführen.

cd /var/discourse
git pull
./launcher rebuild app

was Folgendes ergibt:

WARNING: Docker version 20.10.7 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20240825-0027: Pulling from discourse/base
e4fff0779e6d: Pulling fs layer 
04dda0e597e7: Pulling fs layer 
0b0ac7902d91: Pulling fs layer 
1ea0327cd622: Waiting 
459f11cf96b2: Waiting 
cd49b55154ee: Waiting 
4f4fb700ef54: Pull complete 
890a63bee26b: Pull complete 
1d239a1092e9: Pull complete 
7439767d748f: Pull complete 
19e63282f9d1: Pull complete 
6da4866029f1: Pull complete 
3274548c87f4: Pull complete 
fb2589b81eef: Pull complete 
da453ab7ba03: Pull complete 
260969aca4e8: Pull complete 
0c7927423a10: Pull complete 
cfdfd8bdc03e: Pull complete 
f837c184a2c0: Pull complete 
d14903daf553: Pull complete 
01422fc4dc02: Pull complete 
e918b15c8f19: Pull complete 
3202b43401af: Pull complete 
3fa0a48e923e: Pull complete 
2f1f96b416a1: Pull complete 
b5376d8069b5: Pull complete 
259e102648be: Pull complete 
807236570b2a: Pull complete 
e98845c05b05: Pull complete 
578a5e3e249f: Pull complete 
6b0bf88c86e8: Pull complete 
9551a14ee15e: Pull complete 
8bbcc4c7a11d: Pull complete 
5aff35532071: Pull complete 
f73f45300530: Pull complete 
42888ce727c0: Pull complete 
e8467a663928: Pull complete 
d2fb91f4643c: Pull complete 
88fc9778a448: Pull complete 
2a19d28a5a17: Pull complete 
6a2d56837370: Pull complete 
933885f686e0: Pull complete 
aecf6df6a6bb: Pull complete 
33fcdcfe61e2: Pull complete 
12726a4d34c8: Pull complete 
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Downloaded newer image for discourse/base:2.0.20240825-0027
docker.io/discourse/base:2.0.20240825-0027
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20240825-0027: Pulling from discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Image is up to date for discourse/base:2.0.20240825-0027
docker.io/discourse/base:2.0.20240825-0027
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-10-15T06:14:37.390458 #1]  INFO -- : Reading from stdin
I, [2024-10-15T06:14:37.395803 #1]  INFO -- : > echo cron is now included in base image, remove from templates
I, [2024-10-15T06:14:37.398391 #1]  INFO -- : cron is now included in base image, remove from templates

I, [2024-10-15T06:14:37.408024 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown: 
I, [2024-10-15T06:14:37.412237 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2024-10-15T06:14:37.416506 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2024-10-15T06:14:37.420758 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown: 
I, [2024-10-15T06:14:37.424824 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown: 
I, [2024-10-15T06:14:37.425837 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/13/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.426590 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.427073 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.427713 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.428194 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.428633 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.429175 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.429569 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.430001 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.430562 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/13/main/pg_hba.conf
I, [2024-10-15T06:14:37.430964 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-10-15T06:14:37.431353 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-10-15T06:14:37.431673 #1]  INFO -- : > if [ -f /root/install_postgres ]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

I, [2024-10-15T06:14:37.974529 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2024-10-15T06:14:37.975013 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2024-10-15T06:14:37.976577 #1]  INFO -- : Terminating async processes
2024-10-15 06:14:38.136 UTC [36] LOG:  starting PostgreSQL 13.16 (Debian 13.16-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-10-15 06:14:38.138 UTC [36] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-10-15 06:14:38.139 UTC [36] LOG:  listening on IPv6 address "::", port 5432
2024-10-15 06:14:38.143 UTC [36] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-10-15 06:14:38.154 UTC [37] LOG:  database system was shut down at 2024-10-15 06:14:28 UTC
2024-10-15 06:14:38.176 UTC [36] LOG:  database system is ready to accept connections

An diesem Punkt stoppt das Upgrade und es passiert nichts weiter, und der Server ist offline (keine Webverbindung).

Was soll ich als Nächstes versuchen?

UI-Upgrades benötigen mehr Arbeitsspeicher, da Sie versuchen, die Website und den Neuaufbau gleichzeitig auszuführen.

Stellen Sie sicher, dass Sie genügend Swap-Speicher haben, um damit umzugehen – mindestens so viel wie Ihr RAM.

Stellen Sie also auf einem 4-GB-Server sicher, dass Sie 4 GB Swap haben.

Übrigens ist der git pull hier überflüssig. Das Build-Skript erledigt dies für Sie.

1 „Gefällt mir“

Mein Server hat 4 GB RAM und 4 GB Swap. Der Wiederaufbau stoppt einfach bei der Meldung database system is ready to accept connections und wird nicht abgeschlossen, und das Forum bleibt offline. Ich kann es (wieder) aus dem Droplet-Backup wiederherstellen, was mich zu einem funktionierenden 3.2-Forum zurückbringt, aber es wäre besser, dies zu lösen.

# free
              total        used        free      shared  buff/cache   available
Mem:           3919         286        1443          20        2189        3360
Swap:          4095           2        4093
Total:         8015         288        5537
2 „Gefällt mir“

Unter diesen Umständen starte ich normalerweise neu (auf eigene Gefahr), aber das hat mich noch nicht im Stich gelassen. Zumindest ist die Website dann wieder erreichbar.

Stellen Sie sicher, dass Ihr Betriebssystem einigermaßen aktuell ist (LTS) und dass die Docker-Warnung beachtenswert ist.

Überwachen Sie Ihren Arbeitsspeicher während des Neuaufbaus mit htop, um sicherzugehen?

Sieht aber nach viel Swap aus. :+1:

2 „Gefällt mir“

Mein Betriebssystem ist Ubuntu 20.04.6 LTS.

Huh. OK, ich habe neu gestartet und das Forum ist wieder da.

Ahh, aber es steht immer noch, dass 3.2.4 installiert ist, die neueste ist 3.3.2, also ist es nicht aktualisiert.

Ich bin mir also nicht sicher, wo mich das hinführt. Ich werde das Update noch einmal versuchen.

Yep, es stoppt an der gleichen Stelle. Ich nehme an, eine neuere Version von Docker würde eine Aktualisierung der Hauptversion von Ubuntu erfordern, was ich vielleicht tun könnte, ich hatte nur nicht vor, es zu diesem Zeitpunkt zu tun.

Ich würde Ihr Betriebssystem und Docker aktualisieren, nur um sicherzugehen.

Es gibt manchmal große Verzögerungen im Build-Skript an verschiedenen Stellen. Wie lange ist wie lange?

2 „Gefällt mir“

Es hing an diesem Punkt, als ich nach 15-20 Minuten zurückkam. Seitdem habe ich nicht besonders lange gewartet. Es ist möglich, dass es gerade etwas tut, aber dafür gibt es keine Anzeichen. Nichts verbraucht nennenswerte CPU.

1 „Gefällt mir“

Sie haben an diesem Punkt meiner Meinung nach zwei Möglichkeiten:

  • In-Place-Betriebssystem- und Docker-Upgrade – dann erneut versuchen
  • Neues Droplet.

Letzteres könnte schneller gehen.

Nun, ich habe einen aktuellen Snapshot, ich nehme an, ein Ubuntu-Upgrade wird zu diesem Zeitpunkt nicht schaden, ich kann es immer rückgängig machen.

1 „Gefällt mir“

Ach, es weigert sich, weil

Sorry, this storage driver is not supported in kernels for newer
releases

There will not be any further Ubuntu releases that provide kernel
support for the aufs storage driver.

Please ensure that none of your containers are using the aufs storage
driver, remove the directory /var/lib/docker/aufs and try again.

Seufz. Nichts ist jemals einfach, oder?

2 „Gefällt mir“

Neues Droplet. :).\n\nSteps involved to downgrade from 2GB to 1GB on DO? - #3 by merefield(Und vergessen Sie nicht, den Swap auf dem neuen Server neu zu erstellen, falls er noch nicht erstellt wurde)

3 „Gefällt mir“

OK, der gesamte Upgrade-Prozess kann als eine ungeteilte Katastrophe betrachtet werden.

Ich werde den Droplet auf das zurücksetzen, was ich vorher hatte (Ubuntu 20.04.6 LTS und Discord 3.2.4), meinen Kopf in den Sand stecken, alles über 3.3 vergessen und es an einem anderen Tag noch einmal versuchen.

Danke für deine Hilfe.

2 „Gefällt mir“

Bonusfunktion – wenn ich den Tropfen wiederherstelle, werde ich aus irgendeinem Grund abgemeldet – und man kann sich nicht einmal als Administrator anmelden, während die Website im schreibgeschützten Modus ist!

1 „Gefällt mir“

Mir fällt gerade ein, ich kann Docker nicht auf overlay2 umstellen, wie unter (Change the Docker storage backend) beschrieben, um Ubuntu aktualisieren zu können, da das Umschalten auf overlay ./launcher rebuild app erfordert, was fehlschlägt (es sei denn, das Umschalten auf overlay2 löst das Problem, aber das allein scheint unwahrscheinlich). Daher scheint die Migration zu einem neuen Droplet der einzig gangbare Weg zu sein, obwohl dies dann vermutlich DNS-Änderungen erfordert, was im Allgemeinen recht langsam ist. Ugh.

1 „Gefällt mir“

Sie können den Container möglicherweise mit

  docker start app

neu starten.

Sie können Ihr Problem möglicherweise auch mit

 apt install docker-ce docker-ce-cli

lösen.

Ich bin mir bei dem Problem mit dem Overlay nicht sicher. Haben Sie irgendwann ein Betriebssystem-Upgrade von einem älteren Ubuntu durchgeführt?

Wenn Sie sich auf Digital Ocean befinden, können Sie eine statische IP-Adresse erstellen, die auf den alten Server verweist, und die DNS-Einstellungen so ändern, dass sie darauf verweisen. Wenn Sie dann zu dem neuen Server wechseln, gibt es keine DNS-Verzögerung, da Sie die IP-Adresse auf den neuen Server umleiten können.

2 „Gefällt mir“

Ja, das hat den Container neu gestartet, aber ohne ein Upgrade.

Ich weiß nicht, was nach „Das Datenbanksystem ist bereit, Verbindungen zu akzeptieren“ im Upgrade-Prozess passiert, aber weiter kommt es nicht und dann nie weiter (es sei denn, der nächste Schritt dauert sehr lange).

Ja, Ubuntu wurde zuvor aktualisiert. Docker ist also auf aufs, war es schon immer.

Ist es möglich, ohne Upgrade neu zu bauen? Wenn das funktioniert, kann ich das aktuelle Docker möglicherweise von aufs auf overlay2 umstellen, was dann bedeuten würde, dass ich Ubuntu möglicherweise auf 22 upgraden kann, was bedeuten könnte, dass andere Dinge dann funktionieren – aber im Moment habe ich keine Ahnung, warum das Upgrade an diesem Punkt ins Stocken gerät, sodass es ziemlich hoffnungsvoll ist, was es beheben könnte.

Nein, es wird auf den neuesten Commit im festgelegten Branch aktualisiert.

Denken Sie daran, dass die Migration zu einem neuen Server nur 30 Minuten dauern kann.

Ja, es sieht so aus, als müsste ich diesen Weg gehen – nennen Sie mich sentimental, aber ich wollte nicht wirklich einen ganz neuen Server einrichten (auf dem auch ein paar andere Dinge laufen, nicht nur Discourse, die ebenfalls migriert werden müssen), nur um das Forum zu aktualisieren.

Ach ja, so ist das Leben eines jeden, der seinen eigenen Server betreibt.

2 „Gefällt mir“

Ja, es scheint aus irgendeinem Grund einfach dort hängen zu bleiben. Ich weiß nicht warum, aber das Docker-Upgrade scheint ein paar Seiten geholfen zu haben.

Haben Sie versucht, Docker wie oben erwähnt zu aktualisieren?

Sie könnten die Überlagerung denkbarerweise reparieren, wenn Sie woanders suchen würden. Deshalb vertraue ich Betriebssystem-Upgrades nicht.

Das habe ich nicht, aber das werde ich als Nächstes versuchen – ich muss ein weiteres Wartungsfenster einplanen – mein Prozess ist immer, den Droplet herunterzufahren und einen Snapshot zu erstellen, was eine ganze Weile dauert und den größten Teil der Ausfallzeit ausmacht, aber sicherstellt, dass ich den Prozess sehr einfach rückgängig machen kann, was sich ein paar Mal als nützlich erwiesen hat.

Ich werde also am Dienstag ein weiteres Wartungsfenster einplanen und dann versuchen, Docker zu aktualisieren (und wenn das funktioniert, werde ich auch versuchen, auf Overlay umzusteigen). Und wenn es fehlschlägt, werde ich in der folgenden Woche versuchen, einen neuen Server auszuprobieren (oder vielleicht mache ich das parallel, weil ich sowieso einen neuen Server auf einem Test-Droplet einrichten kann).

Danke.