
Tengo recursos limitados en mi servidor y quiero alojar 50 versiones diferentes de mi producto. Tengo un producto muy complicado y lamentablemente con errores y me gustaría mantener todas las versiones accesibles. Si se informa algún error, podremos investigar y determinar cuándo ocurrió exactamente este problema por primera vez.
Pero como cada sitio web tiene 5 GB de datos y 1 GB de base de datos, no es posible mantener todos los sitios web abiertos todo el tiempo. Nuestro servidor da errores de MySQL y el servidor no responde porque la memoria se desborda.
Me preguntaba si hay alguna manera de mantener esos 50 sitios web diferentes deshabilitados de forma predeterminada. Si alguien intenta acceder a la versión 5-1.ourdomain.com, muestra una pantalla de espera y redirige cuando se inicia.
Y si un sitio web no fue visitado más de 30 minutos, ciérrelo y libere los recursos.
Respuesta1
Puede haber una manera mejor, pero debería poder usar un proxy inverso en el host combinado con la activación del socket systemd. Cuando llega una solicitud al socket, systemd puede iniciar el contenedor y reenviar la solicitud (se bloqueará hasta que el contenedor se inicie y reciba la solicitud), luego haga que algo mire los archivos de registro y cuando no aparezca nada en el acceso inicie sesión durante, por ejemplo, 5 minutos, simplemente detenga el contenedor.
Respuesta2
Tuve el mismo problema (querer iniciar un servidor web a pedido... no tener 50(!) copias diferentes ejecutándose en el mismo host). La respuesta existente proporciona una solución perfectamente correcta, pero queda algo de trabajo preliminar para configurarla, y también quería algo que fuera fácilmente implementable en un entorno nativo de contenedores, lo que no funciona muy bien con systemd.
Para ello creé el siguiente proyecto que ahora estoy ejecutando en producción:https://github.com/radian-software/sleeping-beauty
No es perfecto, pero puede servir para su caso de uso o puede adaptarse para adaptarse.