Configuración de Cloudflare y otras tareas post-migración

Hola, he estado trabajando con otras personas para finalizar una migración ad hoc de nuestro antiguo vbulletin3 a Discourse. Ahora es el momento de empezar a pensar en otros aspectos para la migración, uno de los cuales es el hecho de que tenemos una cuenta de Cloudflare que sirve a nuestro foro.

Nos gustaría conservarla si es posible, ya que nuestro foro tiene muchísimos usuarios pasivos (y alrededor de 1000 usuarios activos).

El único hilo que he encontrado aquí que tiene algo de información es de 2015, así que pregunto si hay alguna documentación “oficial” que me haya podido perder y que especifique cómo configurar Cloudflare con Discourse correctamente.

Secundariamente, me gustaría saber si hay un proceso a seguir para:

  • que Discourse actualice las estadísticas después de la migración
  • que el índice de búsqueda de Discourse se “refresque” después de la migración

Gracias de antemano :slight_smile:

¿Servir cómo? Es más fácil usar el modo DNS. Si quieres pasar un tiempo extra para obtener muy pocos beneficios, hay algunos temas al respecto. Principalmente, deshabilitas las optimizaciones que rompen Discourse. Si lo que quieres es quitarle carga a tu servidor, entonces una CDN real como bunny.net es el camino a seguir.

Creo que las estadísticas y la búsqueda deberían funcionar.

¿Podría ser un poco miopía implicar que Cloudflare no es una “CDN real”? Porque lo es (y más que eso). ¿Quizás quisiste decir CDN “tradicional”?

Configurar una CDN tradicional costará mucho más tiempo y te dará aproximadamente la misma cantidad de beneficio.

1 me gusta

¡Entendido!

Y Cloudflare puede ser más barato, ya que la versión gratuita es probablemente suficiente para mucha gente. Parece que siempre hay un tema activo donde alguien ha roto su sitio con Cloudflare, y la forma más fácil de hacerlo funcionar parece ser desactivar toda la optimización para que solo pueda aumentar la latencia.

Si crearas un tema que describiera cómo configurar Cloudflare de manera que proporcione el mismo beneficio que una CDN tradicional, sería de gran ayuda. Quizás sea tan simple como deshabilitar el rocket loader, pero parece que exactamente cómo configurarlo podría ser un objetivo en movimiento (ya que cambian y mejoran su producto).

Lamento no querer iniciar una discusión sobre qué CDN es mejor, etc.

Aún no tengo más información, pero hasta donde entiendo, el foro actualmente utiliza un plan de pago (así que supongo que no es la opción gratuita), pero aun así, eso es lo de menos.

Pregunta simple :slight_smile: → ¿Qué necesito hacer para configurar Cloudflare para que no moleste a Discourse?

Después de eso, estaré más que feliz de entender si es algo realmente necesario o no (es decir, beneficios, etc.) :slight_smile:
Además, si alguien puede darme un enlace o algo sobre las otras dos preguntas menores, sería genial :heart:

Usaré la próxima semana para realizar algunas pruebas en un entorno de staging, ¡así que nada está decidido!

Si está alojado por discourse.org, o por cualquier otra persona, para el caso. Debería consultar con ellos antes de hacer nada con cloudflare. Normalmente, solo crea una CNAME de DNS que apunte a sus servidores. Discourse.org ya tiene CDN implementadas, por lo que no necesita preocuparse.

Gracias @pfaffman, está autoalojado. Como dije, se usa para el foro actual de vbulletin que simplemente se desconectará y será reemplazado por discourse, que responderá desde el mismo nombre de dominio.

1 me gusta

Depende del rol que (si alguno) quieras que Cloudflare desempeñe.

Si solo quieres usar Cloudflare como DNS, asegúrate de que la nube naranja esté deshabilitada para el registro ‘a’ del foro.

Si realmente quieres enviar tráfico de Discourse a través de la red de Cloudflare y estás de acuerdo con la latencia adicional que agrega, como mínimo crea una regla de página para ‘Deshabilitar rendimiento’ para todo el dominio del foro. Ninguna de las optimizaciones de rendimiento de Cloudflare es recomendable y se sabe que rompen sitios.

