Load Balancing con Haproxy

virtualhost_small Ormai si sa, il mondo dell'informatica gira intorno alla rete, e alle sue numerose componenti.

Prendiamo ad esempio il colosso Amazon, il loro portale web è visitato da milioni di persone al giorno, dove ognuna di esse acquista, vende o recensisce il suo prodotto appena acquistato. Per funzionare, ovviamente, il sito deve girare su un server web come ad esempio Apache, questo vuol dire che c'è un computer in cui è installato Apache per far girare il sito di Amazon. Se riflettete bene su ciò che ho appena scritto, noterete un piccolo particolare, com'è possibile che un computer riesca a gestire tutte quelle richieste senza andare in crash? Ovviamente ciò non è possibile! Bisogna implementare varie politiche e varie architetture sulla rete per far si che tutto funzioni alla perfezione. In una rete di questo tipo non c'è mai un solo computer ma sono migliaia, tutti messi in modo particolare, come un puzzle, per far si che tutto funzioni correttamente. L'utente, quando si collega al sito web, non sa con quale computer sta comunicando, può essere uno dei tanti, e magari dopo poco tempo, senza accorgersene lui comunicherà con un altro computer della rete. Questo è possibile con un load balancer.

 

Cos'è il load balancer

Come abbiamo detto poco fa', il load balancer è un componente molto importante nella struttura di una rete. Quando noi facciamo una richiesta per visualizzare una pagina web, ad esempio, agganciandoci a prima, la home page di Amazon, questa richiesta prima di arrivare al server web che ospita la pagina, passa attraverso un computer su cui è installato un load balancer. Esso è un programma che controlla il lavoro di ogni singolo server web, e filtra le richieste a quelli che al momento non sono molto affaticati. In questo modo si fa lavorare in modo omogeneo ognuno di essi.

Un altro punto forte di un load balancer è prevenire i down di un server web. Se ad esempio una macchina smette all'improvviso di funzionare, il servizio non terminerà, poiché le richieste saranno mandate ad altri web server nella rete con un carico equo.

Ovviamente in una rete è possibile trovare anche più load balancer, eventualmente gestiti da altre politiche che non andremo a vedere in questo post.

Esistono diversi software che sono in grado di fare questo lavoro, oggi noi vedremo il software open source Haproxy.

 

Installazione

L'installazione, come per la maggior parte dei programmi su linux è semplice, perché ovviamente il programma si trova nella maggior parte dei repository, quindi diamo il seguente comando se ci troviamo su Arch Linux:

 

pacman -S haproxy

 

Mentre se siamo su Ubuntu, Debian o derivare:

 

sudo apt-get install haproxy

 

Configurazione

La configurazione del programma è parecchio semplice, basta manipolare il suo file di configurazione:

 

sudo nano /etc/haproxy/haproxy.cfg

 

Dentro il file possiamo trovare diverse sezioni. Sono tutte molto intuitive, ad esempio nella sezione global possiamo trovare le impostazioni utilizzate dal programma sulla macchina che è in esecuzione, come ad esempio l'utente che utilizza tale programma, dove verranno salvati i file di log di Haproxy, il numero massimo di connessioni che dovrà supportare.

Nella sezione frontend main troviamo altri parametri molto interessanti, ad esempio il primo, bind, indica dove sarà in ascolto il programma, poi possiamo trovare mode http che filtra tutte le richieste che non sono http. Più sotto possiamo trovare anche il parametro balance roundrobin, che indica la politica con cui andrà a far gestire le richieste ai web server.

Molto più interessanti sono le linee che iniziano con server, che indicano i web server che il load balancer dovrà controllare.

 

Conclusioni

Insomma, se dovete gestire una rete con un web server, ed il servizio è essenziale e non può mancare, allora fate affidamento a questa tecnologia, non ve ne pentirete!

 

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento