0Pricing
DevOps Bootcamp · Lección

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: webapp

Los 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: lb1

Por 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 app

Comprobar 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: 3

Volver 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: lb1

max_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: 20

run_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: true

El 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

  1. Diseñar el proyecto: roles e inventario
  2. Aprovisionar, reforzar e iniciar hosts
  3. Despliegue progresivo tras el balanceador
  4. Pruebas de humo, reversión y notificaciones
← Volver a DevOps Bootcamp