Come configurare HAProxy su CentOS RHEL 9 e 8

5 feb 2024 3 min di lettura
Come configurare HAProxy su CentOS RHEL 9 e 8
Indice dei contenuti

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.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.