Cómo unir un nodo trabajador a un clúster de Docker Swarm

DockerBeginner
Practicar Ahora

Introducción

Este tutorial lo guiará a través del proceso de unir un nodo trabajador (worker node) a un clúster de Docker Swarm. Al final de este artículo, entenderá cómo configurar y administrar un entorno de Docker Swarm, y cómo agregar nuevos nodos a su clúster sin problemas para escalar sus aplicaciones contenerizadas.

Introducción a Docker Swarm

Docker Swarm es una solución nativa de agrupación en clúster (clustering) y orquestación para contenedores Docker. Permite administrar un grupo de hosts Docker y desplegar aplicaciones en ellos, brindando alta disponibilidad, balanceo de carga y escalabilidad.

¿Qué es Docker Swarm?

Docker Swarm es una función integrada del motor de Docker (Docker Engine) que te permite agrupar múltiples hosts Docker en un solo host Docker virtual. Esto te permite administrar y escalar tus aplicaciones contenerizadas en múltiples hosts, brindando tolerancia a fallos y alta disponibilidad.

Conceptos clave en Docker Swarm

  1. Swarm: Un Swarm es un grupo de hosts Docker (físicos o virtuales) que están ejecutando el motor de Docker y se han unido para formar un clúster.
  2. Nodo (Node): Un Nodo es un solo host Docker que forma parte de un Swarm. Los nodos pueden ser un Gestor (Manager) o un Trabajador (Worker).
  3. Nodo Gestor (Manager Node): Los Nodos Gestores son responsables de administrar el estado del Swarm, programar tareas y mantener el estado deseado del clúster.
  4. Nodo Trabajador (Worker Node): Los Nodos Trabajadores son responsables de ejecutar los contenedores reales según lo dirijan los Nodos Gestores.
  5. Servicio (Service): Un Servicio es una forma declarativa de definir cómo se debe desplegar y escalar una aplicación en el Swarm.
graph TD
    A[Docker Host] --> B[Docker Host]
    B[Docker Host] --> C[Docker Host]
    C[Docker Host] --> D[Docker Host]
    D[Docker Host] --> A[Docker Host]
    A --- E[Manager Node]
    B --- F[Worker Node]
    C --- G[Worker Node]
    D --- H[Worker Node]

Beneficios de Docker Swarm

  • Alta disponibilidad: Docker Swarm proporciona balanceo de carga automático y conmutación por error (failover), asegurando que tus aplicaciones estén altamente disponibles.
  • Escalabilidad: Puedes escalar fácilmente tus aplicaciones hacia arriba o hacia abajo agregando o eliminando nodos al Swarm.
  • Simplicidad: Docker Swarm es una función integrada del motor de Docker, lo que lo hace fácil de configurar y administrar.
  • Integración: Docker Swarm se integra perfectamente con otras herramientas y servicios de Docker, como Docker Compose y Docker Registry.

Configuración de un clúster de Docker Swarm

Requisitos previos

Antes de configurar un clúster de Docker Swarm, asegúrate de tener lo siguiente:

  1. Al menos dos hosts de Ubuntu 22.04 (físicos o virtuales) con el motor de Docker (Docker Engine) instalado.
  2. Acceso SSH a los hosts.

Paso 1: Inicializar el Swarm

En uno de los hosts, ejecuta el siguiente comando para inicializar el Swarm:

docker swarm init --advertise-addr <HOST_IP_ADDRESS>

Reemplaza <HOST_IP_ADDRESS> con la dirección IP del host.

Este comando mostrará un token de unión (join token) que utilizarás para agregar otros nodos al Swarm.

Paso 2: Agregar nodos trabajadores (Worker Nodes) al Swarm

En los otros hosts, ejecuta el comando proporcionado en el paso anterior para unirte al Swarm como un nodo trabajador:

docker swarm join --token <TOKEN> <HOST_IP_ADDRESS>:2377

Reemplaza <TOKEN> con el token proporcionado por la inicialización del Swarm y <HOST_IP_ADDRESS> con la dirección IP del nodo gestor (Manager node).

Paso 3: Verificar el Swarm

Ejecuta el siguiente comando en el nodo gestor para ver los nodos en el Swarm:

docker node ls

Deberías ver el nodo gestor y los nodos trabajadores en la salida.

Paso 4: Desplegar un servicio

Para probar la configuración de tu Swarm, despliega un servicio simple:

docker service create --name nginx --publish 80:80 nginx

Esto creará un servicio llamado "nginx" y lo desplegará en todo el Swarm.

graph TD
    A[Manager Node] --> B[Worker Node]
    B[Worker Node] --> C[Worker Node]
    C[Worker Node] --> A[Manager Node]
    A -- "docker swarm init" --> D[Swarm]
    B -- "docker swarm join" --> D[Swarm]
    C -- "docker swarm join" --> D[Swarm]
    D -- "docker service create" --> E[Nginx Service]

Unir un nodo trabajador (Worker Node) al Swarm

Requisitos previos

Antes de poder unir un nodo trabajador al Swarm, asegúrate de tener lo siguiente:

  1. Un clúster de Docker Swarm en ejecución con al menos un nodo gestor (Manager node).
  2. Acceso SSH al host que deseas unir como nodo trabajador.

Paso 1: Obtener el comando de unión

En el nodo gestor, ejecuta el siguiente comando para obtener el comando de unión para un nodo trabajador:

docker swarm join-token worker

Esto mostrará un comando similar al siguiente:

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

Paso 2: Unirse al Swarm como nodo trabajador

En el host que deseas unir como nodo trabajador, ejecuta el comando obtenido en el paso anterior:

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

Esto unirá el host al Swarm como un nodo trabajador.

Paso 3: Verificar que el nodo se ha unido al Swarm

En el nodo gestor, ejecuta el siguiente comando para listar los nodos en el Swarm:

docker node ls

Deberías ver el nuevo nodo trabajador en la salida.

graph TD
    A[Manager Node] --> B[Worker Node]
    B[Worker Node] --> C[Worker Node]
    C[Worker Node] --> A[Manager Node]
    A -- "docker swarm join-token worker" --> D[Join Command]
    B -- "docker swarm join" --> A[Manager Node]

Siguiendo estos pasos, puedes unir fácilmente un nuevo nodo trabajador a tu clúster de Docker Swarm, expandiendo la capacidad y la resiliencia de tus aplicaciones contenerizadas.

Resumen

En este tutorial de Docker, has aprendido cómo configurar un clúster de Docker Swarm y unir un nodo trabajador (worker node) a él. Al agregar nuevos nodos a tu Swarm, puedes escalar fácilmente tus aplicaciones basadas en Docker y crear un entorno distribuido de alta disponibilidad. Con el conocimiento adquirido de esta guía, ahora puedes administrar y expandir con confianza tu infraestructura de Docker Swarm para satisfacer las crecientes necesidades de tu negocio.