Quando si distribuisce un'applicazione su Internet, la disponibilità, la scalabilità e le prestazioni dell'applicazione sono molto importanti per una migliore esperienza utente. Esistono molte tecnologie che introducono la ridondanza, come il bilanciamento del carico, il clustering e il proxy.
HAProxy è un sistema di bilanciamento del carico gratuito, open source e affidabile progettato per siti Web ad alto traffico. Bilancia il carico del traffico in entrata distribuendolo su più server back-end.
In questo articolo ti mostriamo come installare HAProxy su Rocky Linux 8.
Allo scopo di questo tutorial, utilizzeremo la seguente configurazione:
Server Indirizzo IP
HAProxy 172.16.10.10
Backend1 172.16.10.11
Backend2 172.16.10.12
Prerequisiti
- Un server che esegue RockyLinux 8.
- Sul server è configurata una password di root.
Installa HAProxy
Per impostazione predefinita, il pacchetto HAProxy è disponibile nel repository predefinito di Rocky Linux 8. Puoi installarlo con il seguente comando:
dnf install haproxy -y
Una volta installato HAProxy, avviare il servizio HAProxy e consentirne l'avvio al riavvio del sistema:
systemctl start haproxy
systemctl enable haproxy
Configura HAProxy
Successivamente, dovrai modificare il file /etc/haproxy/haproxy.cfg e modificare due sezioni frontend e backend. Nella sezione Frontend, dovrai definire HAProxy IP la sua porta, l'URI delle statistiche e il nome del backend. Nella sezione Backend, dovrai definire l'algoritmo di bilanciamento del carico, il nome del server backend, gli IP e la porta.
nano /etc/haproxy/haproxy.cfg
Modifica le seguenti sezioni:
frontend http_balancer bind 172.16.10.10:80 option http-server-close option forwardfor stats uri /haproxy?stats default_backend Apache_webservers backend apache_webservers mode http balance roundrobin option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server apache1 172.16.10.11:80 check server apache2 172.16.10.12:80 check
Salva e chiudi il file al termine, quindi dovrai modificare il file /etc/rsyslog.conf.
nano /etc/rsyslog.conf
Decommenta le seguenti righe:
module(load="imudp") input(type="imudp" port="514")
Salva e chiudi il file, quindi crea il file haproxy.conf per rsyslog con il seguente comando:
nano /etc/rsyslog.d/haproxy.conf
Aggiungi le seguenti righe:
local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
Quindi, avvia il servizio rsyslog e abilitalo per l'avvio al riavvio del sistema:
systemctl start rsyslog
systemctl enable rsyslog
Infine, riavvia il servizio HAProxy per applicare le modifiche:
systemctl restart haproxy
È inoltre possibile verificare lo stato del servizio HAProxy con il seguente comando:
systemctl status haproxy
Dovresti vedere il seguente output:
? haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2021-08-03 03:10:37 EDT; 1min 16s ago Process: 44032 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 44036 (haproxy) Tasks: 2 (limit: 12524) Memory: 3.1M CGroup: /system.slice/haproxy.service ??44036 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid ??44111 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Aug 03 03:10:36 RockyLinux8 systemd[1]: Starting HAProxy Load Balancer... Aug 03 03:10:37 RockyLinux8 systemd[1]: Started HAProxy Load Balancer.
Configura Firewall
Successivamente, dovrai configurare il firewall su tutti i server e consentire la porta 80 attraverso il firewall.
Puoi eseguire il comando seguente per consentire la porta 80:
firewall-cmd --permanent --add-port=80/tcp
Quindi, ricarica il servizio firewalld per applicare le modifiche.
firewall-cmd --reload
Configura i server di backend
Successivamente, dovrai installare il server Apache su entrambi i server back-end. Esegui il comando seguente per installare il server Apache.
dnf install httpd -y
Una volta installato il server Apache, avvia il servizio Apache e abilitalo all'avvio al riavvio del sistema:
systemctl start httpd
systemctl enable httpd
Successivamente, dovrai modificare il file index.html predefinito su entrambi i server back-end.
Sul primo backend, modifica il file index.html con il seguente comando:
nano /usr/share/httpd/noindex/index.html
Rimuovi tutte le righe e aggiungi la seguente riga:
Welcome to First Apache Web Server!
Salva e chiudi il file quando hai finito.
Sul secondo back-end, modifica il file index.html con il seguente comando:
nano /usr/share/httpd/noindex/index.html
Rimuovi tutte le righe e aggiungi la seguente riga:
Welcome to Second Apache Web Server!
Salva e chiudi il file quando hai finito.
Verifica HAProxy
A questo punto, HAProxy è configurato per inoltrare tutte le richieste in entrata ai server back-end in base all'algoritmo di bilanciamento del carico. Ora è il momento di verificare se HAProxy funziona correttamente o meno.
Apri il tuo browser web e digita l'IP HAProxy nell'URL http://172.16.10.10 . Dovresti vedere la tua prima pagina del server web apache:
Quindi, aggiorna di nuovo la stessa pagina, dovresti vedere la tua seconda pagina del server web apache:
Ciò conferma che HAProxy funziona come previsto e sta distribuendo il traffico tra due server back-end.
Conclusione
Congratulazioni! hai installato e configurato correttamente il sistema di bilanciamento del carico HAProxy su Rocky Linux 8. Ora puoi implementare HAProxy nell'ambiente di produzione per ottenere prestazioni e scalabilità elevate.