# Cómo funcionan los nodos


El modo Swarm te permite crear un clúster de uno o más motores de Docker (Docker Engines) llamado swarm. Un swarm consta de uno o más nodos: máquinas físicas o virtuales que ejecutan Docker Engine.

Hay dos tipos de nodos: [administradores (managers)](#nodos-administradores) y [trabajadores (workers)](#nodos-trabajadores).

![Clúster de modo Swarm](/engine/swarm/images/swarm-diagram.webp)

Si aún no lo has hecho, lee la [introducción al modo Swarm](/engine/how-swarm-mode-works/) y los [conceptos clave](/engine/swarm/key-concepts/).

## Nodos administradores

Los nodos administradores gestionan las tareas de administración del clúster:

* Mantener el estado del clúster
* Programar (schedule) servicios
* Servir los [puntos de enlace de la API HTTP (HTTP API endpoints)](/reference/api/engine/) del modo Swarm

Mediante una implementación de [Raft](https://raft.github.io/raft.pdf), los administradores mantienen un estado interno consistente de todo el swarm y de todos los servicios que se ejecutan en él. Para fines de prueba, es correcto ejecutar un swarm con un solo administrador. Si el administrador en un swarm de un solo administrador falla, tus servicios continuarán ejecutándose, pero necesitarás crear un clúster nuevo para recuperarte.

Para aprovechar las características de tolerancia a fallos del modo Swarm, se recomienda implementar un número impar de nodos de acuerdo con los requisitos de alta disponibilidad de tu organización. Cuando tienes varios administradores, puedes recuperarte del fallo de un nodo administrador sin tiempo de inactividad.

* Un swarm de tres administradores tolera una pérdida máxima de un administrador.
* Un swarm de cinco administradores tolera una pérdida simultánea máxima de dos nodos administradores.
* Un número impar `N` de nodos administradores en el clúster tolera la pérdida de como máximo `(N-1)/2` administradores.
Docker recomienda un máximo de siete nodos administradores para un swarm.

    > [!IMPORTANT]
    >
    > Añadir más administradores NO significa una mayor escalabilidad o un mayor rendimiento. En general, ocurre lo contrario.

## Nodos trabajadores

Los nodos trabajadores también son instancias de Docker Engine cuyo único propósito es ejecutar contenedores. Nodos trabajadores no participan en el estado distribuido de Raft, no toman decisiones de programación ni sirven la API HTTP del modo Swarm.

Puedes crear un swarm de un solo nodo administrador, pero no puedes tener un nodo trabajador sin al menos un nodo administrador. De forma predeterminada, todos los administradores también son trabajadores. En un clúster de un solo nodo administrador, puedes ejecutar comandos como `docker service create` y el programador colocará todas las tareas en el motor local.

Para evitar que el programador coloque tareas en un nodo administrador en un swarm de varios nodos, establece la disponibilidad del nodo administrador en `Drain` (Drenar). El programador detiene de forma gradual las tareas en los nodos en modo `Drain` y las programa en un nodo `Active`. El programador no asigna nuevas tareas a los nodos con disponibilidad `Drain`.

Consulta la referencia de la línea de comandos [`docker node update`](/reference/cli/docker/node/update/) para ver cómo cambiar la disponibilidad de los nodos.

## Cambiar roles

Puedes promover un nodo trabajador para que sea administrador ejecutando `docker node promote`. Por ejemplo, es posible que desees promover un nodo trabajador cuando pongas fuera de línea un nodo administrador para mantenimiento. Consulta [node promote](/reference/cli/docker/node/promote/).

También puedes degradar un nodo administrador a nodo trabajador. Consulta [node demote](/reference/cli/docker/node/demote/).


## Aprender más

* Lee sobre cómo funcionan los [servicios](/engine/swarm/how-swarm-mode-works/nodes/services/) en el modo Swarm.
* Aprende cómo funciona la [PKI](/engine/swarm/how-swarm-mode-works/nodes/pki/) en el modo Swarm.

