Avere una corretta configurazione del bilanciamento del carico consente al tuo server web di gestire il traffico elevato senza problemi invece di bloccarsi.
Che cos'è il bilanciamento del carico?
Il bilanciamento del carico è il processo di distribuzione dei carichi di lavoro su più server. È come distribuire i carichi di lavoro tra i turni diurni e quelli notturni in un'azienda. Il bilanciamento del carico migliora l'affidabilità del server in quanto supera l'errore di un singolo punto.
Di seguito viene mostrato un esempio dell'aspetto di un server senza bilanciamento del carico.

In questo esempio, se il server web si interrompe, non è possibile accedere alla richiesta web dell'utente in tempo reale. Inoltre, se un numero di utenti richiede la stessa pagina Web contemporaneamente, servire la richiesta Web dell'utente da un singolo server Web può essere un processo lento. Pertanto, i bilanciatori di carico vengono utilizzati per migliorare le prestazioni del server, fornire backup e prevenire guasti.
In questo tutorial, imposteremo un sistema di bilanciamento del carico per il server Web utilizzando Nginx, HAProxy e Keepalived.
Di seguito viene mostrato un esempio dell'aspetto dei server con bilanciatori di carico.

Allora, cosa sono Nginx, Haproxy e Keepalived?
Nginx
Nginx, pronunciato come Engine-x, è un server Web open source. Più che un semplice server Web, può funzionare come server proxy inverso, server proxy di posta, bilanciatore di carico, file server leggero e cache HTTP. Nginx è stato utilizzato in molti siti popolari come BitBucket, WordPress, Pinterest, Quora e GoDaddy.
HAProxy
HAProxy sta per High Availability Proxy. È un sistema di bilanciamento del carico open source che fornisce soluzioni di bilanciamento del carico, alta disponibilità e proxy per applicazioni basate su TCP e HTTP. È più adatto per distribuire il carico di lavoro su più server per migliorare le prestazioni e l'affidabilità dei server.
La funzione di Haproxy è di inoltrare la richiesta web dall'utente finale a uno dei server web disponibili. Può utilizzare vari algoritmi di bilanciamento del carico come Round Robin, Least Connections ecc.
Keepalived
Cosa succede se il sistema di bilanciamento del carico HAProxy non funziona?
Keepalived è un programma open source che supporta sia il bilanciamento del carico che l'elevata disponibilità. È fondamentalmente un software di routing e fornisce due tipi di bilanciamento del carico:
- Livello 4 (livello di trasporto)
- Livello 7 (livello applicazione)
Keepalived può eseguire le seguenti funzioni:
- Controllo dello stato di salute (se i server sono attivi o meno)
- Implementa VRRP (protocollo di routing di ridondanza virtuale) per gestire il failover del bilanciamento del carico
Keepalived utilizza VIP (Virtual IP Address) come IP mobile che fluttua tra un bilanciatore del carico Master e un bilanciatore del carico di backup e viene utilizzato per passare da uno all'altro. Se il servizio di bilanciamento del carico principale non funziona, il servizio di bilanciamento del carico di backup viene utilizzato per inoltrare la richiesta Web.
Passiamo alla simulazione di come viene mantenuta l'elevata disponibilità e il bilanciamento del carico per i server Web.
Configurazione di un sistema di bilanciamento del carico in Linux con Nginx, HAProxy e Keepalived

