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: webappFunzionano 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: lb1Perché 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 appControllare 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: 3Riabilitare 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: lb1max_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: 20run_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: trueL'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
- Progettare il progetto: ruoli e inventory
- Effettuare il provisioning, rafforzare e inizializzare gli host
- Deploy progressivo dietro il load balancer
- Smoke test, rollback e notifiche