Gestión de actualizaciones y fallos en Docker Swarm
Clase 13 de 24 • Curso de Swarm
Contenido del curso
Primeros pasos
- 6

Instalación de Docker en Mac, Ubuntu y Windows
10:13 min - 7

Cómo iniciar Docker Swarm en tu máquina
08:35 min - 8

Creando servicios en Docker Swarm
05:36 min - 9

Cómo funciona docker service ps internamente
11:09 min - 10

Qué es Play with Docker para practicar
06:27 min - 11

Creando un Docker Swarm multinodo real
06:15 min
Administrando Servicios
Swarm avanzado
- 15

Cómo Docker Swarm enruta tráfico sin perder peticiones
06:56 min - 16

Docker Swarm constraints: dónde correr cada tarea
09:04 min - 17

Cómo drenar nodos en Docker Swarm sin downtime
07:56 min - 18

Redes Overlay en Docker Swarm: Comunicación entre Servicios
13:39 min - 19

Docker Stack: automatiza despliegues multinodo
10:49 min - 20

Implementación de Reverse Proxy con Traefik en Docker Swarm
16:49 min
Swarm productivo
Conclusiones
Controla despliegues en Docker Swarm con confianza: aprende a escalar réplicas, acelerar updates masivos con parallelism y order, y activar rollback automático ante fallos. Mantén el uptime alto incluso en escenarios de alta demanda y CI/CD.
¿Cómo escalar un servicio y simular alta demanda en Docker Swarm?
Al trabajar con servicios críticos, necesitas garantizar que la aplicación no caiga durante cambios frecuentes. Con un servicio como Pinger, puedes simular carga y validar comportamiento en producción sin escribir código nuevo.
- Escalar réplicas para alta demanda.
- Actualizar argumentos para simular una nueva versión.
- Observar tareas para verificar rotaciones.
¿Qué comando usar para cambiar réplicas?
En lugar de usar scale, puedes actualizar el servicio directamente con update y ajustar réplicas:
docker service update --replicas 20 pinger
- Útil cuando automatizas despliegues y no necesitas ver el output en vivo. Con el modo desacoplado (-d en
docker runodocker compose up -d), el control vuelve de inmediato al proceso que orquesta.
¿Cómo validar el estado de las tareas?
Consulta las tareas del servicio y verifica la rotación:
docker service ps pinger
- Úsalo tras updates para confirmar que cada tarea alcanzó el estado deseado.
¿Qué es update config y cómo acelerar un despliegue?
La especificación del servicio define cómo se actualiza. Con docker service inspect verás update_config, que controla la estrategia de rotación de tareas.
- parallelism: cuántas tareas se actualizan al mismo tiempo.
- order: define si usar stop-first o start-first.
- stop-first: detiene la tarea vieja antes de crear la nueva.
- start-first: crea la nueva y luego elimina la vieja. Permite overprovisioning temporal para evitar pérdida de capacidad.
Acelera el despliegue incrementando el parallelism y usando start-first en escenarios productivos:
docker service update \
--update-parallelism 4 \
--update-order start-first \
pinger
Simula una nueva versión cambiando los argumentos del contenedor:
docker service update --args "ping facebook.com" pinger
- Con parallelism 4 verás rotaciones por lotes, mucho más rápidas que de a una.
- Con start-first mantienes capacidad mientras validas que las nuevas tareas levantan correctamente.
¿Cómo proteger producción con rollback automático ante fallos?
En updates reales, algunos cambios pueden fallar. Swarm te permite definir qué hacer si una tarea nueva no arranca.
- failure-action: decide el comportamiento ante fallos:
pause,continueorollback. - monitor: ventana de tiempo para considerar que una tarea arrancó bien. Está expresada en nanosegundos; ajusta el valor si tu servidor tarda varios segundos en iniciar.
- max-failure-ratio: porcentaje de fallos permitido antes de activar la acción definida.
- rollback_config: misma lógica que
update_config, pero aplicada al proceso de rollback.
¿Cómo activar rollback automático y definir el umbral de fallo?
Configura el rollback cuando falle al menos el 50 % de las tareas durante el update:
docker service update \
--update-failure-action rollback \
--update-max-failure-ratio 0.5 \
pinger
- Si más del 50 % de las tareas nuevas no llega a “ready”, Swarm revierte automáticamente.
- Ajusta
--update-monitor <duración>si tu app necesita más tiempo de arranque.
¿Cómo acelerar el retorno al estado estable?
Si estás en emergencia y necesitas volver “todo de golpe”, ajusta el rollback para hacerlo sin lotes:
docker service update --rollback-parallelism 0 pinger
- Paralelismo 0 en rollback indica revertir sin particionar. Útil cuando la app ya está caída y priorizas restaurar capacidad.
- Con start-first, el rollback puede ser inmediato: si las nuevas tareas fallan en arrancar, basta con borrar esas tareas nuevas; no hace falta recrear las viejas.
Para provocar y observar la reversión automática, lanza un update con argumentos que sabes que fallarán y verifica cómo Swarm revierte al estado anterior en cuanto el umbral supera el max-failure-ratio.
- Habilidades y conceptos aplicados: configuración de
update_configyrollback_config. Gestión de parallelism, order (start-first, stop-first). Control de failure-action, monitor y max-failure-ratio. Prácticas orientadas a CI/CD y alta disponibilidad.
¿Tienes una estrategia favorita para combinar start-first con max-failure-ratio sin sacrificar capacidad? Comparte tu enfoque y cuéntanos qué métricas observas al desplegar en producción.