HAProxy è un'applicazione software di rete che offre elevata disponibilità, bilanciamento del carico e proxy per le applicazioni di rete TCP e HTTP. È adatto per siti Web ad alto traffico e alimenta molti siti popolari sul Web. Questo articolo ti mostrerà come installare e configurare HAProxy su Debian 9.1.
Sebbene HAProxy abbia diverse funzionalità di spicco, questo articolo si concentra su come impostare HAProxy su "proxy" dell'applicazione Web.
Requisiti
- Almeno due server Vultr (per la funzionalità di bilanciamento del carico) con il sito Web o l'applicazione Web distribuiti su entrambi.
Installazione di HAProxy
Debian 9 viene già fornito con HAProxy 1.7 (ultima versione stabile al momento della scrittura), e possiamo semplicemente installarlo usando apt-get
:
# apt-get update
# apt-get install haproxy
Se i comandi precedenti hanno avuto esito positivo, hai installato HAProxy e puoi procedere al passaggio successivo.
Configurazione di HAProxy
Il file di configurazione HAProxy è suddiviso in due sezioni: "globale" e "proxy". Uno riguarda la configurazione dell'intero processo, mentre il secondo è costituito dalle sezioni di configurazione, frontend e backend predefinite.
Sezione globale
Usando il tuo editor di testo preferito, apri /etc/haproxy/haproxy.cfg
e nota le sezioni predefinite: "globale" e "valori predefiniti". La prima cosa che potresti voler fare è aumentare le maxconn
dimensioni ragionevoli, poiché ciò influisce sulle connessioni consentite da HAProxy. Troppe connessioni potrebbero causare l'arresto anomalo del servizio Web a causa di molte richieste. Dovrai regolare le dimensioni per vedere cosa funziona per te. Nella sezione globale, abbiamo scelto un maxconn
valore di 3072
.
global
daemon
maxconn 3072
Nella sezione predefinita, aggiungi la seguente riga in modalità http
:
option forwardfor
Ciò aggiungerà le X-Forwarded-For
intestazioni a ogni richiesta, che consente ai server back-end di apprendere l'indirizzo IP originale dell'utente.
Inoltre, aggiungi questa riga per abilitare la modalità di chiusura della connessione HTTP sul lato server mantenendo la possibilità di supportare HTTP keep-alive sul lato client. Ciò riduce la latenza sul lato client e aiuta a conservare le risorse del server:
option http-server-close
Se si desidera utilizzare keep-alive su entrambi i lati client e server, è possibile utilizzare option http-keep-alive
invece. Questa opzione è particolarmente utile quando il costo di stabilire una nuova connessione al server è significativo rispetto al costo di recupero della risorsa richiesta.
Infine, il file di configurazione risultante sarà simile al seguente:
defaults
mode http
option forwardfor
option http-server-close
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
Sezione proxy
Per impostare il proxy, sarà necessario aggiungere due sezioni al file di configurazione per definire le due parti del proxy: il frontend e il backend.
Configurazione frontend
Il frontend gestirà le tue connessioni HTTP. Aggiungi quanto segue alla fine del tuo haproxy.cfg
file:
frontend http-frontend
bind public_ip:80
reqadd X-Forwarded-Proto:\ http
default_backend wwwbackend
Assicurati di sostituire public_ip
con l'indirizzo IP pubblico o il nome di dominio del tuo server.
Configurazione back-end
Imposta il tuo backend aggiungendo le seguenti righe alla fine del tuo file di configurazione:
backend wwwbackend
server 1-www server1_ip:80 check
server 2-www server2_ip:80 check
server 3-www server3_ip:80 check
La configurazione back-end utilizzata qui crea 3 connessioni denominate X-www
. ( X
è 1, 2 o 3.) Ciascuno di essi corrisponde a un serverX_ip:80
indirizzo. (Sostituisci serverX_ip
con gli indirizzi IP delle tue istanze Vultr.) Ciò ti consentirà di bilanciare il carico tra ciascun server nel set di server specificato (supponendo che ciascun indirizzo IP corrisponda a un server diverso). L' check
opzione consente al bilanciamento del carico di eseguire controlli di integrità sul server.
Salvare il file di configurazione, quindi riavviare HAProxy:
service haproxy restart
Se tutto funziona, sarai in grado di connetterti http://public_ip/
(sostituendolo con il tuo IP pubblico o nome di dominio come configurato nel passaggio frontend) e visualizzare il tuo sito Web.
Errori di debug
Se l'istanza HAProxy si rifiuta di avviarsi dopo le modifiche, è probabile che si sia verificato un errore da qualche parte nel file di configurazione. Per ottenere messaggi chiari sul problema nel file di configurazione, puoi provare ad avviare HAProxy manualmente usando questo comando:
# haproxy -f /etc/haproxy/haproxy.cfg
Ad esempio, se vedi un output in questo modo:
[ALERT] 234/195612 (2561) : parsing [/etc/haproxy/haproxy.cfg:48] : server 1-www has neither service port nor check port nor tcp_check rule 'connect' with port information. Check has been disabled.
[ALERT] 234/195612 (2561) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 234/195612 (2561) : Fatal errors found in configuration.
Quindi, hai dimenticato di specificare il numero di porta per il server 1-www
.