No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Swarm

Curso de Swarm

Guido Vilariño

Guido Vilariño

Implementación de Docker Swarm en Producción: Arquitectura y Gestión

21/24
Recursos

¿Cómo diseñar un Docker Swarm productivo?

El uso de Docker Swarm en producción es un tema crítico para maximizar la eficiencia y la resiliencia de las operaciones en la nube. Docker Swarm permite gestionar un conjunto de nodos de manera eficiente, asegurando que las cargas de trabajo se distribuyan adecuadamente. En este punto, debes haber notado que los managers en Docker Swarm se configuran en números impares, y hay una buena razón para ello: evitar empates en la elección de un líder.

¿Por qué los managers deben ser impares?

En Docker Swarm, el concepto de líder es central para la toma de decisiones. Un solo manager asume la función de líder, tomando decisiones cruciales, como el registro de nuevos nodos o la creación de servicios. Para evitar conflictos y mantener la armonía en el sistema, el número de managers debe ser impar. Esto se debe a que utilizan el algoritmo Raft, el cual requiere una votación entre los managers para elegir al líder. Al ser impares, nunca hay empates en la votación, garantizando que siempre haya un líder definitivo.

¿Qué consideración debemos tener con los workers?

En cuanto a los workers, la flexibilidad es clave. Puedes crear diferentes grupos de workers según las necesidades específicas de tu aplicación, optimizando así el uso de recursos. Por ejemplo, es posible que necesites un grupo de workers con altas capacidades de RAM para tareas intensivas en memoria, como el procesamiento de imágenes. Mientras que otros workers con mayor capacidad de CPU pueden ser más útiles para tareas en tiempo real que requieren una respuesta rápida.

A modo de ejemplo, en Mural, una herramienta de colaboración visual, se utilizan diferentes tipos de workers para tareas específicas: generación de miniaturas de murales o reescalado de imágenes en tiempo real. Esto permite adaptar la infraestructura a diversas cargas de trabajo mientras se optimizan los recursos disponibles.

¿Cómo se estructura un Docker Swarm eficiente?

Un Docker Swarm eficiente debe ser elástico, respondiendo dinámicamente a los cambios en la carga de trabajo. Aquí algunos aspectos críticos a considerar:

  • Mantener un número impar de managers: garantizar la alta disponibilidad y evitar los cuellos de botella.
  • Distribuir adecuadamente los workers: etiquetarlos según el hardware disponible y las necesidades específicas de cada tarea.
  • Configurar auto-scaling groups o scale sets: permitir que el sistema se ajuste automáticamente según la demanda, reduciendo costos y mejorando la eficiencia.
  • Utilizar una Virtual Network: asegurar que todas las máquinas puedan comunicar entre sí sin problemas.
  • Administrar los servicios correctamente: desplegar los servicios teniendo en cuenta las capacidades del hardware y la configuración de carga necesaria.

En conclusión, el diseño de un Docker Swarm productivo requiere de una planificación estratégica y una comprensión clara de las necesidades de tu infraestructura. No se trata solo de agregar más servidores, sino de cómo se configuran y utilizan de manera óptima para satisfacer las demandas específicas de tu aplicación. Utilizar Docker Swarm de manera eficiente requiere un enfoque integral en la arquitectura del sistema y en la gestión de recursos, lo que te permitirá mejorar la resiliencia y escalar de manera efectiva.

Aportes 8

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • Como mínimo necesitamos tres manager.
  • Podemos configurar grupos de workers según la necesidad de computo.
  • El número de manager debe ser impar. Hay un único líder, y se rotan el liderazgo en un intervalo de tiempo

Hola! esta muy bueno poder tener maquinas con hardware diferente para necesidades diferentes, pero entonces como le digo al contenedor que corra es ese tipo de maquina? con labels?

-Para que Docker Swarm funcione (utilizando buenas practicas), tiene que haber un número impar de Managers.
-En la arquitectura de Swarm debe haber un Nodo Manager Leader que toma la decisión final (creación, asignación, destrucción, tareas, servicios, etc.) y los otros replican lo que dice el líder.
-Cada cierto tiempo se rota el Status Leader entre los nodos Managers utilizando un algoritmo: [Raft] Utilizado en Clustering.

Cada worker lo tenes con un server fisico?

Muy interesante los concejos de los ambientes productivos.

El número de managers tiene que ser impar, el mínimo recomendable es 3. Los estados del nodo son tres: Leader, candidate and follower.

¿Qué pasa si por alguna razón se va la luz en el nodo 1 manager (de 3 nodos manager y 2 workers)? Si tengo un frontend en React por ejemplo, ¿Cómo hago para que la petición se haga a otro nodo automáticamente en caso de que se apague un nodo manager al que le estoy apuntando?

<https://www.makingscience.es/blog/que-es-docker-swarm/>