Discourse soudainement inaccessible maintenant

Bonjour !

Mon instance Discourse ne fonctionne plus (rien n’a été modifié de mon côté).

Dans production.log, j’ai ce message :
Erreur de connexion à Redis sur localhost:6379 (Errno::ENETUNREACH) échec de l'abonnement,

Voici ce que j’ai essayé jusqu’à présent :

  • Redémarrage du serveur
  • Mise à jour de Docker + redémarrage du serveur + reconstruction de l’application

Je suis assez nouveau avec Docker et Discourse, donc je ne vois pas ce que je peux faire d’autre :frowning:

Système d’exploitation hôte : CentOS 7
Proxy : Apache
Docker : dernière version

Sur l’hôte, fail2ban et firewalld sont installés.
Dans le journal de firewalld, j’ai trouvé des lignes étranges :

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?).

Toute aide ou conseil serait appréciée :slight_smile:
Merci d’avance !

2 « J'aime »

Il semble y avoir un problème avec iptables et Docker. Ce sont les éléments à rechercher. Ce n’est pas un problème lié à Discourse.

2 « J'aime »

Je dirais que le problème Redis est plus lié à Discourse qu’à iptables ou Docker, non ?

Cela me laisse penser que le réseau Docker est défectueux. Ainsi, même si Discourse et Redis fonctionnent correctement, Discourse ne peut pas accéder à Redis car le réseau et/ou Docker sont défectueux.

Je suppose que ces problèmes sont apparus quelque temps après l’installation de firewalld, et que c’est cela qui a compromis votre installation.

2 « J'aime »

Merci Jay.

J’ai arrêté le démon firewalld, redémarré Docker et le conteneur défaillant, mais l’erreur reste la même (dans production.log) :

Erreur de connexion à Redis sur localhost:6379 (Errno::ENETUNREACH) échec de l'abonnement, reconnexion dans 1 seconde.

Je me suis connecté au conteneur Docker :

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

Je vois que Redis est en cours d’exécution :

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

Une idée ?

J’ai fait des progrès. Ma configuration utilise Apache 2.4 comme proxy. Dans ma configuration, j’ai ajouté ce qui suit :

RemoteIPHeader X-Forwarded-For

Pour garder une trace de l’adresse IP d’origine.
Après le redémarrage de httpd, j’ai pu accéder à Discourse (avec une alerte concernant l’expiration du certificat SSL). J’ai également résolu ce problème, et maintenant tout fonctionne bien, mais avec firewalld désactivé.

J’ai trouvé de nombreux posts sur les problèmes entre Docker et firewalld sur CentOS 7. Je vais donc revenir à iptables.

Concernant le message d’erreur Redis, après les étapes ci-dessus, celui-ci n’apparaît que lors de l’arrêt de Docker. Au redémarrage, il n’est pas affiché, donc je pense que c’est acceptable.

Merci !

2 « J'aime »

Après avoir lu ceci, j’ai arrêté Docker sur notre serveur Centos

systemctl stop docker

puis je l’ai redémarré

systemctl start docker

problème résolu.

Merci @pfaffman

1 « J'aime »