Despliegue progresivo tras el balanceador
Publique sin tiempo de inactividad y de forma secuencial
Despliegue progresivo tras el balanceador es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.
La promesa es cero tiempo de inactividad
Actualice todos los nodos web sin perder una sola solicitud. El truco es un despliegue gradual: cambiar unos pocos hosts cada vez. 🔄
serial controla el lote
Añada serial a su play para que Ansible procese los hosts en pequeñas tandas en lugar de hacerlo todo a la vez.
- hosts: web
serial: 1
tasks:
- import_role:
name: webappLos porcentajes también funcionan
serial acepta un porcentaje o una lista de tamaños, para que pueda aumentar gradualmente el despliegue: primero un canario y después lotes más grandes.
serial:
- 1
- 25%
- 50%Drenar antes de tocar
Antes de actualizar un nodo, retírelo de la rotación. Use delegate_to para indicar al balanceador de carga que deje de enviarle tráfico.
- name: Drain node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
delegate_to: lb1Por qué usar delegate_to con el LB
El host web no puede deshabilitarse a sí mismo en el balanceador; debe hacerlo el balanceador de carga. delegate_to ejecuta esa tarea en lb1 para cada host web.
Desplegar la nueva versión
Con el nodo drenado, despliegue el código, genere la configuración y deje que un handler recargue el servicio de la aplicación únicamente para ese host.
- name: Pull release
ansible.builtin.git:
repo: "{{ app_repo }}"
version: "{{ app_version }}"
dest: /srv/app
notify: Reload appComprobar la salud antes de volver a habilitarlo
Confirme que el nodo está saludable con uri antes de devolverle los usuarios. Nunca vuelva a añadir un host averiado al grupo.
- name: Wait for health
ansible.builtin.uri:
url: http://localhost:8080/health
status_code: 200
retries: 5
delay: 3Volver a habilitarlo en el balanceador
Cuando esté saludable, vuelva a poner el nodo en rotación, de nuevo mediante delegate_to con el balanceador de carga. El tráfico se dirigirá a la nueva versión.
- name: Enable node
community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
delegate_to: lb1max_fail_percentage le protege
Configure max_fail_percentage para que el despliegue se detenga si fallan demasiados hosts y evitar que una versión defectuosa siga propagándose.
- hosts: web
serial: 1
max_fail_percentage: 20run_once para pasos compartidos
Algunos pasos, como una migración única de la base de datos, deben ejecutarse una sola vez. Use run_once para que solo un host los ejecute.
- name: Migrate db
ansible.builtin.command: /srv/app/migrate
run_once: trueEl ciclo completo
Por host: drenar, desplegar, comprobar la salud y volver a habilitar. serial repite ese ciclo en tandas seguras hasta actualizar toda la flota. ✅
Comprobación rápida
Una palabra clave hace que funcione el paso del LB.
Resumen
Creó un despliegue gradual: lotes con serial, drenaje y reactivación mediante delegate_to, comprobaciones de salud y una protección contra fallos. Cero tiempo de inactividad. 🟢
Preguntas frecuentes
¿La lección «Despliegue progresivo tras el balanceador» es gratis?
Sí — el texto completo de «Despliegue progresivo tras el balanceador» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.
¿Qué aprenderé en «Despliegue progresivo tras el balanceador»?
Publique sin tiempo de inactividad y de forma secuencial Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Despliegue progresivo tras el balanceador»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Diseñar el proyecto: roles e inventario
- Aprovisionar, reforzar e iniciar hosts
- Despliegue progresivo tras el balanceador
- Pruebas de humo, reversión y notificaciones