Haproxy è popolare per il bilanciamento del carico a causa della sua efficienza, affidabilità e memoria ridotta e ingombro della CPU. Il bilanciamento del carico è una soluzione comune per distribuire le applicazioni Web orizzontalmente su più host fornendo agli utenti un unico punto di accesso al servizio.
È disponibile per l'installazione sulle principali distribuzioni Linux. In questa guida impareremo come installare e configurare il bilanciatore di carico HAProxy su Debian 11.
Controlla anche:
- Come installare e configurare il sistema di bilanciamento del carico HAProxy su Rocky Linux/Alma Linux 8
- Come installare e configurare il sistema di bilanciamento del carico HAProxy su Ubuntu 20.04
Algoritmi di bilanciamento del carico HAProxy
Gli algoritmi di bilanciamento vengono utilizzati per decidere a quale server sul backend viene trasferita ogni connessione. Alcune delle opzioni utili includono quanto segue:
- Roundrobin: ogni server viene utilizzato a turno in base al proprio peso. Questo è l'algoritmo più fluido ed equo quando il tempo di elaborazione dei server rimane equamente distribuito. Questo algoritmo è dinamico e consente di regolare i pesi dei server al volo.
- Leastconn: viene scelto il server con il minor numero di connessioni. Il round robin viene eseguito tra server con lo stesso carico. L'utilizzo di questo algoritmo è consigliato con sessioni lunghe, come LDAP, SQL, TSE e così via, ma non è molto adatto per sessioni brevi come HTTP.
- Primo: il primo server con slot di connessione disponibili riceve la connessione. I server vengono scelti dall'identificatore numerico più basso al più alto, che per impostazione predefinita è la posizione del server nella farm. Una volta che un server raggiunge il valore maxconn, viene utilizzato il server successivo.
- Fonte: l'indirizzo IP di origine viene sottoposto a hash e diviso per il peso totale dei server in esecuzione per designare quale server riceverà la richiesta. In questo modo lo stesso indirizzo IP del client raggiungerà sempre lo stesso server mentre i server rimarranno gli stessi.
Indice dei contenuti
- Assicurarsi che il server sia aggiornato
- Installazione di HAProxy
- Configurazione di HAProxy come bilanciatore di carico
- Test della configurazione
- Password di protezione della pagina HAProxy Statistics
1. Garantire che il server sia aggiornato
Prima di procedere, assicuriamoci che il server sia aggiornato. Usa questo comando per ottenere questo:
sudo apt update
sudo apt upgrade -y
2. Installazione di Haproxy
Il pacchetto che fornisce haproxy è disponibile nel Debian Repos predefinito. Installa usando questo comando:
sudo apt install -y haproxy
Conferma l'installazione con questo comando:
$ apt-cache policy haproxy
haproxy:
Installed: 2.2.9-2+deb11u2
Candidate: 2.2.9-2+deb11u2
Version table:
2.4.9-1~bpo11+1 100
100 http://cdn-aws.deb.debian.org/debian bullseye-backports/main amd64 Packages
*** 2.2.9-2+deb11u2 500
500 http://cdn-aws.deb.debian.org/debian bullseye/main amd64 Packages
500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages
100 /var/lib/dpkg/status
3. Configurazione di HAProxy come bilanciatore di carico
Per configurare HAProxy come sistema di bilanciamento del carico, dobbiamo dirgli che tipo di connessioni dovrebbe essere in ascolto e dove le connessioni dovrebbero essere inoltrate. Questo viene fatto creando un file di configurazione /etc/haproxy/haproxy.cfg
con le impostazioni di definizione.
Bilanciamento del carico sul livello 4
Al momento dell'installazione, HAProxy avrà già un modello per la configurazione del servizio di bilanciamento del carico. Apri il file di configurazione usando il tuo editor di testo, sto usando vim:
sudo vim /etc/haproxy/haproxy.cfg
Aggiungi questo contenuto per configurare l'interfaccia di ascolto e l'interfaccia di back-end in cui il traffico verrà bilanciato.
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server <server1 name> <private IP 1>:80 check
server <server2 name> <private IP 2>:80 check
Sostituisci
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server web_server_1 10.70.5.41:80 check
server web_server_2 10.70.5.187:80 check
Quanto sopra definisce un sistema di bilanciamento del carico di livello 4 con un nome front-end http_front che ascolta il numero di porta 80, che poi indirizza il traffico al back-end predefinito denominato http_back. L'URI delle statistiche aggiuntive /haproxy?stats
abilita la pagina delle statistiche a quell'indirizzo specificato.
Bilanciamento del carico sul livello 7
Possiamo anche configurare il sistema di bilanciamento del carico per funzionare sul livello 7. Ciò è utile quando parti della tua applicazione web si trovano su host diversi. Ciò può essere ottenuto condizionando il trasferimento della connessione, ad esempio tramite l'URL.
Apri il file di configurazione usando il tuo editor di testo, sto usando vim:
sudo vim /etc/haproxy/haproxy.cfg
Quindi aggiungi questi config
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
backend blog_back
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
Il front-end dichiara una regola ACL denominata url_blog che si applica a tutte le connessioni con percorsi che iniziano con /blog. Use_backend definisce che le connessioni che soddisfano la condizione url_blog devono essere servite dal back-end denominato blog_back, mentre tutte le altre richieste vengono gestite dal back-end predefinito.
Sul lato back-end, la configurazione imposta due gruppi di server, http_back come prima e il nuovo chiamato blog_back che server si collega in modo specifico a example.com/blog.
Dopo aver effettuato le configurazioni, salvare il file e riavviare HAProxy con il comando successivo.
sudo systemctl restart haproxy
Se ricevi errori o avvisi all'avvio, controlla la configurazione per eventuali errori di digitazione e poi prova a riavviare di nuovo.
Configurazione SSL
Se hai un file di chiave privata e un file di certificato che desideri utilizzare con HAProxy, combinali con questo comando.
cat citizix.fullchain.pem citizix.key > citizix.pem
Quindi configura HAProxy per utilizzare il certificato SSL sul frontend.
frontend http_front
bind *:80
bind *:443 ssl crt /etc/letsencrypt/live/apps.citizix.com/citizix.pem
4. Testare la configurazione
Con HAProxy configurato e in esecuzione, apri l'IP pubblico del tuo server di bilanciamento del carico in un browser web e verifica di essere connesso correttamente al tuo back-end. Il parametro stats uri nella configurazione abilita la pagina delle statistiche all'indirizzo definito.
http://<Haproxy public IP>/haproxy?stats
Quando carichi la pagina delle statistiche e tutti i tuoi server sono elencati in verde, la configurazione è riuscita!
La pagina delle statistiche contiene alcune informazioni utili per tenere traccia dei tuoi host web, inclusi i tempi di attività e di inattività e il conteggio delle sessioni. Se un server è elencato in rosso, verifica che il server sia acceso e che sia possibile eseguire il ping dal sistema di bilanciamento del carico.
Nel caso in cui il tuo sistema di bilanciamento del carico non risponda, controlla che le connessioni HTTP non vengano bloccate da un firewall. Inoltre, conferma che HAProxy è in esecuzione con il comando seguente.
sudo systemctl status haproxy
5. Protezione con password della pagina delle statistiche di HaProxy
Avere la pagina delle statistiche semplicemente elencata nel front-end, tuttavia, è pubblicamente aperta a chiunque, il che potrebbe non essere una buona idea. Puoi invece impostarlo sul proprio numero di porta aggiungendo l'esempio seguente alla fine del tuo haproxy.cfg
file. Sostituisci il nome utente e la password con qualcosa di sicuro.
listen stats bind *:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth username:password
Dopo aver aggiunto il nuovo gruppo di ascolto, rimuovi il vecchio riferimento all'uri delle statistiche dal gruppo frontend. Al termine, salva il file e riavvia nuovamente HAProxy.
sudo systemctl restart haproxy
Quindi apri nuovamente il sistema di bilanciamento del carico con il nuovo numero di porta e accedi con il nome utente e la password impostati nel file di configurazione.
http://<load balancer public IP>:8181
Verifica che i tuoi server stiano ancora segnalando tutto verde e quindi apri solo l'IP del sistema di bilanciamento del carico senza alcun numero di porta sul tuo browser web.
http://<load balancer public IP>/
Se i tuoi server di backend hanno pagine di destinazione almeno leggermente diverse, noterai che ogni volta che ricarichi la pagina ricevi la risposta da un host diverso.
Conclusioni
Questo è tutto! In questa guida abbiamo appreso come installare e configurare HAProxy per bilanciare il traffico. Ciò aumenterà le prestazioni e la disponibilità delle tue applicazioni web.