Solo per i visitatori del nostro blog: ricevi 3 mesi aggiuntivi gratuiti + 10% di sconto sul piano triennale YSBLOG10
Afferra l'affare

Come utilizzare il Load Balancer su un server Linux? L4 vs L7 spiegati con esempi

Un bilanciatore di carico su un server Linux distribuisce il traffico in entrata su più server backend per migliorare le prestazioni, la disponibilità e la scalabilità. Per utilizzarlo: scegli uno strumento (HAProxy, Nginx, o LVS/IPVS), configura i backend e i controlli di integrità, abilita SSLSe necessario, utilizzare /TLS, rafforzare la sicurezza e monitorare il traffico. Testare il failover e le prestazioni prima di andare in produzione.

Se stai scalando le tue applicazioni, imparare a utilizzare un bilanciatore di carico su un server Linux è uno dei passaggi più importanti che puoi intraprendere. In questa guida, configurerai un sistema pronto per la produzione. bilanciamento del carico con Nginx e HAProxy, confronta gli approcci (L4 vs L7), aggiungi SSLsessioni persistenti, controlli di integrità, alta disponibilità e ottimizzazione per velocità e sicurezza.

Che cos'è un Load Balancer e perché utilizzarlo su un server Linux?

Un bilanciatore di carico si posiziona davanti ai server delle applicazioni e distribuisce il traffico per prevenire il sovraccarico, ridurre la latenza e garantire un'elevata disponibilità. Su Linux, le opzioni comuni includono: Nginx (HTTP/HTTPS di livello 7), HAProxy (TCP/HTTP di livello 4/7) e LVS/IPVS (bilanciamento del carico in-kernel di livello 4 ad alte prestazioni).

Come utilizzare il Load Balancer su un server Linux? L4 vs L7 spiegati con esempi

Livello 4 vs Livello 7

Il livello 4 (TCP/UDP) inoltra le connessioni senza ispezionare HTTP; è estremamente veloce e semplice. Il livello 7 comprende HTTP/HTTPS e può instradare tramite URL, intestazioni, cookie e handle. SSL Terminazione. Scegli L4 per la massima velocità di trasmissione (ad esempio, servizi TCP), L7 per un routing più intelligente (applicazioni web, API).

Vantaggi principali

  • Alta disponibilità: rimuovere i nodi non riusciti tramite controlli di integrità
  • Scalabilità: aggiungi o rimuovi server backend senza problemi
  • Performance: concorrenza, livelli di memorizzazione nella cache, riutilizzo TCP
  • Distribuzioni senza tempi di inattività: nodi di drenaggio e distribuzione in sicurezza
  • Sicurezza: centralizzare TLS, WAF, limitazione della velocità (L7)

Scelta di un bilanciatore di carico Linux (Nginx vs HAProxy vs LVS/IPVS)

Nginx (Livello 7 HTTP/HTTPS)

Ottimo come proxy inverso e bilanciatore di carico HTTP, facile SSL terminazione e prestazioni dei file statici. I controlli di integrità passivi sono integrati; i controlli attivi richiedono Nginx Inoltre, è possibile aggiungere moduli di terze parti. Facile da imparare e ampiamente supportato.

HAProxy (Livello 4/7)

Un cavallo di battaglia per la produzione con controlli di integrità avanzati, statistiche dettagliate, offload TLS, stabilità e prestazioni elevate. Ideale per routing dinamico, microservizi e modelli di traffico complessi.

LVS/IPVS (livello 4, livello kernel)

IPVS (con Keepalived) fornisce un bilanciamento del carico L4 estremamente veloce nello spazio kernel. Ideale per throughput molto elevato (milioni di connessioni), spesso abbinato a HAProxy o Nginx al livello L7 per la logica HTTP.

Quale dovresti usare?

  • Applicazioni web/API che necessitano di SSL, intestazioni, routing URL: HAProxy o Nginx
  • Enorme throughput L4 (TCP/UDP): IPVS/Keepalived
  • Un semplice proxy inverso per iniziare subito: Nginx
  • Controlli sanitari avanzati e aderenza: HAProxy

