ICM / otros / Clúster de Docker con Swarm Mode

Clúster de Docker con Swarm Mode

24 octubre 2020 | Aleix Abrie

En este artículo y el próximo os explicamos un reciente sistema de contenedores que estamos usando en ICM: un clúster de Docker en modo Swarm; y su principal diferencia con Kubernetes. Pero empecemos por el principio aprendiendo el concepto de Docker Swarm.

Docker Swarm

Swarm es un software creado por los programadores de Docker que permite agrupar una serie de hosts de Docker en un clúster y gestionar los clústeres de forma centralizada, así como orquestar los contenedores. Docker Swarm se basa en una arquitectura maestro-esclavo. Cada clúster de Docker está formado al menos por un nodo maestro (también llamado manager) y tantos nodos esclavos (llamados workers) como sea necesario. Mientras que el nodo maestro es responsable de la gestión del clúster y la delegación de tareas, el esclavo se encarga de ejecutar las unidades de trabajo (tasks).

En Docker, “service” o servicio designa una estructura abstracta con la que se pueden definir aquellas tareas que deben ejecutarse en el clúster. Cada servicio está formado por un conjunto de tareas individuales que se procesan en contenedores independientes en uno de los nodos del clúster. Cuando se crea un servicio, el usuario determina la imagen de contenedor en la que se basa y los comandos que se ejecutan en el contenedor, operándose sobre la base de la imagen.

Servicios

Docker Swarm soporta dos modos de definir servicios swarm: servicios globales o replicados.

  • Servicios replicados: se trata de tareas que se ejecutan en un número de réplicas definido por el usuario. A su vez, cada réplica es una instancia del contenedor definido por el servicio. Los servicios replicados se pueden escalar, permitiendo así a los usuarios crear réplicas adicionales. Si así se requiere, un servidor web como NGINX se puede escalar en 2, 4 o 100 instancias con una sola línea de comandos.
  • Servicios globales: si un servicio se ejecuta en modo global, cada nodo disponible en el clúster inicia una tarea para el servicio correspondiente. Si al clúster se le añade un nodo nuevo, el nodo maestro le atribuye una tarea para el servicio global de forma inmediata. Este tipo de servicios se recomiendan para las aplicaciones de monitoreo o los programas antivirus.

 

Uno de los campos en los que se puede aplicar Docker Swarm es el reparto de cargas, pues con el modo enjambre Docker dispone de funciones integradas de balanceo de carga. Si se ejecuta, por ejemplo, un servidor web NGINX con cuatro instancias, Docker distribuye las consultas entrantes de forma inteligente entre las instancias del servidor web disponibles.

En el próximo artículo, explicaremos la diferencia entre esta arquitectura y su principal competidor: Kubernetes.