Actualmente estamos en el proceso de diseño de la arquitectura de nuestra nueva configuración de nube Apache Mesos. El objetivo es unificar nuestros sistemas moviendo diferentes pilas a la misma arquitectura. Las principales cargas de trabajo son análisis de big data que utilizan Apache Spark y nuestra infraestructura corporativa, incluidos servidores web, servidores de correo, etc.
La idea es ejecutar nuestros servicios web en contenedores Docker que se ejecutan sobre uno de los programadores disponibles para Mesos (Marathon / Chronos, Aurora o Singularity). Por lo tanto, este sería el primer grupo marco de Mesos. Junto a él, tendríamos el marco Apache Spark y varios marcos de bases de datos para el almacenamiento de datos. Este sería el segundo grupo de marcos de Mesos. Elegiremos los detalles después de ejecutarlos todos en paralelo para la prueba.
Sin embargo, tenemos problemas para decidir sobre qué base ejecutar Mesos. Idealmente, queremos ejecutarlo lo más cerca posible del metal. También queremos usar una solución de orquestación para asegurarnos de que los demonios Mesos y framework siempre se estén ejecutando / reiniciando en caso de falla. Las opciones que estamos considerando son las siguientes:
1) Ejecutar Mesos y los marcos como contenedores acoplables en un SO mínimo. A este respecto, actualmente nos estamos inclinando hacia CoreOS y Fleet.
2) Ejecutar Mesos y los marcos directamente en los servidores Ubuntu / Debian. Para esta opción, nos estamos inclinando hacia Foreman y Puppet.
En cuanto a la pregunta, buscamos identificar la solución que, en orden de importancia:
- es el menos complejo de configurar
- es el más fácil de mantener y mantener actualizado
- tiene la menor sobrecarga
No hemos trabajado con CoreOS antes, pero es la opción a la que parece que nos dirigimos. Un gran problema (subjetivo) que tengo con esto es que ejecutamos Mesos en contenedores Docker y luego ejecutamos contenedores Docker en Mesos. Esto me parece "impuro" e incorrecto. ¿Es esta consideración sin mérito?
Un pensamiento similar se refiere a la redundancia entre capas. Para explicar de dónde vengo, preferiría que Mesos fuera un sistema operativo real que se ejecuta justo encima del metal. Parece que, independientemente de la base que utilice, terminará con la misma funcionalidad prevista en más de una capa de la arquitectura (es decir, CoreOS & Fleet & SystemD == Mesos & Marathon & Chronos). ¿Es esto inevitable?
¿Hay otras buenas opciones para ejecutar la capa debajo de Mesos que no pudimos considerar, teniendo en cuenta nuestros criterios?