Site-urile web sunt printre cele mai folosite lucruri din mediul online, pe langa serviciul de email. Organizatiile care isi desfasoara activitatea pe baza unui site web trebuie sa se asigure ca acel site lucreaza in parametrii optimi tot timpul, pentru a-si putea deservi clientii si, evident, pentru a face profit. Companiile care activeaza in domenii ca retail, comert online, transporturi, industria hoteliera, toate isi fundamenteaza existenta pe disponibilitatea site-ului web. Acesta trebuie sa fie “up and running” 24×7, sa aiba intregul continut disponibil si sa ofere o conexiune stabila, sigura si rapida. Cele mai stresante perioade pentru site-urile web ale unor astfel de companii sunt sarbatorile si campaniile agresive de marketing gen “Black Friday”. Insa pot fi si alte momente din an cand site-urie vor trebui sa suporte volume mari de trafic.
Un singur server care gazduieste site-ul web cu siguranta nu va fi suficient ca sa deserveasca toate conexiunile HTTP primite, mai ales daca vorbim de o aplicatie disponibila global (de exemplu, booking.com). Dupa un anumit numar de conexiuni, server-ul va ramane fara resurse disponibile si va incepe sa refuze “sa vorbeasca” cu clientii si se va inchide.
Prima solutie care ne vine in minte este sa punem pe “steroizi” serverul: ii punem mai multa memorie, disk-uri mai rapide, procesoare mai puternice. Insa, metoda aceasta isi atinge foarte repede potentialul maxim. Mai mult, aplicatii ca NodeJS (foarte populara in dezvoltarea codului pentru site-uri web) nu vor vedea imbunatatiri semnificative aduse de surplusul de resurse.
A doua solutie ar fi sa “clonam” de ori cate ori este nevoie server-ul web. Asa, site-ul web ar putea comunica cu mai multi clienti simultan, marind capacitatea disponibila in perioadele aglomerate. Apare o noua problema 😊 cand un client doreste sa acceseze site-ul, va primi o singura adresa IP, si nu o lista din care sa incerce un anumit server. De unde va sti clientul ca in Internet exista mai multe copii ale site-ului si cum va sti la care dintre acestea sa se conecteze? Aici intra in ecuatie echipamentul numit load balancer. Clientul, in loc sa se conecteze direct la server-ul web, se va conecta la load balancer. Acesta va fi cel care va mijloci conectivitatea dintre client catre unul din servere care gazduiesc site-ul. Astfel, load balancer-ul aduce cu sine doua mari avantaje pentru organizatie: distributia traficului si redundanta la nivel de accesibilitate pentru site-ul web.
Load balancer-ul va tine o lista cu serverele disponibile si gradul de incarcare al fiecaruia. Astfel, load balancer-ul va sti catre care server web va trimite conexiunea ceruta de un utilizator. Administratorii site-ului vor putea folosi cate instante de server vor dori. Ei vor trebui doar sa le creeze, clonand un template deja verificat si validat. Treaba cea mai dificila ii revine load balancer-ului care urmareste volumul de trafic procesat de fiecare server in parte si directioneaza noile cereri de pagina web catre servere mai putin solicitate la acel moment de timp.
Cum anume este impartit traficul intre servere?
Pentru acest task, un load balancer poate folosi una din urmatoarele metode:
- round robin: load balancer-ul va distribui traficul in ordine secventiala intre servere web disponibile. Fiecare server isi asteapta randul ca sa deserveasca o conexiune.
- trimiterea traficului catre serverul cel mai putin folosit, cu gradul de incarcare cel mai mic si cu cel mai mic numar de conexiuni active.
- folosirea unui server specific pentru conexiunile venite de la anumite adrese IP. Astfel, se poate face de exemplu o repartizare a traficului in functie de geolocatia clientului care a facut cererea sau se pot implementa reguli de protectie pentru IP-uri care sunt identificate ca surse de malware pe listele furnizorilor de securitate cibernetica.
Disponibilitatea globala a resurselor, posibilitatea de a avea instante ale unui server in orice parte a lumii si scalabilitatea nativa a tehnologiei cloud care poate acomoda un numar oricat de mare de utilizatori ai unei aplicatii face ca un load balancer sa fie un tool firesc oferit de un furnizor de servicii cloud clientilor sai. Amazon Web Services ofera serviciul de Elastic Load Balancing, Microsoft ofera Azure Load Balancer, iar Google are serviciul de Cloud Load Balancing. Toate aceste produse ofera functionalitati precum posibilitatea de a distribui traficul HTTP, HTTPS si TCP, decriptarea traficului SSL, scalare automatizata, logare cererilor web pentru debuging sau pentru user analytics.
Specialistii cloud din divizia de tehnologie Dendrio va pot ajuta prin servicii de consultanta cu privire la alegerea celui mai potrivit load balancer pentru aplicatia dumneavoastra si prin servicii de implementare conform celor mai bune practici din industrie astfel incat utilizatorii site-ului web sa beneficieze de o experienta calitativa si in deplina siguranta.
Mihai Dumitrascu, Sr Systems Engineer