Discourse ist plötzlich nicht mehr zugänglich

Hallo!

Meine Discourse-Instanz funktioniert nicht mehr (seitens meiner Seite wurde nichts geändert).

In der production.log habe ich folgende Meldung erhalten:
Error connecting to Redis on localhost:6379 (Errno::ENETUNREACH) subscribe failed,

Bisher habe ich Folgendes versucht:

  • Server-Neustart
  • Docker-Update + Server-Neustart + Neuaufbau der App

Ich bin mit Docker und Discourse noch recht neu und sehe nicht, was ich sonst noch tun kann :frowning:

Host-Betriebssystem: CentOS 7
Proxy: Apache
Docker: neueste Version

Auf dem Host sind fail2ban und firewalld installiert.
Im firewalld-Log habe ich folgende seltsamen Zeilen gefunden:

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION-STAGE-1' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION-STAGE-2' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION-STAGE-2' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:53 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).

2020-07-23 14:00:53 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).

Jede Hilfe oder jeder Rat wäre willkommen :slight_smile:
Vielen Dank im Voraus!

2 „Gefällt mir“

Es scheint ein Problem mit iptables und Docker zu geben. Das sind die Stichworte, nach denen Sie suchen sollten. Es handelt sich nicht um ein Discourse-Problem.

2 „Gefällt mir“

Ich würde vermuten, dass das Redis-Problem eher mit Discourse als mit iptables oder Docker zusammenhängt, oder?

Das deutet für mich darauf hin, dass das Docker-Netzwerk nicht funktioniert. Selbst wenn Discourse und Redis ordnungsgemäß arbeiten, kann Discourse nicht auf Redis zugreifen, weil das Netzwerk und/oder Docker defekt sind.

Meine Vermutung ist, dass diese Probleme irgendwann nach der Installation von firewalld aufgetreten sind und dass dies Ihre Installation beschädigt hat.

2 „Gefällt mir“

Danke, Jay.

Ich habe den firewalld-Dienst gestoppt, Docker neu gestartet und den fehlerhaften Container ebenfalls neu gestartet, aber der Fehler bleibt derselbe (in production.log):

Error connecting to Redis on localhost:6379 (Errno::ENETUNREACH) subscribe failed, reconnecting in 1 second.

Ich habe mich mit dem Docker-Container verbunden:

docker exec --privileged -it <container id> bash

Ich kann sehen, dass Redis läuft:

redis 45 0.2 0.1 45936 4352 ? Sl 05:29 0:02 /usr/bin/redis-server *:6379

Hast du eine Idee?

Ich habe einige Fortschritte gemacht. Meine Konfiguration verwendet Apache 2.4 als Proxy. In meiner Konfiguration habe ich Folgendes hinzugefügt:

RemoteIPHeader X-Forwarded-For

Um die ursprüngliche IP-Adresse zu verfolgen.
Nach dem Neustart von httpd konnte ich auf Discourse zugreifen (mit einer Warnung zum Ablauf des SSL-Zertifikats). Das habe ich ebenfalls behoben, und jetzt funktioniert alles gut, aber mit deaktiviertem firewalld.

Ich habe viele Beiträge über Probleme zwischen Docker und firewalld unter CentOS 7 gefunden. Ich werde also wieder zu iptables wechseln.

Bezüglich der Redis-Fehlermeldung: Nach den oben genannten Schritten erscheint diese nur noch, wenn Docker gestoppt wird. Beim Neustart wird sie nicht angezeigt, daher gehe ich davon aus, dass das in Ordnung ist.

Danke!

2 „Gefällt mir“

Nachdem ich das gelesen hatte, habe ich Docker auf unserem Centos-Server gestoppt

systemctl stop docker

und dann gestartet

systemctl start docker

Problem gelöst.

Danke @pfaffman

1 „Gefällt mir“