Prerequisiti e architettura di riferimento

  • 1–2 nodi di bilanciamento del carico Linux (Ubuntu/Debian/CentOS/Alma/Rocky)
  • 2+ server applicativi (ad esempio, 10.0.0.11, 10.0.0.12)
  • DNS A/AAAA per il tuo dominio all'IP pubblico o VIP del bilanciatore di carico
  • Firewall aperto: 80/443 a LB, 8404 (statistiche HAProxy opzionali), protocollo 112 per VRRP (Keepalived)
  • Accesso al sistema: sudo, SSH, editore, riccio

Avvio veloce: Nginx Bilanciatore di carico (HTTP/HTTPS)

Nginx Questo è un modo semplice per iniziare a utilizzare un bilanciatore di carico L7 su un server Linux. Di seguito è riportata una configurazione HTTP minima con il principio del minimo numero di connessioni e controlli di integrità passivi.

# Ubuntu/Debian
sudo apt update && sudo apt install -y nginx

# RHEL/CentOS/Alma/Rocky
sudo dnf install -y nginx
sudo systemctl enable --now nginx
# /etc/nginx/conf.d/lb.conf
upstream app_pool {
    least_conn;
    server 10.0.0.11:80 max_fails=3 fail_timeout=10s;
    server 10.0.0.12:80 max_fails=3 fail_timeout=10s;
    # For session persistence, consider:
    # ip_hash;  # Simple stickiness by client IP (not ideal behind NAT)
}

server {
    listen 80 default_server reuseport;
    server_name example.com;

    location / {
        proxy_pass http://app_pool;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_connect_timeout 5s;
        proxy_read_timeout 60s;
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }
}
sudo nginx -t
sudo systemctl reload nginx

Per abilitare HTTPS rapidamente con Let's Encrypt su Nginx:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
sudo systemctl reload nginx

Nota: i controlli di integrità HTTP attivi richiedono Nginx Inoltre, è possibile utilizzare un verificatore esterno. Se sono necessari controlli più rigorosi, è preferibile utilizzare HAProxy come bilanciatore di carico.

Avvio rapido: HAProxy Load Balancer (L4/L7)

HAProxy fornisce controlli di integrità, statistiche, terminazione TLS e stabilità efficaci, ideali per applicazioni Web di produzione e API su un server Linux.

# Ubuntu/Debian
sudo apt update && sudo apt install -y haproxy

# RHEL/CentOS/Alma/Rocky
sudo dnf install -y haproxy
# /etc/haproxy/haproxy.cfg (minimal but production-friendly)
global
    log /dev/log local0
    log /dev/log local1 notice
    user haproxy
    group haproxy
    daemon
    maxconn 50000
    tune.ssl.default-dh-param 2048

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    option  http-server-close
    option  forwardfor
    retries 3
    timeout http-request 10s
    timeout queue        30s
    timeout connect      5s
    timeout client       60s
    timeout server       60s
    timeout http-keep-alive 10s
    timeout check        5s

frontend http-in
    bind *:80
    http-response add-header Strict-Transport-Security "max-age=31536000; includeSubDomains" if { ssl_fc }
    redirect scheme https code 301 if !{ ssl_fc }
    default_backend app

frontend https-in
    bind *:443 ssl crt /etc/haproxy/certs/
    http-request set-header X-Forwarded-Proto https
    default_backend app

backend app
    balance leastconn
    option httpchk GET /health
    http-check expect status 200
    cookie SRV insert indirect nocache
    server app1 10.0.0.11:80 check cookie s1
    server app2 10.0.0.12:80 check cookie s2

listen stats
    bind :8404
    stats enable
    stats uri /
    stats realm HAProxy\ Stats
    stats auth admin:StrongPass123!

Per TLS, posizionare i file PEM in /etc/haproxy/certs (un .pem per dominio, contenente fullchain + chiave privata):

