GNU/Linux >> Linux Esercitazione >  >> Linux

Bilanciamento del carico con HAProxy, Nginx e Keepalived in Linux

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.


Linux
  1. Modifica il testo su Linux con KWrite e Kate

  2. Personalizzazione del mio terminale Linux con tmux e Git

  3. Come installare Nginx Web Server su Linux

  4. Bilanciare la sicurezza di Linux con l'usabilità

  5. Bilanciamento del carico Nginx

Configura il bilanciamento del carico con HAProxy, Nginx e Keepalived in Linux

Installa e configura Varnish Cache con Nginx Web Server su Ubuntu 18.04

Come installare e configurare Caddy Web Server con PHP su Rocky Linux 8

Come configurare il bilanciamento del carico con NGINX su Jelastic Cloud

Sviluppo Web e Tecniche Avanzate con Linux su Windows (WSL)

Ruby on Rails sul servizio app di Azure (siti Web) con Linux (e Ubuntu su Windows 10)