Wie aktualisiere ich Discourse in einer Konfiguration mit mehreren Containern?

Hallo! Ich habe gerade eine frische Discourse-Installation mit mehreren Containern eingerichtet und frage mich, welche Upgrade-Methode für mich die beste wäre.

Die Dokumentation besagt:

Minimieren Sie die Ausfallzeit beim Upgrade auf neue Versionen von Discourse. Sie können neue Web-Prozesse starten, während Ihre Seite läuft, und erst nach dem Build das neue Image aktivieren.

Wie ich das verstehe, bedeutet das, dass es sicher ist, eine vorherige Version von Discourse live zu betreiben, während der andere Container aktualisiert wird?

Zum Beispiel:

Angenommen, ich habe zwei rein webbasierte Container, die auf separaten VMs hinter einem Load Balancer laufen. Ich nehme eine der Container-Instanzen aus dem Load Balancer heraus und führe das Bootstrap auf der neuesten Version durch. Die alte Version ist weiterhin im Einsatz, sodass keine Ausfallzeit entsteht (ist das in Ordnung?). Anschließend füge ich den aktualisierten Container wieder in den Load Balancer ein und wiederhole den Vorgang beim anderen Container.

Das klingt doch richtig, oder?"

1 „Gefällt mir“

Das ist ziemlich genau richtig. Für echte Upgrades ohne Ausfallzeit müssen Sie den neuen Container mit SKIP_POST_DEPLOYMENT_MIGRATIONS: 1 initialisieren, dann starten und anschließend, nachdem die alten Container nicht mehr laufen, SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate ausführen. Andernfalls kann der Bootstrap-Prozess (was jedoch nicht bei jedem Upgrade der Fall ist) die Datenbank in einen Zustand versetzen, den der alte Container nicht mehr verwenden kann.

1 „Gefällt mir“

Das ist großartig! Datenbank-Migrationen waren genau meine Sorge, daher ist es hilfreich zu wissen, wie man sie steuern kann!

2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.