Multisitio vs. Múltiples contenedores

¿Alguien conoce las ventajas y desventajas de multisitio frente a múltiples contenedores?

Actualmente tengo tres instancias de Discourse como contenedores separados, y estoy pensando en convertir dos, tal vez tres foros más a Discourse. Estarán en el mismo servidor (64 GB de RAM, con SSDs), así que me pregunto cuál sería la mejor manera de proceder.

Preferiría que fueran lo más independientes posible, para que cada uno pueda actualizarse, respaldarse y restaurarse individualmente, y los problemas de uno no afecten a los demás.

¿Qué me recomiendas? ¿Hay alguna ventaja o desventaja a tener en cuenta?

Con un multisitio no podrás realizar actualizaciones individuales ni segmentar los plugins utilizados. Todo eso lo define el multisitio raíz. Sin embargo, la configuración, los temas y las copias de seguridad pueden gestionarse por separado.

Por lo general, también necesitarás un proxy delante para gestionar los certificados SSL.

3 Me gusta

En realidad, he encontrado una forma de que Let’s Encrypt obtenga certificados para múltiples dominios sin redirigir al dominio principal. Setup Multisite Configuration with Let's Encrypt and no Reverse Proxy

@AstonJ, ¿te interesaría probar mi guía paso a paso? Estoy casi seguro de que funciona, pero la última vez que la probé fue hace algunas semanas y no tengo la certeza absoluta de que las instrucciones “funcionen” para alguien que no sea yo.

Si deseas que todos los sitios tengan los mismos complementos y se actualicen todos al mismo tiempo, la configuración multisitio es excelente.

3 Me gusta

Podría simplemente desactivar cualquier plugin no utilizado a través del ACP (y creo que solo hay uno que uno de los foros no necesitará), así que supongo que depende de si hay algún beneficio en usar multisitio. ¿Específicamente, en rendimiento y/o estabilidad?

Creo que leí que @Blake publicó una vez que es una locura no ejecutar PG en su propio contenedor (¿es eso diferente a multisitio?), por eso he estado pensando en hacerlo. Por cierto, no me tomes la palabra sobre lo que dijo Blake, podría haberlo soñado :rofl:

Uso HAProxy, que se encarga de nuestros certificados SSL, así que ‘creo’ que eso podría estar bien.

Creo que dependerá de los beneficios, Jay. Si no hay mucha diferencia, no me importa seguir como he estado, ya que se ha vuelto relativamente fácil configurar y gestionar. Pero si hay algunas grandes ventajas en usar multisitio, definitivamente estaría interesado :sunglasses:

Otra ventaja es que solo estás ejecutando una copia más de Rails y Nginx, por lo que la RAM adicional requerida es mucho menor. Aunque tienes mucha RAM, optar por lo que ya funciona empieza a sonar como la mejor idea.

2 Me gusta

Hola. ¿Es posible combinar usuarios de un multisitio para que un usuario pueda registrarse en todos los multisitios al mismo tiempo registrándose en uno de los sitios (como en Magento)? ¿O una supervariante de usar Discourse, similar a la federación? Para que las alertas funcionen de forma síncrona y el usuario del sitio número 1 pueda recibir alertas del sitio número 2. Lo mismo ocurre con el chat.
Tengo 4 comunidades de la misma gran dirección, pero con temas diferentes, y me gustaría que estas comunidades estuvieran estrechamente integradas entre sí.

Puedes hacer que un sitio sea el servidor de autenticación de Discourse Connect y que todos los demás se autentiquen contra él.

2 Me gusta

Estoy tratando de averiguar si necesito una configuración multisitio, varios contenedores o algo más.

Actualmente tengo 3 comunidades independientes, dos de ellas similares (ambas sobre deportes universitarios pero para dos escuelas separadas) y la tercera sobre cocina y repostería.

Me gustaría que todas estuvieran en el mismo servidor (debido a las limitaciones de la dirección IP de mi ISP), pero en URL separadas, algo así como esto:

foo.bar.com/team1
foo.bar.com/team2
foo.bar.com/cooking

team1.bar.com redirigiendo a foo.bar.com/team1, etc., o a servidores virtuales separados, también estaría bien. (Sé que Apache puede hacer eso, así que asumo que nginx también puede, ya sea directamente o con un servidor proxy delante).

Idealmente, foo.bar.com en sí mismo serviría como una puerta de enlace a estas comunidades independientes, explicando qué son y cómo acceder a ellas. Algunas categorías en cada comunidad podrían ser legibles públicamente y accesibles por los rastreadores web para que aparezcan en las búsquedas web.

¿Es esta una configuración multisitio o una configuración de varios contenedores, o algo completamente diferente?

¿Existen problemas conocidos de diseño de complementos al ejecutar Multisite?

Parece que mi Chatbot no es compatible con Multisite (por lo que es un problema conocido), pero me gustaría entender por qué: está funcionando bien en la instalación estándar.

Específicamente, parece que hay problemas con la tarea de configuración de la base de datos y potencialmente con este trabajo.

1 me gusta

Actualización sobre mi situación.

Después de estudiar un poco, decidí que necesitaba una configuración multisitio (un contenedor en este momento) con un sitio nginx ‘externo’ para explicar la configuración y dirigir a las personas y el tráfico a los sitios de Discourse separados. De esa manera, podría hacer que ambos sitios estuvieran abiertos para acceso de solo lectura (y rastreadores web) sin que las personas de la lista1 tuvieran que lidiar con el contenido de la lista2. Puede que tenga que jugar con robots.txt para que los rastreadores web estén contentos.

Los ejemplos de configuración multisitio fueron instructivos, pero no pude hacer que funcionaran con un socket Unix (error de puerta de enlace), así que terminé redirigiéndolos a otro puerto y redirigiendo ese puerto a 443 dentro del contenedor.

En mi archivo app.yml habilité la plantilla SSL pero no la de letsencrypt.

Logré que el sitio de prueba funcionara, ahora estoy buscando cualquier problema que pueda surgir al convertir el sitio de producción, espero que a finales de este mes o el próximo.

Me estoy encargando del problema del certificado en el lado del servidor externo, pero me encontré con el problema de ‘no seguro’ que solucioné requiriendo https en el contenedor. Tengo una tarea que ejecutaré a través de cron para copiar el último certificado y clave al directorio /shared/ssl del contenedor (como ssl.crt y ssl.key). No estoy seguro si necesitaré forzar una recarga de nginx dentro del contenedor para asegurarme de que se cargue un nuevo certificado cuando cambie (en julio, creo).

Me encontré con una peculiaridad de Discourse:

En el archivo del contenedor /etc/nginx/conf.d/discourse.conf hay este fragmento de código (nombre de dominio cambiado):

if ($http_host != ‘site1.my.domain’) {
rewrite (.*) https://site1.my.domain$1 permanent
}

Esto estaba causando que site2.my.domain fuera redirigido a site1.my.domain, así que tuve que comentarlo.

NOTA: Reconstruir el contenedor requiere rehacer esta edición, ¿hay alguna forma de evitarlo?

Y esto llevó a una peculiaridad del navegador, porque ahora Firefox había marcado esa redirección como permanente, así que tuve que borrar la caché del navegador. (¡Tardé demasiado en darme cuenta!)

Se me ocurrió otra cosa extraña.

En mi sitio de prueba, el parámetro para requerir https no estaba marcado para ninguno de los sitios. En mi sitio de producción, ese parámetro ni siquiera está presente en el archivo de configuración. Supongo que eso tiene algo que ver con las diferencias entre los dos sitios.