Vielen Dank im Voraus.
Ich plane, Discourse mit hoher Verfügbarkeit in einer Produktionsumgebung einzurichten. Unten sind mein Designplan und einige Umgebungsbedingungen aufgeführt.
Einrichtung mit 3 Anwendungsservern und 2 Postgres-DB-Servern. Immer ein PG-Server im Schreibmodus und ein weiterer im schreibgeschützten Modus.
Diese 3 Anwendungsserver werden auf denselben DB-Server zeigen.
Jede DB-Instanz sollte jeweils nur Lese- und Schreibvorgänge bedienen.
Produktionsserver haben keine Internetverbindung, aber ich kann DockerHub-Images herunterladen.
Wir haben unseren eigenen GitLab-Server.
Ist es möglich, ein Docker-Image zu bootstrappen und dieses Image auf mehreren Servern zu verwenden?
Bitte helfen Sie mir bei der Einrichtung. Wenn Sie Links oder Vorschläge haben, senden Sie mir bitte eine private Nachricht.
Nachdem Sie ./launcher bootstrap appirgendwo ausgeführt haben, müssen Sie das resultierende Container-Image speichern (normalerweise durch Hochladen in eine Registry) und es dann auf Ihren drei Anwendungsservern herunterladen und ausführen.
Sie benötigen außerdem einen zentralen Redis-Server (und möglicherweise Replikate dafür). Ihnen fehlt auch ein Load Balancer, um Anfragen an die verschiedenen Anwendungsserver zu leiten.
Hallo @Falco
In meiner Produktionsumgebung habe ich keinen Internetzugang. Daher plane ich, den Bootstrap auf einer internetfähigen Maschine durchzuführen und dieses Bootstrap-Image dann auf die Produktionsserver zu übertragen. Während dieses Vorgangs auf der Produktions-VM kommt der Container nicht hoch, da der Unicorn-Server nach einer übergeordneten Prozess-ID sucht und daher nicht läuft.
Können Sie mir hier bitte helfen? Muss ich das durchgeführte Bootstrap-Verzeichnis /var/discourse auf den Produktionsserver kopieren?
Verwenden Sie eine externe PostgreSQL-, Redis- und Objektspeicherlösung? Dies ist für Hochverfügbarkeit (HA) zu erwarten, und sowohl Ihre Produktionsserver als auch die Build-Server müssen Zugriff auf diese externen Dienste haben.
Nur zum Testen des Szenarios, Bootstrap auf einem Server und Ausführen eines bootstrapped Container-Images auf einem anderen Server mit Standalone-Setup.
Wie werden Sie mehrere App-Server und Benutzer-Uploads handhaben? Ein gemeinsam genutztes Netzwerklaufwerk zwischen allen Servern? Das mag funktionieren, aber unsere offizielle Lösung dafür ist Object Storage mit der S3-API.