Load balancer-ul: cum împarte traficul între mai multe servere
Un load balancer distribuie cererile între mai multe servere ca niciunul să nu se supraîncarce. Află cum funcționează și ce algoritmi de bază există.
// cuprins7 secțiuni
Un load balancer este un sistem care primește cererile venite de la utilizatori și le distribuie între mai multe servere, astfel încât niciunul să nu fie supraîncărcat. Rezultatul este un serviciu mai rapid, mai stabil și mai ușor de extins. Dacă un server se defectează, traficul poate fi redirecționat către cele care funcționează.
Ce face, concret, un load balancer?
Un load balancer stă între utilizatori și servere și hotărăște, pentru fiecare cerere, către ce server o trimite. Utilizatorul vede o singură adresă, dar în spatele ei pot lucra mai multe mașini identice. Echilibrarea încărcării aduce trei avantaje principale: performanță, disponibilitate și posibilitatea de a crește capacitatea adăugând servere.
Gândește-te la un magazin cu mai multe case de marcat și un angajat care îndrumă clienții spre casa cea mai liberă. Fără el, toți s-ar așeza la aceeași casă, iar coada ar crește inutil. Load balancerul joacă rolul acelui angajat, dar o face în fracțiuni de secundă.
Cum alege serverul potrivit?
Alegerea se face după un algoritm de distribuție, iar cei de bază sunt simpli de înțeles. Fiecare are avantaje și limite:
| Algoritm | Cum funcționează | Când se potrivește |
|---|---|---|
| Round robin | Cererile merg pe rând la fiecare server | Servere similare, cereri de dimensiuni apropiate |
| Round robin cu ponderi | Serverele mai puternice primesc mai multe cereri | Servere cu capacități diferite |
| Cele mai puține conexiuni | Cererea merge la serverul cel mai puțin ocupat | Cereri cu durate foarte diferite |
| Hash pe adresa clientului | Același client ajunge mereu la același server | Când e nevoie de continuitate între cereri |
Nu există un algoritm perfect pentru toate situațiile. Alegerea depinde de tipul aplicației, de diferențele dintre servere și de cât de variate sunt cererile.
Verificarea stării serverelor
Un load balancer bun nu trimite trafic către un server defect. El face verificări periodice, numite health checks, de exemplu o cerere de test către o pagină anume. Dacă serverul nu răspunde corect, este scos temporar din rotație și reintrat după ce își revine. Așa, o defecțiune locală nu devine o problemă pentru toți utilizatorii.
Ce înseamnă sesiunile persistente?
Sesiunile persistente (sticky sessions) înseamnă că un utilizator este trimis constant la același server pe durata unei vizite. Sunt utile atunci când aplicația păstrează date temporare, cum ar fi un coș de cumpărături, direct în memoria unui server. Dezavantajul este că distribuția devine mai puțin uniformă, iar la căderea serverului datele din sesiune se pierd.
Multe aplicații evită problema stocând sesiunile într-un loc comun, accesibil tuturor serverelor. Pentru date care trebuie să rămână identice pe mai multe mașini, merită să citești despre replicarea datelor și felul în care rămân identice copiile de pe mai multe servere.
Ce tipuri de load balancer există?
Există load balancere care lucrează la niveluri diferite ale comunicării. Cele de nivel transport doar redirecționează conexiunile, fără să se uite în conținut, ceea ce le face foarte rapide. Cele de nivel aplicație analizează cererea, de pildă adresa cerută sau antetele, și pot trimite imaginile la un grup de servere, iar paginile dinamice la altul.
Pot fi implementate ca dispozitive fizice, ca program instalat pe un server sau ca serviciu oferit de un furnizor de cloud. Ultima variantă este populară pentru că se ajustează automat la volumul de trafic. Cum își fac loc aceste servicii în infrastructură se leagă de felul în care sunt construite centrele de date, iar o privire de ansamblu asupra platformelor găsești în ghidul despre cloud computing explicat pe înțeles.
Care sunt limitele load balancerului?
Un load balancer nu rezolvă toate problemele de performanță. Dacă baza de date este lentă sau dacă aplicația are o eroare, adăugarea de servere nu schimbă mare lucru. În plus, load balancerul însuși poate deveni un punct unic de defecțiune; de aceea, în configurațiile serioase se folosesc două sau mai multe, în pereche. Merită cunoscut și felul în care bazele de date își distribuie datele, iar diferențele sunt discutate în articolul despre bazele de date SQL și NoSQL. Pentru alte teme din același domeniu, vezi categoria Cloud și date.
Pe scurt
- Load balancerul distribuie cererile între mai multe servere pentru stabilitate și viteză.
- Algoritmii de bază sunt round robin, ponderile, cele mai puține conexiuni și hash-ul pe client.
- Verificările de stare scot automat serverele defecte din rotație.
- Nu înlocuiește optimizarea aplicației sau a bazei de date.
Întrebări frecvente
Am nevoie de load balancer pentru un site mic?
De obicei nu. Un singur server bine configurat este suficient pentru multe site-uri; un load balancer devine util când crește traficul sau când ai nevoie de disponibilitate ridicată.
Load balancerul este același lucru cu un firewall?
Nu. Load balancerul distribuie traficul, în timp ce firewall-ul filtrează ce are voie să intre sau să iasă, deși unele produse îndeplinesc ambele roluri.
Ce se întâmplă dacă un server cade?
După verificările de stare, load balancerul îl scoate din rotație și trimite cererile către serverele rămase, atât timp cât acestea au capacitate suficientă.


