HAProxy è un Load Balancing (bilanciatore di carico), ovvero è un software Open Source che permette di smistare le connessioni in ingresso verso più server.
In queso modo è possibile migliorare il servizio aumentandone la disponibilità poichè il bilanciatore invierà le richieste ai server effettivamente attivi.
E’ particolarmente adatta per siti web ad alto traffico e alimenta molti dei siti web più visitati al mondo. Nel corso degli anni è diventato di fatto lo standard opensource del load balancing, è ora distribuito con la maggior parte delle principali distribuzioni Linux, ed è spesso distribuito di default nelle piattaforme cloud.
HAProxy può anche essere definito un High Availability Proxy. Si tratta di un noto software open source TCP/HTTP proxying e Load Balancer che può operare su FreeBSD, Solaris e Linux. Il compito più importante di HAProxy è quello di migliorare l’affidabilità e le prestazioni di un ambiente multiserver.
In questo articolo vedremo come installare HAProxy su un Server Ubuntu 22.04
INSTALLAZIONE DI HAPROXY
Il pacchetto di installazione di HAproxy viene fornito con l’installazione di Ubuntu, ma potrebbe essere possibile che sia della versione precedente, per confermarlo controllare prima la versione di HAproxy con il comando:
0 |
apt show haproxy
|
Al momento della stesura dell’articolo la versione disponibile è la versione 2.4.22 di HAproxy sul repository di Ubuntu come mostrato nell’output riportato di seguito:
0
1
2
3
4
5
6
|
Package: haproxy
Version: 2.4.22-0ubuntu0.22.04.2
Priority: optional
Section: net
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian HAProxy Maintainers <team+haproxy@tracker.debian.org>
|
Per procedere all’installazione di HAProxy presente nel repository di Ubuntu eseguire il comando:
0 |
sudo apt install haproxy -y
|
Al termine dell’installazione verificare la versione con il comando:
0 |
haproxy -v
|
Se è tutto Ok dovremmo vedere il seguente output:
0
1
2
3
|
HAProxy version 2.4.22-0ubuntu0.22.04.2 2023/08/14 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2026.
Known bugs: http://www.haproxy.org/bugs/bugs-2.4.22.html
Running on: Linux 5.15.0-86-generic #96-Ubuntu SMP Wed Sep 20 08:23:49 UTC 2023 x86_64
|
INSTALLAZIONE DELL’ULTIMA VERSIONE DISPONIBILE DI HAPROXY
Per verificare l’ultima versione disponibile di HAProxy collegarsi al sito web:
Come indicato nell’immagine sovrastante verificare l’ultima versione disponibile stabile.
NOTA BENE: durante la stesura del seguente articolo l’ultima versione stabile disponibile è la 2.8 come mostra l’immagine sovrastante.
Per installare la versione di HAProxy 2.8 aggiungere il PPA Repository con il comando:
0 |
sudo add-apt-repository ppa:vbernat/haproxy-2.8 -y
|
ATTENZIONE: inserire al posto della versione 2.8 l’ultima versione disponibile sul sito di HAProxy
Quindi aggiornare il repository con il comando:
0 |
sudo apt update
|
Quindi installare la versione 2.8 dal Repository PPA con il comando:
0 |
sudo apt install haproxy=2.8.\* -y
|
ATTENZIONE: inserire al posto della versione 2.8 l’ultima versione disponibile sul sito di HAProxy
Al termine dell’installazione verificare la versione con il comando:
0 |
haproxy -v
|
Se è tutto Ok dovremmo vedere il seguente output dove la versione installata è la 2.8.3:
0
1
2
3
|
HAProxy version 2.8.3-1ppa1~jammy 2023/09/08 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2028.
Known bugs: http://www.haproxy.org/bugs/bugs-2.8.3.html
Running on: Linux 5.15.0-86-generic #96-Ubuntu SMP Wed Sep 20 08:23:49 UTC 2023 x86_64
|
Per verificare lo stato del servizio di HAProxy eseguire il comando:
0 |
sudo systemctl status haproxy
|
Se è tutto OK dovremmo vedere una schermata come mostrato nell’immagine sovrastante.
Ultimo steps è quello di abilitare l’avvio automatico del servizio al riavvio del sistema con il comando:
0 |
sudo systemctl enable haproxy
|
Dovremmo visualizzare il seguente output:
0
1
|
Synchronizing state of haproxy.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable haproxy
|
DISINSTALLAZIONE DI HAPROXY
Per rimuovere HAproxy utilizzare il seguente comando:
0 |
sudo apt purge haproxy -y
|
CONFIGURAZIONE DI HAPROXY
Prima di apportare qualsiasi modifica al file di configurazione eseguire un backup con il comando:
0 |
sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
|
Per la configurazione di HAProxy, aprire il file di configurazione utilizzando l’editor nano con il comando:
0 |
sudo nano /etc/haproxy/haproxy.cfg
|
Il file di configurazione Haproxy è composto dalle seguenti sezioni:
GLOBAL: questa è la prima sezione che si vede in alto. Contiene impostazioni a livello di sistema che gestiscono l’ottimizzazione delle prestazioni e la sicurezza.
DEFAULTS: questa sezione contiene impostazioni che dovrebbero funzionare bene senza ulteriori personalizzazioni. Queste impostazioni includono configurazioni di timeout e segnalazione errori.
FRONTEND e BACKEND: queste sono le impostazioni che definiscono le impostazioni di frontend e backend. Per il frontend, definiremo il server HAProxy come il front-end che distribuirà le richieste ai server backend che sono i server web. Impostare inoltre HAProxy in modo che utilizzi i criteri di bilanciamento del carico Round Robbin per la distribuzione del traffico.
LISTEN: questa è un’impostazione facoltativa che consente di abilitare il monitoraggio delle statistiche HAProxy.
Definire quindi le impostazioni di frontend e di backend aggiungendo al file di configurazione le seguenti righe:
0
1
2
3
4
5
6
7
8
9
10
11
12
|
frontend haproxynode
bind *:80
mode http
default_backend webservers
backend webservers
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server www1 192.168.100.249:80 check
server www2 192.168.100.247:80 check
|
NOTA BENE: in questo esempio ho fatto una configurazione di Load Balancing
Se abbiamo fatto tutto correttamante dovremmo vedere una schermata come quella sovrastante
NOTA BENE: In questo caso ho configurato sia il server HAProxy che i nodi dei server Web in ascolto sulla porta 80. Sostituire l’indirizzo IP di HAProxy e dei server Web con la configurazione personale.
Salvare e chiudere il file di configurazione.
Riavviare il servizio di HAProxy per applicare le modifiche con il comando:
0 |
sudo systemctl restart haproxy
|
CONFIGURAZIONE DELLA GUI WEB DELLE STATISTICHE DI HAPROXY
Per consentire la visualizzazione delle statistiche HAProxy da un browser, aggiungere la seguente sezione nel file di configurazione di HAProxy.
Aprire il file di configurazione con il comando:
0 |
sudo nano /etc/haproxy/haproxy.cfg
|
Quindi aggiungere al fondo della configurazione le seguenti righe:
0
1
2
3
4
5
6
|
listen stats
bind *:8080
stats enable
stats uri /
stats refresh 5s
stats realm Haproxy\ Statistics
stats auth USER:PASSWORD
|
ATTENZIONE: inserire al posto di USER il nome dell’utente da utilizzarer per l’autenticazione via web e al posto di PASSWORD la password dell’utente.
Salvare e chiudere il file di configurazione.
Riavviare il servizio di HAProxy per applicare le modifiche con il comando:
0 |
sudo systemctl restart haproxy
|
Richiamare da un qualsiasi browser il seguente link:
http://IP_ADDRESS_SERVER:8080
Inserire le credenziali definite nel file di configurazione quindi cliccare su Sing In.
Se è andato tutto a buon fine visualizzeremo la pagina con le statistiche sulle prestazioni del server HAProxy come mostrato nell’immagine sovrastante.
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 Comments