0Pricing
Ansible Academy · Lezione

Deploy progressivo dietro il load balancer

Rilasci senza downtime in modo seriale

Deploy progressivo dietro il load balancer è una lezione Ansible Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ansible Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ansible Academy include 4 lezioni in totale.

Zero downtime è l'obiettivo

Aggiorni tutti i nodi web senza perdere una sola richiesta. Il segreto è un rolling deploy: modificare pochi host alla volta. 🔄

serial controlla il batch

Aggiunga serial al play affinché Ansible elabori gli host in piccoli gruppi invece che tutti insieme.

- hosts: web
  serial: 1
  tasks:
    - import_role:
        name: webapp

Funzionano anche le percentuali

serial accetta una percentuale o un elenco di dimensioni, così può aumentare gradualmente: prima un canary, poi batch più grandi.

serial:
  - 1
  - 25%
  - 50%

Mettere in drain prima di intervenire

Prima di aggiornare un nodo, lo rimuova dalla rotazione. Usi delegate_to per indicare al load balancer di interrompere l'invio del traffico verso di esso.

- name: Drain node
  community.general.haproxy:
    state: disabled
    host: "{{ inventory_hostname }}"
  delegate_to: lb1

Perché delegare al LB con delegate_to

L'host web non può disabilitarsi da solo nel load balancer: deve farlo il load balancer. delegate_to esegue quel task su lb1 per ogni host web.

Distribuire la nuova versione

Con il nodo in drain, distribuisca il codice, generi la configurazione e lasci che un handler ricarichi il servizio dell'applicazione solo per quell'host.

- name: Pull release
  ansible.builtin.git:
    repo: "{{ app_repo }}"
    version: "{{ app_version }}"
    dest: /srv/app
  notify: Reload app

Controllare lo stato prima di riabilitare

Verifichi che il nodo sia in buona salute con uri prima di rimandargli gli utenti. Non reinserisca mai un host guasto nel pool.

- name: Wait for health
  ansible.builtin.uri:
    url: http://localhost:8080/health
    status_code: 200
  retries: 5
  delay: 3

Riabilitare nel load balancer

Quando è in buona salute, reinserisca il nodo nella rotazione, ancora tramite delegate_to verso il load balancer. Il traffico viene indirizzato alla nuova versione.

- name: Enable node
  community.general.haproxy:
    state: enabled
    host: "{{ inventory_hostname }}"
  delegate_to: lb1

max_fail_percentage vi protegge

Imposti max_fail_percentage affinché il rollout si arresti se falliscono troppi host, impedendo a una release difettosa di diffondersi ulteriormente.

- hosts: web
  serial: 1
  max_fail_percentage: 20

run_once per i passaggi condivisi

Alcuni passaggi, come una migrazione del DB da eseguire una sola volta, devono essere eseguiti una sola volta. Usi run_once affinché sia un solo host a eseguirli.

- name: Migrate db
  ansible.builtin.command: /srv/app/migrate
  run_once: true

L'intero ciclo

Per ogni host: drain, deploy, controllo dello stato, riabilitazione. serial ripete il ciclo in gruppi sicuri finché l'intera flotta non è aggiornata. ✅

Verifica rapida

Una parola chiave fa funzionare il passaggio sul LB.

Riepilogo

Avete creato un rolling deploy: batch gestiti da serial, drain e riabilitazione tramite delegate_to, controlli dello stato e una protezione dagli errori. Zero downtime. 🟢

Domande Frequenti

La lezione «Deploy progressivo dietro il load balancer» è gratuita?

Sì — il testo completo di «Deploy progressivo dietro il load balancer» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ansible Academy, passa a CoddyKit PRO. Il corso Ansible Academy include 4 lezioni in totale.

Cosa imparerò in «Deploy progressivo dietro il load balancer»?

Rilasci senza downtime in modo seriale Eserciti Ansible Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Ansible Academy?

Non è richiesta alcuna esperienza precedente. Ansible Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Deploy progressivo dietro il load balancer»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Ansible Academy?

Sì. Ogni lezione Ansible Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Progettare il progetto: ruoli e inventory
  2. Effettuare il provisioning, rafforzare e inizializzare gli host
  3. Deploy progressivo dietro il load balancer
  4. Smoke test, rollback e notifiche
← Torna a Ansible Academy