HAProxy sta per High Availability Proxy. Scritto in C, è un servizio di bilanciamento del carico TCP/HTTP gratuito e open source e una soluzione di proxy per applicazioni basate su TCP e HTTP. HAProxy viene utilizzato per migliorare le prestazioni di un ambiente server distribuendo il carico di lavoro su più server.
HAProxy consente a un'applicazione di riavviarsi automaticamente o di reindirizzare il lavoro a un altro server in caso di errore. Questo sistema di bilanciamento del carico potente, ad alte prestazioni, affidabile e sicuro è il più utilizzato ed è stato appositamente progettato per siti Web ad alto traffico.
In questo tutorial, ti mostreremo come configurare un sistema di bilanciamento del carico ad alta disponibilità con HAProxy su CentOS 8.
Prerequisiti
- Tre nuove CentOS 8 VPS sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata su ogni VPS
Per questo tutorial, utilizzeremo la seguente configurazione:
Server HAProxy: – nome host:IP haproxy:192.168.0.10
Server Web 1:- nome host:web1 IP:192.168.0.11
Server Web 2:- nome host:web2 IP:192.168.0.12
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo CentOS 8 come sistema operativo con almeno 1 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al server CentOS 8, esegui il comando seguente per aggiornare il sistema di base con gli ultimi pacchetti disponibili.
dnf update -y
Fase 2 – Installa e configura Nginx
Nota:completa questo passaggio su WebServer 1 e WebServer2
Innanzitutto, dovrai installare il server web Nginx sulle istanze web1 e web2.
Puoi installare Nginx eseguendo il seguente comando:
dnf install nginx -y
Una volta installato Nginx, avvia il servizio Nginx e abilitalo all'avvio all'avvio su entrambe le istanze:
systemctl start nginx systemctl enable nginx
Quindi, modifica index.html file su ogni istanza.
Modifica index.html file su web1 istanza con il seguente comando:
echo "This is My First Nginx Web Server" > /usr/share/nginx/html/index.html
Modifica index.html file su web2 istanza con il seguente comando:
echo "This is My Second Nginx Web Server" > /usr/share/nginx/html/index.html
Salva e chiudi il file quando hai finito.
Fase 3 – Installa e configura HAProxy
Nota:completare questo passaggio su HAProxy Server
Innanzitutto, installa HAProxy sull'istanza del server haproxy con il seguente comando:
dnf install haproxy -y
Una volta completata l'installazione, eseguire il backup del file di configurazione predefinito haproxy:
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-bak
Il file di configurazione è diviso in quattro sezioni principali.
- impostazioni globali: Utilizzato per impostare parametri a livello di processo.
- predefiniti: Utilizzato per impostare i parametri predefiniti per tutte le altre sezioni.
- front-end: Utilizzato per definire il modo in cui HAProxy è accessibile dall'esterno per consentire l'accesso al back-end.
- backend: Utilizzato per definire un insieme di server a cui si connetterà il proxy per inoltrare le connessioni in entrata.
Quindi, crea un nuovo file di configurazione haproxy usando il seguente comando:
nano /etc/haproxy/haproxy.cfg
Aggiungi le seguenti righe che corrispondono alla tua infrastruttura:
#————————————————————————
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon
# attiva il socket unix di statistiche
stats socket /var/lib/haproxy/stats
# utilizzare criteri di crittografia a livello di sistema
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 principale che esegue il proxy dei backend
#————————————————————————
frontend haproxy_balancer # define the name of the frontend. bind 192.168.0.10:80 # IP address of HAProxy server option http-server-close option forwardfor stats uri /haproxy?stats # Specify the HAProxy status page. default_backend webservers
#————————————————————————
# bilanciamento round robin tra i vari backend
#————————————————————————
server web back-end # Specificare un nome per identificare un'applicazione
mode http balance roundrobin # defines the roundrobin load balancer scheduling algorithm option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server nginx-web1 192.168.0.11:80 check # IP address of the first backend server server nginx-web2 192.168.0.12:80 check # IP address of the second backend server
Nota:assicurati di modificare l'indirizzo IP sopra con l'IP pertinente alla configurazione del tuo server
Salva e chiudi il file quando hai finito. Quindi, controlla il file di configurazione haproxy per eventuali errori con il seguente comando:
haproxy -c -f /etc/haproxy/haproxy.cfg
Dovresti ottenere il seguente output:
Configuration file is valid
Infine, avvia il servizio haproxy e abilitalo all'avvio all'avvio con il seguente comando:
systemctl start haproxy systemctl enable haproxy
Puoi anche verificare l'haproxy con il seguente comando:
systemctl status haproxy
Dovresti ottenere il seguente output:
haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-04-24 02:14:55 EDT; 5min ago Process: 1371 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 1373 (haproxy) Tasks: 2 (limit: 6087) Memory: 2.8M CGroup: /system.slice/haproxy.service ├─1373 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid └─1374 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Apr 24 02:14:55 haproxy systemd[1]: Starting HAProxy Load Balancer... Apr 24 02:14:55 haproxy systemd[1]: Started HAProxy Load Balancer.
Fase 4:configurare la registrazione HAProxy
La registrazione HAProxy ti consente di vedere le statistiche di ogni connessione ai tuoi server web back-end.
Puoi configurare rsyslog modificando il file /etc/rsyslog.conf:
nano /etc/rsyslog.conf
Decommenta la seguente riga:
module(load="imudp") input(type="imudp" port="514")
Salva e chiudi il file quando hai finito. Successivamente, sarà necessario configurare un server rsyslog per ricevere ed elaborare i messaggi di registro HAProxy.
Per farlo, crea un nuovo file di configurazione haproxy.conf:
nano /etc/rsyslog.d/haproxy.conf
Aggiungi le seguenti righe:
local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio rsyslog e abilitalo per l'avvio all'avvio con il seguente comando:
systemctl restart rsyslog systemctl enable rsyslog
Fase 5:verifica del bilanciamento del carico HAProxy
A questo punto HAProxy è installato e configurato. È ora di verificare se il bilanciamento del carico funziona o meno.
Apri il tuo browser web e digita il tuo IP HAProxy http://192.168.0.10. Dovresti vedere il contenuto del tuo primo server web Nginx nella schermata seguente:
Quindi, aggiorna la pagina web. Dovresti vedere il contenuto del tuo secondo server web Nginx nella schermata seguente:
È possibile visualizzare lo stato di haproxy utilizzando l'URL http://192.168.0.10/haproxy?stats. Dovresti vedere lo stato dei tuoi server, i tassi di richiesta attuali, i tempi di risposta e altre metriche nella schermata seguente:
Conclusione
Nella guida precedente, abbiamo appreso come configurare un servizio di bilanciamento del carico ad alta disponibilità con HAProxy su CentOS 8. Ora puoi progettare e configurare facilmente il bilanciamento del carico per soddisfare la tua infrastruttura IT e i requisiti dell'applicazione; provalo su VPS Hosting da Atlantic.Net.