Heute habe ich versucht, einen zweiten Server hinzuzufügen, um eine unserer Discourse-Instanzen zu hosten. Der Container ist so konfiguriert, dass er externe Redis-, PostgreSQL- und Storage-Server verwendet – er dient nur als Webanwendung. Bisher haben wir die einzelnen Server-Sites ohne Probleme hinter HAProxy betrieben. Wenn wir mit zwei Servern hinter HAProxy laufen, sehen wir eine ganze Reihe von 404-Fehlern von nginx für JS-Dateien. Das Entfernen eines der Server aus HAProxy löst das Problem. Die URLs der Dateien, die 404 zurückgeben, scheinen identisch zu sein, daher bin ich ratlos, warum sie nicht von einem der Server ausgeliefert werden.
Es gibt keine Überschreibungen in den Entwicklereinstellungen. Wir verwenden Version 2.4.3 stabil.
Jeder Container speichert jedoch seine eigenen Kopien der Assets, die durch den Schritt assets:precompile generiert werden. Ist es erforderlich, die vorkompilierten Assets zu teilen?
Was hast du neben dem Hinzufügen und Entfernen von Backends in HAProxy noch getestet?
Ist deine HAProxy-Konfiguration so eingestellt, dass sie Backends zufällig auswählt oder eine Affinität verwendet? Wird der 404-Fehler von HAProxy protokolliert? Wird er von nginx protokolliert? Ist das erste oder zweite Backend fehlerhaft? Erfordert deine Website eine Anmeldung? Kannst du die Fehler reproduzieren, wenn du dich direkt von hinter dem Proxy-Server mit nginx verbindest? Existieren die angeforderten Dateien auf der Festplatte? Betrifft es alle JS-Dateien oder nur bestimmte?