Discourse de repente ya no es accesible

¡Hola!

Mi instancia de Discourse ya no funciona (no se ha realizado ningún cambio de mi parte).

En production.log, tengo este mensaje:
Error connecting to Redis on localhost:6379 (Errno::ENETUNREACH) subscribe failed,

Lo que he intentado hasta ahora:

  • Reinicio del servidor
  • Actualización de Docker + reinicio del servidor + reconstrucción de la aplicación

Soy bastante nuevo en Docker y Discourse, por lo que no veo qué más puedo hacer :frowning:

Sistema operativo anfitrión: CentOS 7
Proxy: Apache
Docker: última versión

En el anfitrión, tengo instalados fail2ban y firewalld.
En el registro de firewalld, encontré líneas extrañas:

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

Cualquier ayuda o consejo sería apreciado :slight_smile:
¡Gracias de antemano!

2 Me gusta

Parece que hay algún problema con iptables y Docker. Esos son los temas que debes buscar. No es un problema de Discourse.

2 Me gusta

Supongo que el problema de Redis está más relacionado con Discourse que con iptables o Docker, ¿no?

Esto me sugiere que la red de Docker está rota, por lo que, incluso si Discourse y Redis funcionan correctamente, Discourse no puede acceder a Redis porque la red y/o Docker están rotos.

Mi suposición es que estos problemas aparecieron en algún momento después de instalar firewalld, y eso es lo que rompió tu instalación.

2 Me gusta

Gracias, Jay.

Detuve el demonio de firewalld, reinicié Docker y el contenedor problemático, pero el error sigue siendo el mismo (en production.log):

Error al conectar con Redis en localhost:6379 (Errno::ENETUNREACH) suscripción fallida, reintentando en 1 segundo.

Me conecté al contenedor de Docker:

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

Puedo ver que Redis se está ejecutando:

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

¿Alguna idea?

He avanzado un poco. Mi configuración utiliza Apache 2.4 como proxy. En mi configuración, he añadido lo siguiente:

RemoteIPHeader X-Forwarded-For

Para mantener un registro de la dirección IP original.
Tras reiniciar httpd, pude acceder a Discourse (con una alerta sobre la expiración del certificado SSL). También solucioné ese problema y ahora todo funciona bien, pero con firewalld desactivado.

He encontrado muchos posts sobre problemas entre Docker y firewalld en CentOS 7. Así que volveré a usar iptables.

En cuanto al mensaje de error de Redis, después de los pasos anteriores, este solo aparece cuando Docker se detiene. Al reiniciar, no se muestra, así que creo que está bien.

¡Gracias!

2 Me gusta

Después de leer esto, detuve Docker en nuestro servidor Centos

systemctl stop docker

luego lo inicié

systemctl start docker

problema resuelto.

Gracias @pfaffman

1 me gusta