Gracias de antemano.
Estoy planeando configurar Discourse con alta disponibilidad en un entorno de producción. Los siguientes son mi plan de diseño y algunas condiciones del entorno.
Configuración con 3 servidores de aplicaciones y 2 servidores de bases de datos Postgres. Siempre un servidor PG en modo de escritura y otro en modo de solo lectura.
Estos 3 servidores de aplicaciones apuntarán al mismo servidor de base de datos.
Cada instancia de la base de datos debe servir operaciones de solo lectura y escritura respectivamente.
Los servidores de producción no tienen conectividad a Internet, pero puedo descargar imágenes de dockerHub.
Tenemos nuestro propio servidor GitLab.
¿Es posible inicializar una imagen de Docker y esa imagen en múltiples servidores?
Por favor, ¿alguien puede ayudarme a hacer esta configuración? Si hay algún enlace o sugerencia, envíeme un mensaje privado.
Después de ejecutar ./launcher bootstrap appen algún lugar, necesitará guardar esa imagen de contenedor resultante (generalmente se hace enviándola a un registro) y luego descargarla y ejecutarla en sus tres servidores de aplicaciones.
También necesitará un servidor Redis central (y potencialmente réplicas para él). También le falta un balanceador de carga para dirigir las solicitudes a esos diferentes servidores de aplicaciones.
Hola @Falco
En mi entorno de producción, no tengo acceso a Internet, así que lo que estoy planeando es realizar el bootstrap en una máquina con acceso a Internet, llevando esa imagen de bootstrap a los servidores de producción. Mientras hago esto en la VM de producción, el contenedor no se inicia porque el servidor Unicorn busca un ID de proceso padre, por lo que no se está ejecutando.
¿Podrías ayudarme aquí? ¿Necesito copiar el directorio /var/discourse donde se realizó el bootstrap al servidor de producción?
¿Está utilizando PostgreSQL, Redis y Object Storage externos? Eso es lo esperado cuando se hace HA, y tanto sus servidores de producción como los servidores de compilación deben tener acceso a esos servicios externos.
Solo probando el escenario, bootstrap funcionando en un servidor y ejecutando la imagen de contenedor bootstrapeada en otro servidor con configuración independiente.
¿Cómo vas a manejar múltiples servidores de aplicaciones y cargas de usuarios? ¿Una unidad de red compartida entre todos los servidores? Eso puede funcionar, pero nuestra solución oficial para eso es el Almacenamiento de Objetos usando la API S3.
Sí, estoy usando un servidor Postgres externo y un clúster de Redis
3 servidores de aplicaciones que se utilizan para el clúster de Redis junto con la aplicación.
Así que necesito usar un directorio/almacenamiento compartido para el directorio de compilación de discourse. Gracias @Falco, ahora está claro para mí.