Installazione di HAProxy Load Balancer in CentOS

A traduzzione di l'articulu hè stata preparata à a vigilia di l'iniziu di u corsu amministratore Linux. Virtualizazione è clustering »

Installazione di HAProxy Load Balancer in CentOS

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è unu di i software di bilanciamentu di carica open source più populari chì furnisce ancu alta dispunibilità è funziunalità di proxy.

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. Debian 8 и Ubuntu 16.

Installazione di HAProxy Load Balancer in CentOS

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 Pagina di scaricamentu di HAProxy.

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 nantu à a pagina di documentazionese vulete sapè più nantu à questu.

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 in u pannellu di cuntrollu UpCloud è nantu à a tabulazione Riticì privatu nantu à u menu Network.

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!

Installazione di HAProxy Load Balancer in CentOS

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 documentazione cumpleta.

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 una vasta documentazionedispunibule per HAProxy è poi cuminciate à pianificà l'equilibriu di carica per u vostru ambiente di produzzione.

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 articulu nantu à l'indirizzi IP flottanti in UpCloud.

Più nantu à u corsu amministratore Linux. Virtualizazione è clustering »***

Source: www.habr.com

Add a comment