Bilanciare il carico di lavoro dei Web Servers

di Sonia Ferretti

scritto il

Per evitare che i nostri server siano saturati da richieste a cui non riescono a far fronte, si può implementare il load-balancing, spesso considerato una tecnica per ottenere “High Availability”.

Il modo più semplice di effettuare il bilanciamento del carico è detto Round Robin: ogni richiesta viene effettuata su un server differente, a rotazione: In un cluster di 100 macchine, 100 richieste verranno distribuite su tutti i 100 server, a rotazione dal primo all’ultimo.
Si tratta di tecnica molto semplice da usare “per ottenere alta disponibilità “, peraltro già  inclusa ad esempio in Apache. Il limite è che se un server è sovraccarico non avrà  mai il tempo rientrare in una situazione di normalità .

La tecnica Random (casuale) ci regala, invece, un modo elegante per distribuire le richieste: non si basa su nessuna metrica, ma per i puristi resta comunque fuori controllo dando la possibilità  (anche se casuale) di continuare a girare richieste verso server già  sovraccarichi di loro.

Una variante di questa tecnica è la Weighted Random, dove viene considerata la “potenza del server”: i server più potenti avranno una possibilità  più alta di ricevere richieste.

La tecnica Predictive è una variante del Round Robin: vengono introdotte alcune regole al normale ciclo, effettuando delle scelte: ad esempio saltando i server già  saturi di richieste.

Load Balancing al lato pratico
Può essere implementato tramite l’utilizzo di “Switch web”: quelli di fascia alta riescono a reggere alti carichi di connessioni simultanee, e spesso hanno la possibilità  di essere configurati per “parlare” tra di loro e condividere informazioni sullo stato del pool di server. Coordinano il traffico basandosi su regole HTTP, usando quindi come parametri dei componenti specifici del protocollo HTTP.

Utilizzando invece i Server Virtual IP, vengono creati degli IP virtuali tramite cui il traffico viene direzionato. Non fanno nessun controllo sul contenuto del flusso di dati, e si limitano a ruotare le richieste in base al metodo prescelto.

Gestione dei certificati
Scegliere il metodo di load balancing, e lo strumento col quale applicarlo, necessitano quindi di studi specifici sul tipo di traffico, e sull’architettura dell’applicazione che si vuole bilanciare, soprattutto quando entrano in gioco variabili come SSL.

L’SSL infatti è basato sulla generazione di un certificato legato ad un IP mentre, utilizzando alcune tecniche, potremmo ritrovarci con diversi IP finti che rigirano il traffico.