HAProxy sta per High Availability Proxy, è uno strumento di bilanciamento del carico gratuito e open source che consente di bilanciare il traffico in entrata (TCP e basato su HTTP ) distribuendo tra i server di back-end utilizzando criteri diversi.
In altre parole, possiamo dire che HAProxy viene utilizzato per fornire tolleranza agli errori e disponibilità elevata nel caso in cui un nodo riceva troppe richieste simultanee. È utilizzato dai siti Web più famosi come GitHub, Stack Overflow e Tumbler.
In questo articolo, discuteremo come installare e configurare HAProxy su CentOS 8/RHEL 8 per server Web Nginx. Di seguito sono riportati i dettagli per la configurazione del mio laboratorio haproxy,
- Server HAProxy – 192.168.1.10 (haproxy-centos8)
- Server Nginx 1 – 192.168.1.11 (nginx-node01)
- Server Nginx 2 – 192.168.1.12 (nginx-node01)
Passiamo ai passaggi di installazione e configurazione di HAProxy su CentOS 8 / RHEL 8
Fase:1) Aggiorna il file /etc/hosts del tuo server HAProxy
Accedi al tuo sistema CentOS 8 o RHEL 8 dove installerai haproxy, aggiungi le seguenti righe nel file /etc/hosts,
192.168.1.10 haproxy-centos8 192.168.1.11 nginx-node01 192.168.1.12 nginx-node02
Dopo aver aggiornato il file hosts, assicurati di essere in grado di eseguire il ping dei nodi Nginx,
Passaggio:2) Installa e configura HAProxy su CentOS 8 / RHEL 8
Il pacchetto Haproxy è disponibile nei repository di pacchetti predefiniti di CentOS 8 e RHEL 8, quindi può essere facilmente installato con il comando dnf. Ma si consiglia di aggiornare il sistema prima di installare haproxy. Quindi esegui il seguente comando,
[email protected] ~]# dnf update -y [email protected] ~]# reboot
Ora usa il seguente comando dnf per installare haproxy,
[[email protected] ~]# dnf install haproxy
Una volta che haproxy è stato installato correttamente, configuralo modificando il suo file di configurazione “/etc/haproxy/haproxy.cfg “.
Prima di modificare il file, è sempre buona norma fare un backup del file originale, eseguire il comando seguente,
[[email protected] ~]# cd /etc/haproxy/ [[email protected] haproxy]# cp haproxy.cfg haproxy.cfg-org [[email protected] haproxy]#
Nel file di configurazione, modificheremo due sezioni frontend e backend . Nella sezione Frontend definiamo l'IP haproxy e la sua porta, l'uri delle statistiche e il nome del backend. Nella sezione Backend definiamo il tipo di algoritmo di bilanciamento del carico che useremo come round robin e connessione minima ecc. e il nome, gli IP e la porta del server di backend, l'esempio è mostrato di seguito,
[[email protected] haproxy]# vi haproxy.cfg ………………… frontend http_balancer bind 192.168.1.10:80 option http-server-close option forwardfor stats uri /haproxy?stats # 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 nginx_webservers backend nginx_webservers mode http balance roundrobin option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server nginx-node01 192.168.1.11:80 check server nginx-node02 192.168.1.12:80 check ………………………………
Salva ed esci dal file
Configura rsyslog in modo che memorizzi tutte le statistiche HAProxy, modifica il file di configurazione rsyslog “/etc/rsyslog.conf ” e decommenta la riga 19 e 20,
[[email protected] ~]# vi /etc/rsyslog.conf …… module(load="imudp") input(type="imudp" port="514") ……
Salva ed esci dal file.
Ora crea il file haproxy.conf per rsyslog , incolla le seguenti righe,
[[email protected] ~]# vi /etc/rsyslog.d/haproxy.conf local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
salva ed esci dal file
Riavvia e abilita il servizio rsyslog in modo che sia disponibile durante i riavvii
[[email protected] ~]# systemctl restart rsyslog [[email protected] ~]# systemctl enable rsyslog
Ora finalmente avvia haproxy ma prima di avviare il servizio haproxy, imposta la seguente regola selinux,
[[email protected] ~]# setsebool -P haproxy_connect_any 1
Avvia e abilita haproxy usando sotto i comandi systemctl
[[email protected] ~]# systemctl start haproxy [[email protected] ~]# systemctl enable haproxy
Consenti la porta haproxy (nel nostro caso è 80) nel firewall del sistema operativo, esegui il comando firewall-cmd sottostante,
[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcp [[email protected] ~]# firewall-cmd --reload
Fino ad ora la parte di installazione e configurazione di HAProxy è completata, passiamo ai nodi Nginx,
Passaggio:3) Installa NGINX e avvia il suo servizio
Accedi a entrambi i nodi nginx, installa nginx e avvia il suo servizio utilizzando i seguenti comandi.
# dnf install nginx -y # systemctl start nginx # systemctl enable nginx
Modifichiamo il file index.html del rispettivo nodo,
Per nginx-node01
[[email protected] ~]# cd /usr/share/nginx/html [[email protected] html]# echo "Nginx Node01 - Welcome to First Nginx Web Server" > index.html
Per nginx-node02
[[email protected] ~]# cd /usr/share/nginx/html [[email protected] html]# echo "Nginx Node02 - Welcome to 2nd Nginx Web Server" > index.html
Consenti la porta Nginx (80) nel firewall del sistema operativo in entrambi i nodi utilizzando il comando seguente,
# firewall-cmd --permanent --add-service=http # firewall-cmd --reload
Fase:4) Verifica se HAProxy funziona correttamente o meno
Accedi al server haproxy ed esegui il comando curl un paio di volte per vedere se il traffico è distribuito in modo round robin
[[email protected] ~]# curl 192.168.1.10
Perfetto, questo conferma che haproxy funziona correttamente poiché sta distribuendo il traffico tra due nodi,
Verifichiamo anche dal browser Web,
Sopra conferma che HAProxy è stato configurato correttamente su CentOS 8 e RHEL 8.
Puoi visualizzare lo stato del tuo haproxy tramite browser web, digita url:http://
Nel nostro caso l'URL sarà http://192.168.1.10/haproxy?stats
Possiamo anche visualizzare le statistiche HAProxy dal file di registro (/var/log/haproxy-access.log ).
Questo è tutto da questo tutorial, spero che questi passaggi ti aiutino a configurare HAProxy su CentOS 8 e RHEL 8 senza problemi. Condividi i tuoi preziosi feedback e commenti.
Leggi anche :Come configurare Django Python Framework su CentOS 8