Vai al contenuto

Bilanciamento del Carico con HAProxy

In questa guida viene spiegato come utilizzare HAProxy Load Balancer per la tua distribuzione. HAProxy può essere eseguito sia come Layer 4 (modalità TCP) sia come Layer 7 (modalità HTTP). Attualmente, una modalità di caricamento Layer 7 non è supportata per l'API di Kubernetes. Tuttavia, HAProxy funziona come un ibrido e fornisce il bilanciamento del carico sia per le applicazioni Layer 4 che per quelle Layer 7 utilizzando un singolo demone.

Nota: Questo argomento è limitato a essere un esempio di come utilizzare HAProxy come load balancer per la nostra soluzione SOAR. La configurazione del load balancer come descritta qui comporterà una configurazione non altamente disponibile. HAProxy può essere configurato con funzionalità di alta disponibilità e failover utilizzando la stessa configurazione di esempio, ma la configurazione di HA del load balancer è al di là dello scopo di questo argomento.

Nota: Entrambi gli esempi in questo argomento includono un ascoltatore di statistiche HAProxy abilitato. Questo può essere utile per tenere traccia delle metriche e della salute dei nodi di back-end. È accessibile sulla porta 8080. Non è in alcun modo obbligatorio e può essere disabilitato eliminando le sezioni listener stats dalla configurazione.

Load Balancer Layer 4 (Modalità TCP) HAProxy

I vantaggi della modalità TCP sono nella sua semplicità. La modalità TCP inoltra semplicemente il traffico di rete a livello di porta ai server di back-end configurati. Questo consente al servizio di back-end di controllare quasi tutti gli aspetti della comunicazione. Ad esempio, la modalità TCP consente al servizio di back-end di fornire il proprio certificato TLS in modo che SSL non venga terminato al load balancer.

Lo svantaggio della modalità TCP è che generalmente gli aggiornamenti al load balancer (ad esempio, l'aggiunta o la rimozione di cifrari SSL) possono avvenire molto più rapidamente in modalità HTTP da parte dell'amministratore rispetto all'attesa di un rilascio.

Configurazione

Assicurarsi di selezionare l'opzione Enable Included Ingress Controller sulla scheda di configurazione dell'interfaccia utente quando si utilizza la modalità TCP.

Requisiti di Porta

Le porte da bilanciare in modalità TCP sono:

  • Porta 443
  • Porta 6443
  • Porta 8800

Queste porte devono essere accessibili dal load balancer a qualsiasi nodo che fa parte del cluster.

Load Balancer Layer 7 (Modalità HTTP) HAProxy

I bilanciatori di carico in modalità HTTP offrono maggiore flessibilità e capacità di instradamento più avanzate rispetto alla modalità TCP. La terminazione SSL avviene al load balancer, momento in cui il load balancer comunica con i nodi di back-end tramite il protocollo HTTP. La configurazione del load balancer in modalità HTTP è più flessibile e consente una gamma più ampia di opzioni di configurazione che non dipendono da un rilascio della nostra soluzione.

Tuttavia, la modalità HTTP è incompatibile con l'API di Kubernetes. Sarà necessario utilizzare almeno un frontend e backend in modalità TCP.

L'esempio seguente richiede un certificato SSL e una chiave situati in /etc/haproxy/server.pem.

Configurazione di esempio per un server HAProxy Layer 7:

```################### OPZIONI GLOBALI ###################
global
defaults timeout client 30s
timeout server 30s
timeout connect 30s

listen stats
bind *:8080
mode http
stats enable
stats uri /
### Frontend / Backend Turbine
frontend turbine-frontend```