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!

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.

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.

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!

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