HAProxy è un server proxy e bilanciatore del carico ad alta disponibilità HTTP/TCP gratuito. Diffonde le richieste tra più server per mitigare i problemi derivanti da un errore di un singolo server. HA Proxy viene utilizzato da numerosi siti Web di alto profilo, tra cui GitHub, Bitbucket, Stack Overflow, Reddit, Tumblr, Twitter e Tuenti, e viene utilizzato nel prodotto OpsWorks di Amazon Web Services.
Qui a LinuxAPT, come parte dei nostri servizi di gestione del server, aiutiamo regolarmente i nostri clienti a eseguire query di configurazione HAProxy correlate.
In questo contesto, esamineremo come installare HAProxy sul tuo sistema CentOS 8.
Passaggi per installare e configurare HAProxy su CentOS 8
1. Esegui l'aggiornamento del sistema
Innanzitutto, iniziamo assicurandoci che il tuo sistema sia aggiornato:
$ sudo clean all
$ sudo dnf update
2. Installare HAProxy sul sistema
HAProxy è disponibile su CentOS 8 predefinito, ora usa il seguente comando dnfa per installare HAProxy:
$ sudo dnf install haproxy
Successivamente, dobbiamo verificare che HAProxy si avvii ogni volta che riavviamo il nostro server. Possiamo farlo con il comando chkconfig di seguito:
$ chkconfig haproxy on
3. Configura HAProxy
Creeremo un file di configurazione /etc/haproxy/haproxy.cfg contenente le impostazioni e le configurazioni necessarie:
$ sudo nano /etc/haproxy/haproxy.cfg
Inserisci quanto segue nel file:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend main
bind *:5000
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 static 127.0.0.1:4331 check
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
È possibile visualizzare i dettagli di configurazione e ulteriori informazioni controlla questo URL. Dopo aver configurato HAProxy, è ora di avviare il servizio:
$ sudo systemctl start haproxy
$ sudo systemctl enable haproxy
4. Configura Firewall
Aggiungeremo HAProxy al firewall CentOS 8 e aggiorneremo le regole con i seguenti comandi:
$ sudo firewall-cmd --add-port=8088/tcp --permanent
$ sudo firewall-cmd --reload
5. Configurare la registrazione HAProxy
Per configurare la registrazione standard HAProxy, modificare /etc/rsyslog.conf e abilitare la ricezione UDP Syslog sulla porta 514:
$ sudo nano /etc/rsyslog.conf
...
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
...
*.info;mail.none;authpriv.none;cron.none,local2.none /var/log/messages
local2.* /var/log/haproxy.log
...
Quindi, salva il file di configurazione ed esegui il comando seguente per verificare la presenza di eventuali errori:
$ rsyslogd -N1
$ sudo systemctl restart rsyslog haproxy
6. Configura Apache X-Forwarded-For Logging su server backend
Ora accediamo ai server back-end e configuriamo Apache per registrare le intestazioni X-Forwarded-For. La riga predefinita che stiamo modificando è:
...
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...
Modifica questa riga in modo che assomigli a:
...
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...
Salva il file e riavvia Apache:
$ apachectl configtest
$ sudo systemctl restart httpd
Come testare HAProxy Load Balancer?
Per verificare che HAProxy sia in grado di bilanciare il carico delle richieste HTTP, accedere al browser e accedere a HAProxy utilizzando il nome host o l'indirizzo IP.
Come riavviare HAProxy?
Dopo aver configurato il livello 4 o il livello 7, riavviare HAProxy con il comando seguente:
$ systemctl restart haproxy
Un riavvio riuscito non produrrà alcun output, il che significa che HAProxy è attivo e funzionante con le modifiche appena implementate.