# Using Certbot to obtain certs, then combine for HAProxy:
sudo certbot certonly --standalone -d example.com
sudo bash -c 'cat /etc/letsencrypt/live/example.com/fullchain.pem \
/etc/letsencrypt/live/example.com/privkey.pem \
> /etc/haproxy/certs/example.com.pem'

sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl enable --now haproxy

Alta disponibilità con Keepalived (VRRP)

Gestisce due bilanciatori di carico Linux con un IP virtuale (VIP) che esegue il failover automatico. Keepalived utilizza VRRP (protocollo 112) per eleggere un MASTER e un BACKUP. In caso di guasto del primario, o di arresto dell'HAProxy, il VIP si sposta sul backup in pochi secondi.

# Install
sudo apt install -y keepalived   # or: sudo dnf install -y keepalived

# /etc/keepalived/keepalived.conf (on primary)
vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight -30
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass StrongPass
    }
    virtual_ipaddress {
        10.0.0.10/24 dev eth0
    }
    track_script {
        chk_haproxy
    }
}

Utilizzare la stessa configurazione sul nodo di backup, ma impostare lo stato BACKUP e una priorità inferiore (ad esempio, 100). Aprire VRRP (protocollo 112) tra i LB nel firewall o nel gruppo di sicurezza.

Persistenza della sessione (sessioni fisse)

  • HAProxy: viscosità basata sui cookie (consigliata per le app web)
  • Nginx OSS: ip_hash (di base, basato su IP; potrebbe essere impreciso dietro NAT o CDN)
  • App senza stato: preferire nessuna viscosità; utilizzare archivi di sessioni condivisi (Redis, database) quando necessario

Controlli sanitari, monitoraggio e registrazione

  • Controlli di integrità HAProxy: opzione httpchk, http-check expect, contrassegna automaticamente i nodi falliti
  • Statistiche e metriche: Pagina delle statistiche di HAProxy (:8404), esportatori di Prometheus, syslog
  • Nginx: registri di accesso/errore, modulo stub_status per metriche di base
  • Controlli di uptime esterni: curl, Pingdom, UptimeRobot o k6/wrk per i test di carico

Ottimizzazione delle prestazioni per i bilanciatori di carico Linux

Applicare limiti sani al kernel e ai processi per gestire i picchi e mantenere bassa la latenza.

# /etc/sysctl.d/99-lb.conf
net.core.somaxconn = 65535
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 1000000

sudo sysctl --system

# Raise open files limit
echo "* soft nofile 100000" | sudo tee -a /etc/security/limits.conf
echo "* hard nofile 100000" | sudo tee -a /etc/security/limits.conf
  • Nginx: usa reuseport su listen, abilita keepalive sui backend
  • HAProxy: tune.maxaccept, nbthread (il moderno HAProxy utilizza i thread), http-reuse sicuro, timeout ragionevoli
  • Scala orizzontalmente: aggiungi più nodi LB con Keepalived o anycast

Rafforzamento della sicurezza

  • limitare managesuperfici di mento: associare le statistiche a localhost o proteggere con autenticazione e firewall
  • TLS forte: abilitare TLS 1.2/1.3, cifrari moderni, HSTS, OCSP stapling
  • Firewall: consentire solo 80/443 (e 8404 se necessario), consentire VRRP (protocollo 112) tra LB
  • Sanificare le intestazioni: imposta X-Forwarded-* e rimuovi le intestazioni hop-by-hop
  • Limitazione della velocità/WAF: Tabelle di appiccicosità HAProxy o Nginx limit_req, aggiungi un WAF dove necessario

Test e risoluzione dei problemi

# Sanity checks
curl -I -H "Host: example.com" http://YOUR_LB_IP/
curl -I https://example.com/

# Validate configs
nginx -t
haproxy -c -f /etc/haproxy/haproxy.cfg

# Observe logs
sudo journalctl -u nginx -f
sudo journalctl -u haproxy -f

# Load testing (install first): wrk or ab
wrk -t4 -c200 -d60s https://example.com/

