Hoy en día todo administrador de sistemas conoce Apache Mesos, pero quizás no tanto la compañía Mesosphere y su proyecto DC/OS (DataCenter Operating System).

Para quien no haya oído hablar de Apache Mesos, deciros que es un software para la gestión de clústers el cual proporciona un aislamiento de los recursos.  Permite ejecutar múltiples sistemas distribuidos en un mismo clúster de máquinas y compartir de forma dinámica y eficiente los recursos. En este proceso intervienen los nodos master, slaves y el bootstrap. Dichos nodos montan la infraestructura y deciden los roles de los otros nodos.

Mesosphere le ha dado una vuelta de tuerca y ha creado DC/OS, un sistema operativo de centros de datos. DC/OS te permite la gestión de múltiples máquinas como si fueran una sola. Además automatiza la gestión de recursos,facilita la comunicación entre procesos y simplifica la instalación y gestión de los servicios distribuidos. Este sistema incluye una interfaz web intuitiva y permite también interactuar por CLI.

DC/OS gestión de múltiples máquinas

 

No exageramos cuando decimos que simplifica la instalación de los servicios distribuidos. Con un par de clics podemos disponer de más de 40 servicios como Cassandra, Jenkins, Chronos, Kafka, Spark, Zeppelin entre otros. Ahora bien, considerando que DC/OS no tiene ni un año de vida comercial, con el tiempo serán muchos más.

Arquitectura de DC/OS

No se puede decir que DC/OS es un sistema operativo, ya que estos gestionan los recursos de una única máquina. DC/OS es un sistema operativo distribuido que abstrae los recursos de un conjunto de máquinas y proporciona servicios comunes.

El kernel de DC/OS está compuesto por máquinas Mesos, las maestro y los agentes (esclavos). A más alto nivel tenemos los componentes del sistema, como servicios DNS y Marathon. En un nivel superior tenemos la capa de usuario donde residen todos los procesos y servicios.

componente kernel de DC/OS

 

Integración con Dockers

DC/OS es un sistema fácilmente integrable con tecnología de contenedores. Sin embargo, para la integración de microservicios se necesitará un orquestador de dockers.

Tanto para Mesos como para DC/OS en particular el orquestador de contenedores que deberemos usar es Marathon, el cual se integra fácilmente y crea una base sólida sobre la cual se lanzarán los microservicios y aplicaciones web.

De hecho, DC/OS ya incluye Marathon como componente principal para orquestar tanto servicios con dockers como cargas de trabajo que no trabajan con contenedores. Marathon te da la posibilidad de programar infinitas tareas en miles de nodos paralelamente.

integración con dockers

Escalabilidad y alta disponibilidad

Como es de prever, DC/OS es altamente escalable, tanto manualmente añadiendo y eliminando las instancias necesarias como configurar un modelo de autoescalado basado en el número de sesiones a través del balanceador de Marathon.

DC/OS dispone de alta disponibilidad, dado el número de instancias en las que trabaja, pero incluso para los servicios que gestiona, también existe la posibilidad de configurarlos con alta disponibilidad. Para ello, Marathon monitoriza todos los servicios y en caso de fallo son reiniciados.

Conceptos de Seguridad

Dado que el kernel de DC/OS está basado en Linux, el sistema aplica todas las mejores prácticas de éste. A parte, para el nivel de servicios y procesos se aplican tres zonas de seguridad diferenciadas:

Zona de administración: Zona accesible a través de HTTP/HTTPS y por SSH, la cual proporciona acceso a los nodos maestros. También hace de proxy inverso para los otros nodos del clúster.

Zona privada: Es una red que no es enrutable y únicamente se puede acceder desde la zona de administración o desde la zona pública a través del edge router. En esta zona se suelen desplegar los nodos agentes (esclavos).

Zona pública: Es donde se ejecutan las aplicaciones que requieren de acceso público. El edge router será el que envíe el tráfico a los nodos agentes que estén en la red zona privada.

DC/OS sobre Amazon Web Services

Mesosphere pone a disposición de los usuarios un template de CloudFormation para la creación y configuración automática de la infraestructura, el inconveniente es que no es una configuración personalizada y únicamente te da las opciones de elegir entre 1 o 3 masters y en qué región quieres desplegarlo.

Os recomendamos seguir la configuración avanzada para poder desplegar DC/OS a tu medida.

Como resumen dejamos algunos beneficios de utilizar DC/OS y mesos:

  • La ejecución de tareas con cargas incrementales a través de todo el cluster
  • Tener una configuración a nivel global, en masters y slaves hacen que la configuración sea más simple de administrar.
  • La facilidad de levantar algún servicio y/o aplicación además de brindarnos propiedades como escalamiento horizontal y tolerancia a fallos.

En conclusión

DC/OS hace uso de mesos por debajo para la ejecución de tareas y frameworks. Por defecto al instalar DC/OS tenemos instalado mesos, ya que como le hemos comentado DC/OS añade algunas funcionalidades a mesos.

Cuando ejecutamos una tarea en un agente de mesos este hace uso de los cgroups (contenedores de procesos) para restringir el uso de CPU y RAM, de esta manera esto ayuda a que una tarea exceda los recursos asignados.

Los frameworks en mesos son una aplicación que utilizan la API de Mesos para recibir ofertas de recursos de Mesos y responde a las ofertas de recursos para indicar a Mesos que ejecute tareas si el framework requiere tareas para ejecutarse y la oferta tiene recursos suficientes.

Es importante aclarar que un framework puede tener “n” cantidad de tareas, podemos verlo como si un framework fuera el proceso padre y este tiene procesos que actuarían como los hijos.