Que es Docker Swarm

Swarm

-. Las versiones actuales de Docker incluyen el modo swarm para administrar de forma nativa un grupo de motores Docker llamado swarm . Utilice la CLI de Docker para crear un swarm, implementar servicios de aplicaciones en un swarm y administrar el comportamiento del swarm.

-. El modo Docker Swarm está integrado en Docker Engine.

Características destacadas

  1. -. Gestión de clústeres integrada con Docker Engine: utilice la CLI de Docker Engine para crear un swarm de Docker Engines donde pueda implementar servicios de aplicaciones. No necesita software de orquestación adicional para crear o administrar un swarm.
  2. -. Diseño descentralizado: en lugar de manejar la diferenciación entre roles de nodo en el momento de la implementación, Docker Engine maneja cualquier especialización en tiempo de ejecución. Puede implementar ambos tipos de nodos, administradores y trabajadores, utilizando Docker Engine. Esto significa que puede crear un swarm (enjambre) completo a partir de una sola imagen de disco.
  3. -. Modelo de servicio declarativo: Docker Engine utiliza un enfoque declarativo para permitirle definir el estado deseado de los diversos servicios en su pila de aplicaciones. Por ejemplo, puede describir una aplicación compuesta por un servicio web front-end con servicios de cola de mensajes y un back-end de base de datos.
  4. -. Escalado: para cada servicio, puede declarar el número de tareas que desea ejecutar. Cuando escala hacia arriba o hacia abajo, el administrador de swarm se adapta automáticamente agregando o eliminando tareas para mantener el estado deseado.
  5. -. Conciliación del estado deseado: el nodo del administrador de swarm monitorea constantemente el estado del clúster y concilia cualquier diferencia entre el estado real y el estado deseado expresado. Por ejemplo, si configura un servicio para ejecutar 5 réplicas de un contenedor y una máquina de trabajo que aloja una de esas réplicas se bloquea, el administrador crea una nuevas réplicas para reemplazar las réplica que fallo . El administrador de swarm asigna las nuevas réplicas a los workers que están en ejecución y disponibles.
  6. -. Red de múltiples hosts: puede especificar una red superpuesta para sus servicios. El administrador de swarm asigna automáticamente direcciones a los contenedores en la red superpuesta cuando inicializa o actualiza la aplicación.
  7. -. Descubrimiento de servicios: los nodos del administrador de swarm asignan a cada servicio en el swarm un nombre DNS único y equilibran la carga que ejecutan los contenedores. Puede consultar todos los contenedores que se ejecutan en el swarm a través de un servidor DNS integrado en el swarm.
  8. -. Equilibrio de carga: puede exponer los puertos para servicios a un equilibrador de carga externo. Internamente, el swarm le permite especificar cómo distribuir los contenedores de servicios entre los nodos.
  9. -. Seguro de forma predeterminada: cada nodo del swarm aplica la autenticación mutua y el cifrado TLS para proteger las comunicaciones entre él y todos los demás nodos. Tiene la opción de utilizar certificados raíz autofirmados o certificados de una CA raíz personalizada.
  10. -. Actualizaciones continuas: en el momento del lanzamiento, puede aplicar actualizaciones de servicio a los nodos de forma incremental. El administrador de swarm le permite controlar el retraso entre la implementación del servicio en diferentes conjuntos de nodos. Si algo sale mal, puede volver a una versión anterior del servicio.

Que es Swarm

  1. -. Docker Swarm es una herramienta de gestión de orquestaciones que se ejecuta en aplicaciones de Docker. Ayuda a los usuarios finales a crear e implementar un clúster de nodos de Docker .
  2. -. Cada nodo de un Docker Swarm es un demonio de Docker y todos los demonios de Docker interactúan mediante la API de Docker. Los nodos del mismo clúster pueden implementar y acceder a cada contenedor dentro del Swarm .
  3. -. Un swarm consta de múltiples hosts Docker que se ejecutan en modo swarm y actúan como administradores (para administrar la membresía y delegación) y trabajadores (que ejecutan servicios de swarm ) . Un host de Docker determinado puede ser un administrador, un trabajador o realizar ambas funciones. Cuando crea un servicio, define su estado óptimo (número de réplicas, red y recursos de almacenamiento disponibles, puertos que el servicio expone al mundo exterior y más). Docker trabaja para mantener ese estado deseado. Por ejemplo, si un nodo trabajador deja de estar disponible, Docker programa las tareas de ese nodo en otros nodos. Una tarea es un contenedor en ejecución que forma parte de un servicio de swarm y es administrado por un administrador de swarm, a diferencia de un contenedor independiente.
  4. -. Una de las ventajas clave de los servicios de swarm sobre los contenedores independientes es que puede modificar la configuración de un servicio, incluidas las redes y los volúmenes a los que está conectado, sin la necesidad de reiniciar manualmente el servicio . Docker actualizará la configuración, detendrá las tareas de servicio con la configuración desactualizada y creará otras nuevas que coincidan con la configuración deseada.
  5. -. Cuando Docker se ejecuta en modo de swarm, aún puede ejecutar contenedores independientes en cualquiera de los hosts de Docker que participan en el swarm, así como en los servicios de swarm. Una diferencia clave entre los contenedores independientes y los servicios de swarm es que solo los administradores de swarm pueden gestionar un swarm, mientras que los contenedores independientes se pueden iniciar en cualquier demonio. Los demonios de Docker pueden participar en un swarm como gerentes, trabajadores o ambos.
  6. -. De la misma manera que puede usar Docker Compose para definir y ejecutar contenedores, puede definir y ejecutar pilas de servicios Swarm .

