In pratica lo stesso software (Nginx, HAProxy, Traefik) può svolgere entrambi i compiti. Per questo i due termini vengono spesso confusi. Ma concettualmente risolvono problemi diversi: il reverse proxy è un intermediario, il load balancer è un distributore.
Differenza concettuale
Ogni load balancer può essere una forma di reverse proxy, ma non ogni reverse proxy è un load balancer. Un Nginx davanti a un singolo server non bilancia il carico, ma svolge la funzione di reverse proxy.
Distinzione tra livello 4 e livello 7
Il bilanciamento di livello 7 legge il contenuto: può dire "manda le richieste /api a questo server e le richieste /statik a quest'altro". Il livello 4 invece è più veloce ma ignora il contenuto.
Algoritmi di distribuzione del carico
L'IP hash si usa nelle applicazioni che richiedono sticky session: lo stesso utente va sempre sullo stesso server, così i dati di sessione non devono essere condivisi.
Architettura tipica
Nei sistemi reali i due lavorano insieme. I livelli si dispongono così:
| Livello | Componente | Funzione |
|---|---|---|
| 1 | DNS / Anycast | Indirizza l'utente alla regione più vicina |
| 2 | CDN | Serve i contenuti statici dall'edge |
| 3 | Load balancer (L4) | Distribuisce il traffico all'interno della regione |
| 4 | Reverse proxy (L7) | Termina il TLS, applica le regole di instradamento |
| 5 | Server applicativi | Svolgono il lavoro vero e proprio |
In questa architettura non c'è alcun forward proxy — perché si trova all'altro capo della catena, dell'utente dal lato. La distinzione nel nostro articolo su forward e reverse proxy nel dettaglio.
Health check
È il punto in cui il load balancer si distingue più nettamente dal reverse proxy: monitora costantemente la salute dei server dietro di sé ed estrae dal pool quelli guasti.
Questa logica è identica a quella della gestione di un pool di proxy. Nel nostro articolo sui pool abbiamo descritto l'equivalente lato client dello stesso pattern.
Perché è importante nella raccolta dati?
Il load balancer del sito target può distribuire le tue richieste su server diversi. Questo può portare a risultati incoerenti:
- Versioni diverse: durante un rollout graduale alcuni server possono eseguire la nuova versione.
- Perdita di sessione: senza sticky session, i tuoi cookie possono non essere riconosciuti su un altro server.
- Tempo di risposta variabile: possono esserci differenze di prestazioni tra i server.
- Test A/B: richieste diverse possono vedere varianti diverse.
Per ridurre queste incoerenze aiuta usare sessioni sticky e inviare richieste consecutive dallo stesso IP.
Riepilogo
Il reverse proxy è un intermediario che riceve e inoltra le richieste; il load balancer è invece un componente che distribuisce quelle richieste su più server e ne monitora la salute. Lo stesso software può ricoprire entrambi i ruoli, ed è per questo che i termini si confondono. Il bilanciamento di livello 4 è veloce ma ignora il contenuto, quello di livello 7 è consapevole del contenuto ma più costoso. Durante la raccolta dati questi livelli del target possono essere la causa nascosta di risultati incoerenti e di sessioni interrotte.