HAProxy: cos’è e come bilanciare le richieste http

HAProxy cos'è e come bilanciare le richieste httpTra le tante soluzioni in tema di Load Balancing, può essere interessante e performante ricorrere a prodotti Open Source tra cui: HAPROXY

Quando un solo server web non è sufficiente per erogare il servizio e la nostra insfrastruttura ha necessità di espandersi, possiamo potenziare il nostro servizio aggiungendo un ulteriore server web; a questo punto abbiamo bisogno di bilanciare il carico tra i nostri server, in aiuto ci viene un potente software per il bilanciamento: HAProxy.

HAProxy è un Load Balancing (bilanciatore di carico), ovvero è un software che permette di smistare le connessioni in ingresso verso più server. In queso modo possiamo migliorare il servizio aumentandone la disponibilità poichè il bilanciatore invierà le richieste ai server effettivamente attivi.

In questo articolo parleremo di come poter bilanciare le richieste http, tenendo presente che HAProxy può bilanciare anche connessioni di tipo TCP.

Possiamo installare HAProxy 1.6 (attualmente stabile) su Debian 8 con i seguenti comandi:

echo deb http://httpredir.debian.org/debian jessie-backports main | \
sed 's/\(.*\)-sloppy \(.*\)/&@\1 \2/' | tr @ '\n' | \
tee /etc/apt/sources.list.d/backports.list
apt-get update
apt-get install haproxy -t jessie-backports

A questo punto possiamo fare una copia di backup del file di configurazione (utile nel caso avessimo problemi)

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.originale

Passiamo quindi ad editare il file di configurazione

vi /etc/haproxy/haproxy.cfg

Passiamo quindi alla configurazione vera e propria, la configurazione di seguito proposta bilancia le connessioni in ingresso sul loadbalance verso due server web.

frontend frontend
bind *:80
mode http
option httpclose
option forwardfor
default_backend pool_backend

backend pool_backend
mode http
balance roundrobin
option forwardfor
cookie CONTEXTSESSION prefix nocache
option httpchk HEAD /ping.html HTTP/1.1\r\nHost:localhost
server SERVERNAME IP:80 cookie SERVERNAME check
server SERVERNAME IP:80 cookie SERVERNAME check

listen stats :9000
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /ha_stats
stats auth USERNAME:PASSWORD

In questo esempio per verificare la disponibilità dei server di backend abbiamo creato un’apposita pagina chiamata ping.html, è necessario che la pagina esista e risponda correttamente altrimenti il server di backend non sarà ritenuto funzionante del proxy e quindi escluso.

Nella configurazione è necessario modificare i valore delle seguenti variabili in questo modo:
SERVERNAME = hostname del server
IP = ip del server
USERNAME = username per le statistiche
PASSWORD = password per le statistiche

Possiamo quindi avviar il servizio

service haproxy start

La configurazione che abbiamo eseguito prevede un servizio di statistiche e monitoraggio sulla porta 9000 per raggiungerlo basta digitare nel browser: http://IP:9000

Tags:
No Comments

Post a Comment

97 − 94 =

Accedi

Password dimenticata?