Introduzione
HAProxy è un software open source gratuito che fornisce un bilanciatore del carico e un server proxy ad alta disponibilità per applicazioni basate su TCP e HTTP. È particolarmente adatto per siti Web ad alto traffico e alimenta un buon numero di quelli più visitati al mondo. La configurazione di HAProxy su CentOS/RHEL (Red Hat Enterprise Linux) può migliorare la tua infrastruttura di rete migliorandone le prestazioni e l'affidabilità.
Questa guida ti guiderà attraverso i passaggi necessari per installare e configurare HAProxy su CentOS/RHEL 9/8.
Prerequisiti
- Un server CentOS/RHEL 9/8
- Un utente non root con privilegi sudo
Passaggio 1: aggiorna il tuo sistema
Prima di installare qualsiasi pacchetto, è buona norma aggiornare l'indice dei pacchetti del sistema. Ciò garantisce di disporre degli aggiornamenti e delle patch di sicurezza più recenti.
sudo dnf update
Passaggio 2: installare HAProxy
HAProxy è disponibile nei repository CentOS/RHEL predefiniti. Installalo utilizzando il seguente comando:
sudo dnf install haproxy
Passaggio 3: configurare HAProxy
Dopo l'installazione, il passaggio successivo consiste nel configurare HAProxy in base alle proprie esigenze. Il file di configurazione principale per HAProxy è /etc/haproxy/haproxy.cfg
. Dovrai modificare questo file con la tua configurazione. Utilizza un editor di testo come nano o vim per modificare il file:
sudo nano /etc/haproxy/haproxy.cfg
Configurazione di base
Di seguito è riportato un esempio di configurazione di base che configura HAProxy come bilanciatore del carico per due server Web:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Update to use only TLS 1.3 and TLS 1.2
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
ssl-default-bind-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http-in
bind *:80
# Enable TLS 1.3 and TLS 1.2 on HTTPS connections
bind *:443 ssl crt /etc/haproxy/certs/example.com.pem alpn h2,http/1.1
redirect scheme https if !{ ssl_fc }
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
backend static
balance roundrobin
server static1 192.168.1.101:80 check
server static2 192.168.1.102:80 check
backend app
balance roundrobin
cookie SERVERID insert indirect nocache
server app1 192.168.1.103:80 check cookie app1
server app2 192.168.1.104:80 check cookie app2
listen stats
bind *:8080
stats enable
stats uri /haproxy?stats
stats hide-version
stats auth admin:admin
Questa configurazione indica a HAProxy di restare in ascolto sulla porta 80 per il traffico HTTP in entrata (frontend http_front) e di bilanciare il carico tra due server backend (backend http_back) utilizzando l'algoritmo round-robin.
La riga stats uri /haproxy?stats abilita la pagina delle statistiche sull'URL /haproxy?stats
, dove è possibile visualizzare statistiche utili sul server HAProxy.
Salva ed esci
Dopo aver configurato HAProxy a tuo piacimento, salva il file ed esci dall'editor di testo.
Passaggio 4: abilitare e avviare HAProxy
Con HAProxy configurato, il passaggio successivo è abilitarne l'avvio all'avvio e quindi avviare immediatamente il servizio:
sudo systemctl enable haproxy
sudo systemctl start haproxy
Per garantire che HAProxy sia in esecuzione, è possibile verificarne lo stato con:
sudo systemctl status haproxy
Passaggio 5: modifica le impostazioni del firewall
Se hai un firewall abilitato, dovrai consentire il traffico attraverso la porta su cui HAProxy è in ascolto. Ad esempio, per consentire il traffico sulla porta 80, puoi utilizzare:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
Conclusione
Hai installato e configurato correttamente HAProxy sul tuo server CentOS/RHEL 9/8. HAProxy è ora configurato per distribuire il traffico di rete in entrata sui server back-end, aumentando l'affidabilità e le prestazioni della tua applicazione. Non dimenticare di controllare regolarmente la pagina delle statistiche di HAProxy per monitorarne le prestazioni e apportare le modifiche necessarie.