Desarrollé una aplicación basada en Docker compuesta por múltiples microservicios. Tiene que consumir mensajes de Amazon SQS y procesarlos. Al principio, quería usar AWS Elastic Beanstalk, pero luego me caí del EC2 Container Service. Ahora no sé cuál elegir.
A partir de ahora, Elastic Beanstalk admite entornos de contenedores múltiples. Eso es genial porque cada microservicio tiene su propio servidor de aplicaciones dentro de un contenedor Docker. El siguiente problema es la escala:
No sé cómo funciona el mecanismo de escalado. Por ejemplo: tengo 5 contenedores de Docker en mi Elastic Beanstalk Environment. Ahora solo el quinto contenedor de la ventana acoplable está bajo una gran carga, porque tiene una gran cantidad de mensajes SQS para procesar, los otros cuatro están casi inactivos, porque no necesitan mucha CPU o tal vez no tienen muchos mensajes SQS. Supongamos que el quinto contenedor ejecuta un servidor de aplicaciones JBoss. Hasta donde yo sé, el servidor solo puede consumir una cantidad limitada de solicitudes paralelas incluso si hay suficiente CPU / memoria disponible.
Si el contenedor JBoss Docker no puede manejar la cantidad de solicitudes, pero hay suficiente CPU / memoria disponible, por supuesto, quiero iniciar automáticamente un segundo contenedor Docker / JBoss en la misma instancia. Pero, ¿qué pasa si no tengo suficiente CPU / memoria? Por supuesto, quiero girar en una segunda instancia, que se puede configurar a través de un grupo de escalado automático en EB. Ahora se activa una segunda instancia, pero todos los contenedores excepto el quinto están casi inactivos, por supuesto, no quiero que generen 4 innecesarios en la segunda instancia también, lo que sería un desperdicio de recursos. Solo el quinto debería aparecer y los otros deberían escalar como la quinta escala en función de parámetros configurables como, por ejemplo: CPU / memoria / SQS.
No sé exactamente si Amazon ECS está haciendo eso, o si es posible en absoluto, pero realmente no puedo encontrar ninguna fuente en Internet sobre este tema, que en general se dice, escalado basado en instancias / contenedores.