Ten en cuenta que hay una plantilla de Cloudflare que debe agregarse a tu app.yml, pasará CF-Connecting-IP como la IP del cliente, para que no veas a todos originándose desde un nodo en su red.

Si no estás utilizando almacenamiento basado en objetos y lo ejecutas con la nube naranja habilitada, puedes crear una regla de caché para la ruta de tus activos.

2 Me gusta

Gracias @Stephen.

Cloudflare se usó (bueno, todavía se usa por ahora) para no sobrecargar el servidor web real con solicitudes.

Me preguntaba, sobre todo, con la naturaleza de las actualizaciones en tiempo real de Discourse (¿supongo que websockets? no lo he comprobado) cómo podría ser un problema con algo como el almacenamiento en caché de Cloudflare y todo eso. Por eso me preguntaba si había alguna documentación o si alguien tenía algún consejo :slight_smile:

No sé nada y por eso me pierdo de vez en cuando, pero parece que buscas la naturaleza de PHP pero obtienes la naturaleza de la aplicación JavaScript donde todo, excepto la obtención de datos reales, sucede en el dispositivo del usuario.

Esa es la razón (y mis limitadas habilidades) por la que mis intentos de poner Varnish delante de Discourse fracasaron tan miserablemente.

Claro, puedes servir activos desde CDN, pero eso es todo.

1 me gusta

Bien, Cloudflare no puede hacer nada para reducir la carga del servidor de aplicaciones. Como aplicación de javascript de una sola página, Discourse realmente no se beneficia.

Sin embargo, empeora, porque poner Discourse detrás de Cloudflare agrega saltos de red para cada solicitud entre la aplicación en el navegador y el servidor, por lo que hay un ligero aumento en los tiempos de respuesta.

¿Mantienes las cargas en el servidor o usas S3/una alternativa similar a S3?

1 me gusta

Disculpe la demora en las respuestas.

No sé lo suficiente sobre el diseño de Discourse, pero pensando en la presencia de redis, ya se gestiona parte del almacenamiento en caché de solicitudes comunes. Eso explica que “cloudflare no sea realmente necesario”.

Entonces, ¿estoy entendiendo bien que hay poco o ningún beneficio en tener Cloudflare delante de una instalación de Discourse y, por el contrario, ralentizaría la respuesta (saltos de red)?

La única razón para usar Cloudflare en la instalación de vbulletin3 era que la cantidad de solicitudes abrumaría al servidor y (solo estoy asumiendo aquí) podría deberse al mal trabajo en el diseño del código de vbulletin3, para ser honesto, porque la VM que lo aloja tiene 4 núcleos, 8 GB de RAM solo para la aplicación y otra VM con especificaciones iguales para la base de datos.

No hay forma de que ninguna aplicación web moderna necesite tanta potencia hoy en día.

Hablando de eso, ¿hay alguna referencia que pueda consultar para evaluar cuánta potencia necesitaría para una instalación de Discourse que, en promedio, tiene ~1K de usuarios activos y ~5-6K de usuarios pasivos?

Eso no es completamente cierto. Especialmente en una primera carga, Cloudflare puede acelerar la carga de activos estáticos de Javascript. Y eso es exactamente una de las cosas que Google observa para decidir si tu sitio es lo suficientemente eficiente como para evitar una penalización del motor de búsqueda. Los beneficios son mayores cuando tienes un foro de marketing que atrae usuarios de los motores de búsqueda, y las desventajas son mayores cuando tienes un foro con un grupo de usuarios activo y recurrente.

No, porque realmente depende de si esos usuarios son muy activos o si visitan una vez al día. He visto a un grupo de < 50 personas intercambiando fotos grandes y usando Discourse como una caja de chat durante todo el día poner de rodillas hardware muy eficiente, mientras que también he visto un foro con 10.000 personas que venían a publicar algo una vez a la semana y más de 30 millones (!) de observadores funcionando en un VPS mediocre.

3 Me gusta

Gracias por la información y los datos @RGJ, supongo que solo monitorizaré y veremos cómo van las cosas. Espero que no requiera un aumento masivo de los requisitos en comparación con el software anterior :crossed_fingers: