GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare e configurare il bilanciamento del carico HAProxy su Debian 11

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

  1. Assicurarsi che il server sia aggiornato
  2. Installazione di HAProxy
  3. Configurazione di HAProxy come bilanciatore di carico
  4. Test della configurazione
  5. 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  con quello che vuoi chiamare i tuoi server nella pagina delle statistiche e  con gli IP privati ​​per i server a cui desideri indirizzare il traffico web. Questa è la configurazione che sto usando nel mio server

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.


Debian
  1. Come installare e configurare il server VNC su Debian 10

  2. Come configurare il servizio di bilanciamento del carico HAProxy

  3. Come installare e configurare il sistema di bilanciamento del carico HAProxy su Rocky Linux/Alma Linux 8

  4. Come installare e configurare Squid Proxy su Debian 11

  5. Come installare e configurare il bilanciamento del carico HAProxy su Ubuntu 20.04

Come installare e configurare Monit su Debian 9

Come installare e configurare il server Web OpenLiteSpeed ​​su Debian 10

Come installare e configurare il server NFS su Debian 11

Come installare e configurare il server VNC su Debian 9 Stretch

Come installare e configurare Apache Web Server su Debian 11

Come installare e configurare Git in Debian 11