Casi d'uso e modelli nel mondo reale

  • WordPress su larga scala: HAProxy termina TLS e bilancia il carico PHP-FPM/Nginx backend; media su object storage o CDN
  • Distribuzioni blu/verdi: svuotare un server dal pool, distribuire, controllare lo stato di integrità, aggiungere nuovamente
  • Gateway dei microservizi: percorsi di instradamento (/api/, /auth/) verso diversi backend con regole L7
  • Ibrido L4+L7: IPVS per la scala TCP grezza, HAProxy per l'intelligenza HTTP dietro di esso

Non vuoi costruirlo da solo? YouStable'S manageIl team di hosting d implementa regolarmente HAProxy/Nginx bilanciatori di carico con Keepalived, SSL Automazione, monitoraggio e filtraggio DDoS: così puoi concentrarti sulla tua app mentre noi gestiamo l'infrastruttura periferica.

Riepilogo passo passo: come utilizzare un bilanciatore del carico su un server Linux

  • Scegli la tua pila: Nginx o HAProxy (L7), IPVS (L4) per una velocità di trasmissione estrema
  • Installa su un server Linux; configura i backend e l'algoritmo di routing
  • Aggiungi controlli di integrità (HAProxy) e abilita l'offload TLS
  • Rafforzare la sicurezza e ottimizzare i limiti del kernel/processo
  • Aggiungi facoltativamente Keepalived per un VIP e un failover automatico
  • Esegui test con gli strumenti curl e load; monitora i log e le metriche
  • Scala aggiungendo server backend o nodi LB aggiuntivi

Domande Frequenti

Quale è la soluzione migliore per il bilanciamento del carico su Linux? Nginx o HAProxy?

Per la maggior parte delle applicazioni HTTP/HTTPS, HAProxy offre controlli di integrità più completi, maggiore persistenza e osservabilità. Nginx è eccellente come semplice reverse proxy e può essere sufficiente per molti siti. Se hai bisogno di funzionalità L7 avanzate, inizia con HAProxy; se hai bisogno di semplicità, usa Nginx.

Come faccio a scegliere tra il bilanciamento del carico di Livello 4 e di Livello 7?

Scegli L4 per la massima velocità di trasmissione con logica minima (servizi TCP/UDP). Scegli L7 quando hai bisogno di routing compatibile con HTTP, SSL terminazione, regole basate sull'intestazione, caching o integrazioni WAF. Molte implementazioni su larga scala combinano entrambe le soluzioni.

Come posso abilitare le sessioni sticky su un bilanciatore di carico Linux?

In HAProxy, usa l'inserimento dei cookie nel backend e imposta un cookie per server. In Nginx Nel mondo open source, si consiglia di utilizzare ip_hash (base) o di spostare le sessioni in un archivio condiviso (Redis) per evitare la persistenza. La persistenza basata sui cookie è generalmente più affidabile di quella basata sull'indirizzo IP.

Posso terminare? SSL/TLS sul bilanciatore di carico?

Sì. Termina TLS su HAProxy o Nginx e inoltrare il testo in chiaro ai backend, oppure crittografarlo nuovamente verso i backend se necessario. Utilizzare l'automazione di Let's Encrypt e impostazioni TLS robuste (TLS 1.2/1.3, algoritmi di crittografia moderni, HSTS).

Come posso ottenere un'elevata disponibilità per il bilanciatore del carico stesso?

Eseguire due bilanciatori di carico Linux e utilizzare Keepalived (VRRP) per gestire un IP virtuale. I controlli di integrità garantiscono il failover automatico in caso di errore del nodo o del processo primario. Assicurarsi che il protocollo VRRP (protocollo 112) sia consentito tra i nodi e testare regolarmente il failover.

Condividere tramite:

Sanjeet Chauhan

Sanjeet Chauhan è un blogger ed esperto SEO, impegnato ad aiutare i siti web a crescere organicamente. Condivide strategie pratiche, consigli pratici e spunti per aumentare il traffico, migliorare il posizionamento e massimizzare la presenza online.

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

Scorrere fino a Top