A traduzzione di l'articulu hè stata preparata à a vigilia di l'iniziu di u corsu
L'equilibriu di carica hè una soluzione cumuna per scaglià l'applicazioni web in più hosts mentre furnisce l'utilizatori cù un puntu unicu d'accessu à un serviziu.
HAProxy hà u scopu di ottimisà l'usu di e risorse, maximizà u throughput, minimizzà u tempu di risposta, è evità di sovraccaricare ogni risorsa unica. Pò esse installatu nantu à una varietà di distribuzioni Linux, cum'è CentOS 8, chì ci focalizeremu in questa guida, è ancu i sistemi.
HAProxy hè particularmente adattatu per i siti web di trafficu assai altu è hè dunque spessu usatu per migliurà l'affidabilità è a prestazione di cunfigurazioni di serviziu web multi-server. Questa guida delinea i passi per cunfigurà HAProxy cum'è un equilibratore di carica in un host cloud CentOS 8, chì poi indirizza u trafficu à i vostri servitori web.
Cum'è un prerequisite per i migliori risultati, duvete avè almenu dui servitori web è un servitore di equilibriu di carica. I servitori web devenu esse in esecuzione almenu un serviziu web basicu cum'è nginx o httpd per pruvà l'equilibriu di carica trà elli.
Installazione di HAProxy nantu à CentOS 8
Perchè HAProxy hè una applicazione open source in rapida evoluzione, a distribuzione dispunibule per voi in i repositori standard di CentOS pò esse micca l'ultima versione. Per sapè l'ultima versione, eseguite u cumandimu seguitu:
sudo yum info haproxy
HAProxy furnisce sempre trè versioni stabili da sceglie: e duie versioni supportate più recenti è a terza versione più vechja chì riceve sempre aghjurnamenti critichi. Pudete sempre verificà l'ultima versione stabile listata nantu à u situ web di HAProxy è poi decide quale versione vulete travaglià.
In questa guida, avemu da stallà l'ultima versione stabile 2.0, chì ùn era ancu dispunibile in i repositori standard à u mumentu di a scrittura. Vi tuccherà à stallà lu da a fonte uriginale. Ma prima, verificate s'ellu avete scontru i cundizioni necessarii per scaricà è cumpilà u prugramma.
sudo yum install gcc pcre-devel tar make -y
Scaricate u codice fonte cù u cumandimu sottu. Pudete verificà s'ellu ci hè una versione più nova dispunibile in
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Una volta u scaricamentu hè cumpletu, estrae i fugliali cù u cumandimu sottu:
tar xzvf ~/haproxy.tar.gz -C ~/
Cambia à u repertoriu fonte sbulicatu:
cd ~/haproxy-2.0.7
Allora compilate u prugramma per u vostru sistema:
make TARGET=linux-glibc
È infine stallà HAProxy stessu:
sudo make install
Avà HAProxy hè stallatu, ma hè bisognu di alcune manipulazioni supplementari per fà u travagliu. Cuntinuemu à stallà u software è i servizii sottu.
Configurazione di HAProxy per u vostru servitore
Avà aghjunghje i seguenti cartulari è i schedarii di statistiche per e entrate HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Crea un ligame simbolicu per i binari per pudè eseguisce cumandamenti HAProxy cum'è un usu normale:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Se vulete aghjunghje u proxy à u vostru sistema cum'è serviziu, copiate u schedariu haproxy.init da l'esempi à u vostru cartulare /etc/init.d. Edite i permessi di u schedariu in modu chì u script correrà, poi ricaricà u daemon systemd:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Avete ancu bisognu di permette à u serviziu di riavvia automaticamente à l'iniziu di u sistema:
sudo chkconfig haproxy on
Per comodità, hè ancu cunsigliatu per aghjunghje un novu utilizatore per eseguisce HAProxy:
sudo useradd -r haproxy
Dopu quì, pudete cuntrollà u numeru di versione installata di novu cù u cumandimu seguente:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
In u nostru casu, a versione duveria esse 2.0.7, cum'è mostra in a pruduzzioni di mostra sopra.
Infine, u firewall predeterminatu in CentOS 8 hè abbastanza restrittivu per stu prughjettu. Aduprate i seguenti cumandamenti per attivà i servizii necessarii è resettate u firewall:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Configurazione di un equilibratore di carica
L'installazione di HAProxy hè un prucessu abbastanza simplice. Essenzialmente, tuttu ciò chì duvete fà hè di dì à HAProxy quali cunnessione deve esse à sente è induve trasmette.
Questu hè fattu creendu un schedariu di cunfigurazione /etc/haproxy/haproxy.cfg cù paràmetri di definizione. Pudete leghje nantu à l'opzioni di cunfigurazione HAProxy
Bilanciamentu di a carica à u stratu di trasportu (stratu 4)
Cuminciamu cù a cunfigurazione di basa. Crea un novu schedariu di cunfigurazione, per esempiu usendu vi cù u cumandimu sottu:
sudo vi /etc/haproxy/haproxy.cfg
Aghjunghjite e seguenti sezzioni à u schedariu. Sustituisce server_name quellu chì deve chjamà i vostri servitori nantu à a pagina di statistiche, è privat_ip - indirizzi IP privati di i servitori à quale vulete dirige u trafficu web. Pudete cuntrollà l'indirizzi IP privati
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 http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
Questu definisce un equilibratore di carica di a capa di trasportu (layer 4) chjamatu esternamente http_front listening in u portu 80, chì poi dirige u trafficu à u backend predeterminatu chjamatu http_back. Statistiche supplementari /haproxy?stats cunnetta a pagina di statistiche à l'indirizzu specificatu.
Diversi algoritmi di bilanciamentu di carica.
A specificazione di i servitori in a sezione backend permette à HAProxy di utilizà quelli servitori per equilibrà a carica secondu l'algoritmu round robin quandu hè pussibule.
L'algoritmi di equilibriu sò usati per determinà quale servitore in u backend ogni cunnessione hè mandata. Eccu alcuni di l'opzioni utili:
- Roundrobin: ogni servitore hè adupratu à turnu secondu u so pesu. Questu hè l'algoritmu più liscia è più ghjustu quandu u tempu di trasfurmazioni di i servitori ferma distribuitu uniformemente. Stu algoritmu hè dinamicu, chì vi permette di aghjustà u pesu di u servitore nantu à a mosca.
- Leastconn: u servitore cù u menu di cunnessione hè sceltu. Round robin hè realizatu trà i servitori cù a stessa carica. L'usu di questu algoritmu hè cunsigliatu per sessioni longu cum'è LDAP, SQL, TSE, etc., ma micca assai adattatu per sessioni brevi cum'è HTTP.
- Primu: u primu servitore cù slots di cunnessione dispunibili riceve a cunnessione. I servitori sò selezziunati da l'ID numericu più bassu à u più altu, chì per difettu currisponde à a pusizione di u servitore in a splutazioni. Quandu u servitore righjunghji u valore maxconn, u servitore prossimu hè utilizatu.
- Source: L'indirizzu IP di l'urigine hè hashed è divisu da u pesu tutale di i servitori in esecuzione per determinà quale servitore riceverà a dumanda. Cusì, u listessu indirizzu IP di u cliente andarà sempre à u stessu servitore, mentre chì i servitori restanu invariati.
Configurazione di l'equilibriu di carica à u livellu di l'applicazione (layer 7)
Un'altra opzione dispunibule hè di cunfigurà u bilanciu di carica per travaglià à a capa di l'applicazione (layer 7), chì hè utile quandu e parte di a vostra applicazione web sò situate in diversi ospiti. Questu pò esse ottenutu da throttling u trasferimentu di a cunnessione, per esempiu per URL.
Apertura u schedariu di cunfigurazione HAProxy cù un editore di testu:
sudo vi /etc/haproxy/haproxy.cfg
Allora cunfigurate i segmenti di frontend è backend secondu l'esempiu sottu:
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 check
U frontend dichjara una regula ACL chjamata url_blog chì si applica à tutte e cunnessione cù i percorsi chì cumincianu cù /blog. Use_backend specifica chì e cunnessione chì currispondenu à a cundizione url_blog deve esse servuta da u backend chjamatu blog_back è tutte e altre dumande sò trattate da u backend predeterminatu.
In u back-end, a cunfigurazione stabilisce dui gruppi di servitori: http_back, cum'è prima, è un novu chjamatu blog_back, chì gestisce e cunnessione à example.com/blog.
Dopu avè cambiatu i paràmetri, salvate u schedariu è riavvia HAProxy cù u cumandimu seguente:
sudo systemctl restart haproxy
Sè avete qualchì avvirtimentu o errore durante l'iniziu, verificate a cunfigurazione per qualsiasi è assicuratevi di avè creatu tutti i fugliali è e cartelle necessarii, è dopu pruvate à riavvia di novu.
Pruvate a stallazione
Una volta HAProxy hè cunfiguratu è in esecuzione, apre l'indirizzu IP publicu di u servitore di bilanciu di carica in un navigatore è verificate se avete cunnessu à u backend currettamente. U paràmetru di stats uri in a cunfigurazione crea una pagina di statistiche à l'indirizzu specificatu.
http://load_balancer_public_ip/haproxy?stats
Quandu caricate a pagina di stats, se tutti i vostri servitori sò verdi, allora a stallazione hè stata successu!
A pagina di statistiche cuntene alcune informazioni utili per seguità i vostri òspiti web, cumprese u tempu up / down è u numeru di sessioni. Se u servitore hè marcatu in rossu, assicuratevi chì u servitore hè attivu è chì pudete ping da u balancer di carica.
Se u vostru balancer di carica ùn risponde micca, assicuratevi chì e cunnessione HTTP ùn sò micca bluccate da un firewall. Assicuratevi ancu chì HAProxy travaglia cù u cumandimu quì sottu:
sudo systemctl status haproxy
Prutezzione di a pagina di statistiche cù una password
In ogni casu, se a pagina di stats hè solu listata in u frontend, allora hè aperta à u publicu, chì puderia micca esse una bona idea. Invece, pudete assignà u vostru propiu numeru di portu aghjunghjendu l'esempiu sottu à a fine di u vostru schedariu haproxy.cfg. Sustituisce gatti и codice à qualcosa di sicuru:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Dopu avè aghjustatu u novu gruppu di ascoltatori, sguassate u vechju riferimentu uri di stats da u gruppu frontend. Quandu hè finitu, salvate u schedariu è riavvia HAProxy.
sudo systemctl restart haproxy
Dopu apre u bilanciu di carica di novu cù u novu numeru di portu è accede cù u nome d'utilizatore è a password chì avete specificatu in u schedariu di cunfigurazione.
http://load_balancer_public_ip:8181
Assicuratevi chì tutti i vostri servitori sò sempre verdi è dopu apre solu l'IP di bilanciu di carica senza alcun numeru di portu in u vostru navigatore.
http://load_balancer_public_ip/
Se tenete almenu una varietà di pagine di destinazione nantu à i vostri servitori internu, vi vede chì ogni volta chì ricaricà a pagina, avete una risposta da un altru host. Pudete pruvà diversi algoritmi di equilibriu in a sezione di cunfigurazione o vede
Conclusioni: HAProxy Load Balancer
Felicitazioni per a cunfigurazione successu di u vostru equilibratore di carica HAProxy! Ancu cù una configurazione di basa di equilibriu di carica, pudete migliurà assai u rendiment è a dispunibilità di a vostra applicazione web. Questa guida hè solu una introduzione à l'equilibriu di carica cù HAProxy, chì hè capace di assai più di ciò chì pò esse descrittu in una guida di installazione rapida. Hè ricumandemu di sperimentà diverse cunfigurazioni cù l'usu
Utilizendu parechji ospiti per prutege u vostru serviziu web cù headroom, u bilanciu di carica stessu pò ancu rapprisintà un puntu di fallimentu. Pudete ancu migliurà l'alta dispunibilità creendu una IP flottante trà parechje balancers di carica. Pudete sapè più nantu à questu in u nostru
Più nantu à u corsu
Source: www.habr.com