Questo è un esperimento di laboratorio di prova, il che significa che è solo una configurazione di prova per iniziare. Potrebbe essere necessario apportare alcune modifiche se lo si implementa su server reali. Usa questo tutorial come materiale di apprendimento invece di seguirlo ciecamente per la tua configurazione.
Ho usato la distribuzione Linux CentOS in questo tutorial. Puoi usare altre distribuzioni Linux ma non posso garantire se tutti i comandi (soprattutto quelli di installazione) funzioneranno in altre distribuzioni.
Requisiti per la configurazione del sistema di bilanciamento del carico
4 sistemi installati CentOS (per questo tutorial è sufficiente un'installazione minima)
- 2 CentOS da configurare con nginx
- 2 CentOS da configurare con HAProxy e Keepalived
In questo tutorial, abbiamo lavorato sui seguenti indirizzi IP come esempio. Questi possono essere modificati secondo il tuo sistema. Non pensare che questi siano gli IP statici.
Server Web:
- 13.10.211.169
- 13.10.211.158
Load Balancer:
- 13.10.211.194
- 13.10.211.120
IP virtuale:
- 13.10.211.10
Puoi facilmente ottenere l'indirizzo IP nella riga di comando di Linux.
Passaggio 1:imposta i server web con Nginx
In questa parte, utilizzeremo due sistemi CentOS come server web. Dobbiamo prima installare Nginx su di loro.
Per questo, aggiungi un repository contenente nginx e quindi installalo da lì:
yum install epel-release
yum install nginx
Dopo aver installato nginx, avvia il servizio Nginx:
systemctl start nginx
Rendi il servizio nginx abilitato anche dopo ogni avvio:
systemctl enable nginx
Controlla lo stato del servizio nginx:
systemctl status nginx
Consenti il traffico web in nginx che per impostazione predefinita è bloccato dal firewall CentOS.
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd –reload
Ripeti i passaggi precedenti anche sul secondo server Web CentOS.
Ora presta attenzione ai passaggi successivi.
I file web per nginx si trovano in /usr/share/nginx/html
Modifica il contenuto del file index.html solo per identificare i server web.
Per il primo server web:
echo “this is first webserver” > /usr/share/nginx/html/index.html
Per il secondo server web:
echo “this is second webserver” > /usr/share/nginx/html/index.html
NOTA:Se sei su una macchina virtuale, è meglio installare e configurare Nginx su un sistema e quindi clonare il sistema. Successivamente, è possibile riconfigurare sul secondo sistema. Risparmia tempo ed errori.
Ora conferma lo stato del server web andando al seguente URL nel tuo browser:http://SERVER_DOMAIN_NAME o Local_IP_Address. Esempio qui:
http://10.13.211.169
Oppure nel terminale, arriccia Local_IP_Address. Esempio qui:
curl 10.13.211.169
Otterrai l'output come:

Fase 2:imposta i bilanciatori del carico con HAProxy
Sugli altri due sistemi, utilizzare i seguenti comandi per installare HAProxy:
yum -y update
yum -y install haproxy
Il file di configurazione HAProxy si trova in /etc/haproxy. Usa il comando cd per andare alla directory ed eseguire il backup del file prima della modifica.
cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg_bac
Crea un nuovo file haproxy.cfg e apri il file con l'editor che preferisci.
touch haproxy.cfg
vim haproxy.cfg
Ora, incolla le seguenti righe nel file:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
#frontend
#---------------------------------
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
#round robin balancing backend http
#-----------------------------------
backend http_back
balance roundrobin
#balance leastconn
mode http
server webserver1 10.13.211.169:80 check # ip_address_of_1st_centos_webserver
server webserver2 10.13.211.158:80 check # ip_address_of_2nd_centos_webserver
Ora, abilita e avvia il servizio HAProxy.
systemctl enable haproxy
systemctl start haproxy
Verifica lo stato di HAProxy:
systemctl status haproxy
Vai all'URL nel tuo browser per confermare il servizio di haproxy:http://indirizzo IP del sistema di bilanciamento del carico/haproxy?stats. Esempio utilizzato qui:
http://10.13.211.194/haproxy?stats
oppure nel terminale, usa il comando $ curl LoadBalancer_IP_Address
curl 10.13.211.194
curl 10.13.211.194
curl due volte e vedrai output diversi per il comando curl. È perché la risposta proviene da diversi server Web (uno alla volta), per la tua richiesta al sistema di bilanciamento del carico.
L'output sarebbe simile a questo:

Passaggio 3:imposta la disponibilità elevata con Keepalived
Keepalived deve essere installato su entrambi i sistemi CentOS di bilanciamento del carico HAProxy (che abbiamo appena configurato in precedenza). Uno funge da master (bilanciamento del carico principale) e un altro funge da bilanciamento del carico di backup.
Su entrambi i sistemi, esegui il seguente comando:
yum install -y keepalived
Il file di configurazione di Keepalived si trova in /etc/keepalived/keepalived.conf
. Eseguire il backup del file keepalived.conf originale e utilizzare la configurazione seguente nel nuovo file keepalived .conf.
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac
touch /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
Incolla le seguenti righe nel file di configurazione (non dimenticare di modificare gli indirizzi email):
global_defs {
notification_email {
linuxhandbook.com
[email protected]
}
notification_email_from [email protected]
smtp_server 10.13.211.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0 #put your interface name here. [to see interface name: $ ip a ]
virtual_router_id 51
priority 101 # 101 for master. 100 for backup. [priority of master> priority of backup]
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #password
}
virtual_ipaddress {
10.13.211.10 # use the virtual ip address.
}
}
Nota:gli IP virtuali possono essere qualsiasi IP attivo all'interno della rete. Vicino all'intervallo dell'indirizzo IP di Loadbalancer. Qui, gli IP del sistema di bilanciamento del carico sono:10.13.211.194 e 10.13.211.120 e VIP è 10.13.211.10
Modificare il file di configurazione secondo il presupposto del sistema. Prestare attenzione alla configurazione principale e di backup. Salva il file e avvia e abilita il processo Keepalived:
systemctl start keepalived
systemctl enable keepalived
Per visualizzare lo stato di Keepalived:
systemctl status keepalived
Nota:se sei su una macchina virtuale, è meglio installare e configurare Haproxy e Keepalived su un sistema e quindi clonare il sistema. Successivamente, è possibile riconfigurare sul secondo sistema. Risparmia tempo ed errori.
Ora per controllare lo stato del tuo sistema di bilanciamento del carico ad alta disponibilità, vai al terminale e premi:
$ while true; do ; curl 10.13.211.10 ; sleep 1; done;
Premi ctrl+c
per interrompere l'esecuzione del terminale.
L'output sarà simile a questo:

Se non ti senti a tuo agio nell'installare e configurare i file, scarica gli script dal mio repository GitHub ed eseguili semplicemente.
Spero che questo tutorial ti abbia aiutato a configurare un sistema di bilanciamento del carico in Linux con disponibilità elevata. Ovviamente, è stata una configurazione semplice, ma dà sicuramente un'idea sul bilanciamento del carico e sulla gestione dell'elevata disponibilità.
Se hai domande o suggerimenti, lascia un commento qui sotto.
Autore :Rishi Raj Gautam è un amante di Linux e un attivista open source.