Introducción
Docker Swarm es una herramienta poderosa para orquestar y gestionar contenedores Docker a gran escala. En este tutorial, aprenderás cómo añadir nuevos nodos a tu clúster existente de Docker Swarm, lo que te permitirá expandir tu infraestructura y mejorar la disponibilidad y la resiliencia de tus aplicaciones.
Comprensión de los Conceptos Básicos de Docker Swarm
¿Qué es Docker Swarm?
Docker Swarm es una solución nativa de agrupación y programación para contenedores Docker. Te permite gestionar un grupo de motores Docker, llamado enjambre (swarm), como un único motor Docker virtual. Esto significa que puedes desplegar tus aplicaciones en varios hosts, garantizando alta disponibilidad y escalabilidad.
Conceptos Clave en Docker Swarm
- Nodo: Un nodo es una instancia del motor Docker que participa en el enjambre. Los nodos pueden ser administradores o trabajadores.
- Nodo Administrador: Los nodos administradores son responsables de gestionar el enjambre, incluyendo la programación de tareas, el mantenimiento del estado del clúster y la gestión de la conmutación por error.
- Nodo Trabajador: Los nodos trabajadores reciben y ejecutan las tareas asignadas por los nodos administradores.
- Servicio: Un servicio define el estado deseado de un conjunto de tareas (contenedores) en el enjambre. Los servicios son los componentes básicos para desplegar aplicaciones en un enjambre.
- Tarea: Una tarea es un contenedor individual que forma parte de un servicio y está programado para ejecutarse en un nodo.
Ventajas de Docker Swarm
- Simplicidad: Docker Swarm está integrado en el motor Docker, lo que facilita su configuración y gestión.
- Alta Disponibilidad: Swarm proporciona equilibrio de carga y conmutación por error automáticos, garantizando la alta disponibilidad de tus aplicaciones.
- Escalabilidad: Puedes escalar fácilmente tus aplicaciones añadiendo o eliminando nodos del enjambre.
- Seguridad: Docker Swarm utiliza funciones de seguridad integradas, como comunicación cifrada y control de acceso basado en roles.
Primeros Pasos con Docker Swarm
Para empezar con Docker Swarm, necesitarás configurar un clúster de enjambre. Esto implica inicializar un nodo administrador y luego añadir nodos trabajadores al enjambre. Veamos un ejemplo usando Ubuntu 22.04:
## Inicializar el enjambre en un nodo administrador
## Unir un nodo trabajador al enjambre
Una vez configurado el enjambre, puedes empezar a desplegar tus aplicaciones como servicios.
Adición de Nodos a un Clúster de Docker Swarm
Unión de Nodos Trabajadores al Enjambre
Para añadir nodos trabajadores a tu clúster de Docker Swarm, puedes usar el comando docker swarm join. Este comando requiere el token de unión, que se puede obtener del nodo administrador.
En el nodo administrador, ejecuta el siguiente comando para obtener el token de unión:
docker swarm join-token worker
Esto mostrará un comando que puedes usar para unir un nodo trabajador al enjambre, por ejemplo:
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7riia...
Ahora, en el nodo trabajador, ejecuta el comando proporcionado por el nodo administrador para unirse al enjambre.
Unión de Nodos Administradores al Enjambre
También puedes añadir nodos administradores a tu clúster de Docker Swarm. Esto es útil para aumentar la tolerancia a fallos y la alta disponibilidad de tu enjambre.
Para añadir un nuevo nodo administrador, ejecuta el siguiente comando en el nuevo nodo:
docker swarm join --token SWMTKN-1-61ztec9roubhglb7xbc...
El token utilizado para unir el nodo administrador se puede obtener de un nodo administrador existente usando el siguiente comando:
docker swarm join-token manager
Verificación del Estado de los Nodos
Después de añadir nodos al enjambre, puedes usar el comando docker node ls para ver el estado de todos los nodos del clúster. Esto te mostrará el rol de cada nodo (administrador o trabajador) y su estado actual.
docker node ls
Esto mostrará una tabla con información sobre cada nodo del enjambre.
Eliminación de Nodos del Enjambre
Si necesitas eliminar un nodo del enjambre, puedes usar el comando docker node rm. Por ejemplo, para eliminar un nodo trabajador:
docker node rm worker-node
Para eliminar un nodo administrador, primero debes degradarlo a un nodo trabajador y luego eliminarlo:
docker node demote manager-node
docker node rm manager-node
Recuerda planificar cuidadosamente la eliminación de nodos, ya que puede afectar a la disponibilidad y la resiliencia de tu enjambre.
Administración y Monitoreo de Nodos Swarm
Monitoreo de Nodos Swarm
Para monitorear la salud y el estado de tus nodos Docker Swarm, puedes usar los siguientes comandos:
## Listar todos los nodos en el enjambre
docker node ls
## Inspeccionar un nodo específico
docker node inspect node-name
## Ver métricas del nodo
docker node ps node-name
El comando docker node ls te dará una visión general de todos los nodos en tu enjambre, incluyendo su rol (administrador o trabajador), estado y disponibilidad.
El comando docker node inspect proporciona información detallada sobre un nodo específico, como su dirección IP, recursos y etiquetas.
El comando docker node ps te permite ver las tareas y contenedores en ejecución en un nodo específico.
Administración de Nodos Swarm
Además del monitoreo, también puedes administrar los nodos en tu clúster de Docker Swarm usando varios comandos:
## Promover un nodo trabajador a administrador
docker node promote worker-node
## Degradar un nodo administrador a trabajador
docker node demote manager-node
## Actualizar etiquetas del nodo
docker node update --label-add label=value node-name
## Eliminar un nodo (evitar que se programen nuevas tareas)
docker node update --availability drain node-name
## Volver a activar un nodo
docker node update --availability active node-name
Los comandos docker node promote y docker node demote te permiten cambiar el rol de un nodo dentro del enjambre.
Puedes usar el comando docker node update para agregar, modificar o eliminar etiquetas en un nodo. Las etiquetas se pueden usar para aplicar restricciones o preferencias específicas al programar tareas.
El comando docker node update --availability drain te permite sacar temporalmente un nodo de servicio, evitando que se programen nuevas tareas en él. Esto puede ser útil para realizar mantenimiento o actualizaciones en un nodo.
Copia de Seguridad y Restauración del Estado de Swarm
Es importante realizar copias de seguridad periódicas del estado de tu clúster de Docker Swarm para asegurar que puedas recuperarte de cualquier problema o fallo. Puedes usar el comando docker swarm init --force-new-cluster para inicializar un nuevo enjambre usando los datos de la copia de seguridad.
Siguiendo estas prácticas recomendadas para administrar y monitorear tus nodos Docker Swarm, puedes asegurar la confiabilidad y la resiliencia de tus aplicaciones contenedorizadas.
Resumen
Al finalizar este tutorial, tendrás una comprensión sólida de cómo agregar nodos a un clúster de Docker Swarm. Podrás escalar tu infraestructura Docker, asegurando que tus aplicaciones puedan manejar cargas de trabajo incrementadas y proporcionando alta disponibilidad para tus servicios. Este conocimiento será invaluable a medida que continúes construyendo y administrando tus soluciones basadas en Docker.