Y para terminas una descripción primero del Nodo, es una instancia del motor Docker. Segundo los servicio es la definición de las tareas a ejecutar en los nodos de administrador o trabajador. Tercero Equilibrio de carga de entrada para exponer los servicios que desea que estén disponibles externamente al swarm.

 

Nodos

  1. -. Un nodo es una instancia del motor Docker que participa en el swarm. También puede pensar en esto como un nodo Docker. Puede ejecutar uno o más nodos en una sola computadora física o servidor en la nube, pero las implementaciones de swarm de producción generalmente incluyen nodos Docker distribuidos en múltiples máquinas físicas y en la nube.
  2. -. Para implementar su aplicación en un swarm, envíe una definición de servicio a un nodo administrador . El nodo administrador distribuye unidades de trabajo llamadas tareas a los nodos trabajadores.
  3. -. Los nodos administradores también realizan las funciones de orquestación y administración de clústeres necesarias para mantener el estado deseado del swarm. Los nodos de administrador eligen un solo líder para realizar las tareas de orquestación.
  4. -. Los nodos de trabajo reciben y ejecutan tareas enviadas desde los nodos de administrador. De forma predeterminada, los nodos de administrador también ejecutan servicios como nodos de trabajo, pero puede configurarlos para que ejecuten tareas de administrador exclusivamente y sean nodos solo de administrador. Un agente se ejecuta en cada nodo trabajador e informa sobre las tareas asignadas. El nodo trabajador notifica al nodo administrador del estado actual de sus tareas asignadas para que el administrador pueda mantener el estado deseado de cada trabajador.

Servicios y tareas

  1. -. Un servicio es la definición de las tareas a ejecutar en los nodos de administrador o trabajador. Es la estructura central del sistema de swarm y la raíz principal de la interacción del usuario con el swarm.
  2. -. Cuando crea un servicio, especifica qué imagen de contenedor usar y qué comandos ejecutar dentro de los contenedores en ejecución.
  3. -. En el modelo de servicios replicados , el administrador de swarm distribuye un número específico de tareas de réplica entre los nodos según la escala que establezca en el estado deseado.
  4. -. Para los servicios globales , el swarm ejecuta una tarea para el servicio en cada nodo disponible en el clúster.
  5. -. Una tarea lleva un contenedor Docker y los comandos para ejecutarse dentro del contenedor . Es la unidad de programación atómatica del swarm. Los nodos de administrador asignan tareas a los nodos de trabajo de acuerdo con la cantidad de réplicas configuradas en la escala de servicio. Una vez que se asigna una tarea a un nodo, no se puede mover a otro nodo. Solo puede ejecutarse en el nodo asignado o fallar.

Equilibrio de carga

  1. -. El administrador de swarm utiliza el equilibrio de carga de entrada para exponer los servicios que desea que estén disponibles externamente al swarm . El administrador de swarm puede asignar automáticamente al servicio un PublishedPort o puede configurar un PublishedPort para el servicio. Puede especificar cualquier puerto no utilizado. Si no especifica un puerto, el administrador de swarm (enjambres) asigna al servicio un puerto en el rango 30000-32767 .
  2. -. Los componentes externos, como los equilibradores de carga en la nube, pueden acceder al servicio en el PublishedPort de cualquier nodo del clúster, ya sea que el nodo esté ejecutando la tarea del servicio o no. Todos los nodos del swarm enrutan las conexiones de entrada a una instancia de tarea en ejecución.
  3. -. El modo Swarm tiene un componente DNS interno que asigna automáticamente a cada servicio del swarm una entrada de DNS. El administrador de swarm utiliza el equilibrio de carga interno para distribuir las solicitudes entre los servicios dentro del clúster según el nombre DNS del servicio.

Recopilando :

Estos apuntes de Swarm en Dockers nos dan visión del conjunto de Swarm del ecosistema de Docker . Mis fuentes principal procede del Origen (Docker Docs)

Referencias: Docker

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *