Introduzione
HAProxy un bilanciatore del carico . Un sistema di bilanciamento del carico gestisce più traffico web per evitare tempi di inattività. Riceve il traffico da Internet o dalla rete interna che bilancia il carico di un servizio interno e quindi inoltra il traffico al Web.
I vantaggi dell'utilizzo di un servizio di bilanciamento del carico una volta distribuito su più server. Il sistema di bilanciamento del carico può inoltrare il traffico per aumentare la capacità di servire numerosi client senza connettersi direttamente a ciascun server. HAProxy riceve e inoltra il traffico e quindi bilancia il caricare sui tuoi server. Questa tecnica protegge da eventuali guasti dei server poiché il sistema di bilanciamento del carico può rilevare se un server non risponde e interrompe automaticamente l'invio del traffico. HAProxy viene utilizzato per bilanciare il traffico verso un numero qualsiasi di applicazioni Web utilizzando un'unica configurazione.
HAProxy è il sistema di bilanciamento del carico e controller di distribuzione delle applicazioni più veloce e più utilizzato. Scritto in C, processore efficiente e uso della memoria. Può essere eseguito a livello 4 (TCP) o livello 7 (HTTP) e funzionalità aggiuntive per l'ispezione, il routing e la modifica dei messaggi.
Viene fornito in bundle con un'interfaccia utente Web denominata pagina HAProxy Stats che è possibile utilizzare per monitorare i tassi di errore, il volume del traffico e la latenza. Inoltre, aggiorna un unico file di configurazione, che fornisce una sintassi per definire regole di instradamento, limiti di velocità, controlli di accesso, ecc.
Per garantire un servizio veramente affidabile, eseguire almeno due istanze di HAProxy con una configurazione attivo-attivo o attivo-standby. Scopri come fare con HAProxy Enterprise leggendo i documenti ufficiali. Controlla il tutorial sull'Apache del contenitore.
Quando si configura HAProxy, in genere iniziare con quanto segue:
- Indirizzi IP specifici e porte HAProxy per ricevere il traffico;
- Server a cui HAProxy trasmetterà il traffico;
- Quando un client richiede di passare a un pool di server.
Altre caratteristiche includono:
- Terminazione SSL/TLS
- Compressione Gzip
- Controllo dello stato di salute
- HTTP/2
- Supporto gRPC
- Scripting Lua
- Scoperta del servizio DNS
- Nuovi tentativi automatici di connessioni non riuscite
- Registrazione dettagliata
Questi contenitori sono in ascolto sulla porta 8080, ma non abbiamo mappato quelle porte sull'host, quindi non sono instradabili. Invieremo invece il traffico a questi container tramite il sistema di bilanciamento del carico HAProxy. Quindi, aggiungiamo HAProxy davanti a loro. Crea un file denominato haproxy.cfg nella directory corrente e aggiungi quanto segue:
Ottieni l'immagine HAProxy
# podman pull haproxytech/haproxy-alpine:2.4
Crea un'immagine personalizzata per il tuo requisito HAProxy
# mkdir -p /haproxy/etc/haproxy/
# cd /haproxy/etc/haproxy/
# ls
Dockerfile haproxy.cfg
Crea un'immagine Docker per le tue esigenze
# cat /haproxy/etc/haproxy/Dockerfile
FROM haproxytech/haproxy-alpine:2.4
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
Crea una configurazione haproxy a tua scelta
# cat /haproxy/etc/haproxy/haproxy.cfg
global
stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners
log stdout format raw local0 info
defaults
mode http
timeout client 10s
timeout connect 5s
timeout server 10s
timeout http-request 10s
log global
frontend stats
bind *:8404
stats enable
stats uri /
stats refresh 10s
frontend myfrontend
bind :80
default_backend webservers
backend webservers
server s1 http-server1:8081 check
server s2 http-server2:8082 check
server s3 http-server3:8083 check
Costruisci l'immagine haproxy
# cd /haproxy/etc/haproxy/
# podman build -t my-haproxy .
Crea il server HAproxy
# podman run --name haproxy-server -p 80:80 -p 8404:8404 -d localhost/my-haproxy
Crea pod per ogni server web
Server Apache
# podman pull centos/httpd-24-centos7
# podman pod create --name httpapp1 -p 8081:8080 --network bridge
# podman run --pod httpapp1 --name http-server1 -v /wwwdata1:/var/www:Z -d centos/httpd-24-centos7
# podman pod create --name httpapp2 -p 8082:8080 --network bridge
# podman run --pod httpapp2 --name http-server2 -v /wwwdata2:/var/www:Z -d centos/httpd-24-centos7
# podman pod create --name httpapp3 -p 8083:8080 --network bridge
# podman run --pod httpapp3 --name http-server3 -v /wwwdata3:/var/www:Z -d centos/httpd-24-centos7
Conclusione
HAProxy all'interno di un container può semplificarne l'implementazione e la gestione del ciclo di vita. Fornisce uno standard per la distribuzione delle applicazioni, rendendo il processo ripetibile e testabile. Il sovraccarico della CPU dell'esecuzione è trascurabile, può comportare una rete aggiuntiva, l'impatto dipende dal caso d'uso e dalle esigenze di velocità effettiva.
A creare semplicemente un file di configurazione HAProxy e quindi chiamare il comando podman run con il nome dell'immagine HAProxy. HAProxy Technologies fornisce immagini aggiornate.
HAProxy Enterprise alimenta le applicazioni moderne su qualsiasi scala e in qualsiasi ambiente, offrendo le massime prestazioni, osservabilità e sicurezza per la tua assistenza critica. Puoi sfruttare le sue funzionalità all'avanguardia e la suite aziendale di componenti aggiuntivi, che sono supportati da un supporto autorevole ed esperto e servizi professionali.