{"id":137366,"date":"2024-03-15T15:49:03","date_gmt":"2024-03-15T14:49:03","guid":{"rendered":"https:\/\/fotc.com\/?p=137366"},"modified":"2024-03-20T13:59:50","modified_gmt":"2024-03-20T12:59:50","slug":"load-balancer-tutorial","status":"publish","type":"post","link":"https:\/\/fotc.com\/ro\/blog\/load-balancer-tutorial\/","title":{"rendered":"Ce este un load balancer \u2013 defini\u021bie \u0219i cum s\u0103 \u00eel folosi\u021bi [TUTORIAL]"},"content":{"rendered":"\n
Traficul online a \u00eenregistrat un boom \u00een ultimul deceniu. Utilizatorii web au a\u0219tept\u0103ri tot mai mari de la viteza de acces \u0219i securitatea serviciilor pe care le folosesc. De cealalt\u0103 parte, furnizorii acestora au a\u0219tept\u0103ri tot mai mari de la serverele web care le gestioneaz\u0103 traficul. Aici intr\u0103 \u00een scen\u0103 o strategie de optimizare a sarcinilor de lucru – load balancing sau load balancer. \u00cen materialul urm\u0103tor, \u00ee\u021bi vom explica ce este load balancer, cum func\u021bioneaz\u0103 \u0219i cum s\u0103 te asiguri c\u0103 distribui traficul \u00eentr-o manier\u0103 sigur\u0103.<\/p>\n\n\n\n
Echilibrarea \u00eenc\u0103rc\u0103turii (nr. eng load balancing) se refer\u0103 la distribu\u021bia sarcinilor pe mai multe resurse sau servere. Astfel c\u0103 exist\u0103 load balancing bazat pe hardware, dar \u0219i load balancing bazat pe software. Primele dintre acestea necesit\u0103 un dispozitiv fizic dedicat numit load balancer.<\/p>\n\n\n\n
Load balancing-ul software ruleaz\u0103 pe servere sau pe ma\u0219ini virtuale din cloud, optimiz\u00e2nd utilizarea capacit\u0103\u021bii de calcul pentru fiecare dintre resurse. \u00cen acest articol, ne vom concentra asupra load balancerelor bazate pe software, cu prec\u0103dere pe load balancing \u00een cloud, \u00een Google Cloud<\/a>. <\/p>\n\n\n\n Load balancing \u00een cloud este o solu\u021bie complet distribuit\u0103, definit\u0103 de software. Aceasta direc\u021bioneaz\u0103 traficul c\u0103tre mai multe backend-uri pentru a evita congestionarea \u0219i pentru a asigura o laten\u021b\u0103 sc\u0103zut\u0103. Exist\u0103 diferite tipuri de echilibrare a \u00eenc\u0103rc\u0103turii, \u00een func\u021bie de tipul de trafic cu care ave\u021bi de-a face \u2013 global sau local.<\/p>\n\n\n\n Putem distinge dou\u0103 tipuri de algoritmi de echilibrare a sarcinii: statici \u0219i dinamici.<\/p>\n\n\n\n Algoritmii statici <\/strong>au reguli fixe \u00een func\u021bie de care proceseaz\u0103 traficul utilizatorilor. Ei m\u0103soar\u0103 traficul care intr\u0103 \u0219i \u00eel distribuie \u00eentre diferite servere, f\u0103r\u0103 a lua \u00een calcul performan\u021ba fiec\u0103rui server.<\/p>\n\n\n\n Imagineaz\u0103-\u021bi un punct de control securitate la aeroport \u0219i o serie de por\u021bi care \u00eempart \u00een mod egal pasagerii care sosesc la acesta. Sistemul va func\u021biona corespunz\u0103tor dac\u0103 toate aceste por\u021bi proceseaz\u0103 \u00een acela\u0219i timp num\u0103rul de pasageri. Dac\u0103, totu\u0219i, unul dintre punctele de securitate se mi\u0219c\u0103 mai \u00eencet, va cauza un dezechilibru pe care, \u00een acest exemplu, algoritmul de load balancing static nu \u00eel poate lua \u00een considerare.<\/em><\/p>\n\n\n\n Un load balancer static distribuie uniform traficul \u00eentre toate serverele din re\u021bea. Este, prin urmare, o solu\u021bie bun\u0103 pentru un site web cu con\u021binut static<\/strong>, deoarece traficul este de obicei foarte previzibil pentru astfel de exemple.<\/p>\n\n\n\n Algoritmii dinamici<\/strong> iau \u00een considerare starea curent\u0103 \u0219i disponibilitatea tuturor serverelor disponibile. Transfer\u0103 apoi traficul de la serverele care performeaz\u0103 slab asupra serverelor subutilizate. \u00cen acest fel, traficul r\u0103m\u00e2ne uniform \u0219i ne\u00eentrerupt chiar dac\u0103 serverele individuale sunt mai pu\u021bin eficiente.<\/p>\n\n\n\n Reveni<\/em>m la exemplul cu securitatea din aeroport<\/em>. Un load balancer dinamic ar distribui pasagerii la por\u021bile de securitate cel mai pu\u021bin ocupate, indiferent de calea de acces a acestora. \u00cen acest fel, dac\u0103 o poart\u0103 este mai lent\u0103 \u00een procesarea pasagerilor, celelalte pot prelua volumul suplimentar de lucru.<\/em><\/p>\n\n\n\n Un load balancing dinamic <\/strong>este, prin urmare, o solu\u021bie adecvat\u0103 site-urilor web \u0219i aplica\u021biilor care \u00eent\u00e2mpin\u0103 cre\u0219teri \u0219i sc\u0103deri de trafic greu de anticipat<\/strong>. Un load balancer dinamic asigur\u0103 o disponibilitate ridicat\u0103 a aplica\u021biilor, chiar dac\u0103 parte din servere performeaz\u0103 slab. Acestea sunt, totu\u0219i, mai greu de configurat.<\/p>\n\n\n\n Exist\u0103 dou\u0103 tipuri de load balancing: pentru aplica\u021bii \u0219i pentru re\u021bea. <\/p>\n\n\n\n Aplica\u021bia Load Balancer distribuie traficul HTTP \u0219i HTTPS c\u0103tre backend-uri, indiferent dac\u0103 acestea sunt g\u0103zduite intern sau extern. Func\u021bioneaz\u0103 la nivelul aplica\u021biei<\/strong> (Layer 7) \u0219i \u00eel po\u021bi utiliza pentru a direc\u021biona traficul pe baza con\u021binutului din fiecare solicitare (de exemplu, URL-ul sau antetul HTTP).<\/p>\n\n\n\n Sarcina care necesit\u0103 echilibrare este cel mai adesea traficul de re\u021bea sau solicit\u0103rile clien\u021bilor<\/strong>. Un load balancer de re\u021bea opereaz\u0103 la nivelul de transport (Layer 4) \u0219i traficul pe baza datelor protocolului IP. Scopul load balancerului este de a optimiza performan\u021ba \u0219i de a asigura fiabilitatea \u0219i disponibilitatea serviciilor.<\/p>\n\n\n\n \u00cen procesul de echilibrare a \u00eenc\u0103rc\u0103turii, traficul este distribuit \u00eentre mai multe servere. De exemplu, re\u021belele de livrare de con\u021binut (CDN) con\u021bin adesea un echilibror de \u00eenc\u0103rcare pentru a putea livra con\u021binut \u00eentr-o manier\u0103 rapid\u0103 \u0219i fiabil\u0103, indiferent de traficul utilizatorilor.<\/p>\n\n\n\n Distribu\u021bia sarcinilor poate fi efectuat\u0103 \u0219i la nivel de domeniu prin configurarea unui domeniu \u00een sistemul de nume de domeniu<\/a> (DNS). Prin echilibrarea \u00eenc\u0103rc\u0103turii DNS, cererile utilizatorilor c\u0103tre domeniu<\/strong> sunt distribuite pe un grup de servere.<\/p>\n\n\n\n Un caz special de load balancing se refer\u0103 la distribu\u021bia \u00een cloud<\/strong>. Dac\u0103 aplica\u021bia voastr\u0103 este \u00een cre\u0219tere \u00een popularitate, cel mai probabil o s\u0103 v\u0103 intereseze \u0219i preocupe scalarea corect\u0103 a acesteia. De asemenea, va trebui s\u0103 lua\u021bi \u00een considerare optimizarea \u0219i securizarea aplica\u021biei, men\u021bin\u00e2nd \u00een acela\u0219i timp satisfac\u021bia utilizatorului. Aici intervine load balancing ca relevan\u021b\u0103.<\/p>\n\n\n\n S\u0103 presupunem c\u0103 unul dintre utilizatorii aplica\u021biei tale se afl\u0103 \u00een New York, \u00een regiunea US-East4. Pentru ca aplica\u021bia s\u0103 func\u021bioneze cel mai eficient, este o idee bun\u0103 s\u0103 implementezi o instan\u021b\u0103 backend \u00een aceast\u0103 regiune \u0219i s\u0103 configurezi o adres\u0103 IP virtual\u0103 de load balancing.<\/p>\n\n\n\n Dac\u0103 descoperi c\u0103 \u0219i alte regiuni \u00eenregistreaz\u0103 o cre\u0219tere a num\u0103rului de utilizatori, creeaz\u0103 \u0219i acolo instan\u021be backend. F\u0103c\u00e2nd acest lucru, po\u021bi fi sigur c\u0103 nu vor exista modific\u0103ri la adresa IP virtual\u0103 sau la set\u0103rile serviciului DNS.<\/p>\n\n\n\n Crearea de instan\u021be \u00een diferite regiuni \u00ee\u021bi va oferi o oarecare flexibilitate. Ce se va \u00eent\u00e2mpla dac\u0103, de exemplu, utilizatorii din India, direc\u021biona\u021bi c\u0103tre instala\u021biile din acea regiune, le vor g\u0103si supra\u00eenc\u0103rcate?<\/p>\n\n\n\n \u00cen acest caz, instan\u021ba va \u00eencepe s\u0103 se extind\u0103 automat pentru a r\u0103spunde la \u00eenc\u0103rcarea suplimentar\u0103. Astfel, utilizatorii vor fi redirec\u021biona\u021bi c\u0103tre instan\u021be backend din alt\u0103 regiune pe durata acestor proceduri. Odat\u0103 ce instan\u021bele din regiunea ini\u021bial\u0103 au fost scalate f\u0103r\u0103 probleme, utilizatorii vor fi apoi direc\u021biona\u021bi c\u0103tre instan\u021bele originale.<\/p>\n\n\n\n Load balancing \u00een cloud utilizeaz\u0103 adrese IP virtuale anycast, <\/strong>oferind o singur\u0103 adres\u0103 front-end IP virtual\u0103 global\u0103. Ceea ce este deosebit de important pentru utilizatori este faptul c\u0103 load balancing \u00een cloud ofer\u0103 failover pe mai multe regiuni, scalare automat\u0103 rapid\u0103 \u0219i scalare la milioane de interog\u0103ri pe secund\u0103. <\/p>\n\n\n\n \u00centr-o aplica\u021bie cu trei niveluri, dup\u0103 front-end \u00eent\u00e2lne\u0219ti software-ul intermediat \u0219i apoi surse de date cu care po\u021bi interac\u021biona pentru a \u00eendeplini cererea utilizatorului. Dac\u0103 vrei s\u0103 \u00eencorporezi algoritmi de load balancing, vei avea nevoie de un al patrulea strat suplimentar. Acesta este un load balancer intern,<\/strong> situat \u00eentre front-end \u0219i celelalte straturi interne.<\/p>\n\n\n\n Load balancingul intern de nivel 4<\/strong> este destinat traficului TCP\/UDP conform RFC 1918 VIP, unde adresa IP a clientului este p\u0103strat\u0103. \u00cen acest caz, ob\u021bii verific\u0103ri automate de status \u00een absen\u021ba unui server proxy de mijloc. Re\u021beaua definit\u0103 de software \u0219i controalele planului de date sunt utilizate pentru load balancing.<\/p>\n\n\n\n S\u0103 arunc\u0103m o privire la modelul practic Cloud Load Balancing din Google Cloud<\/a>. Adresele IP virtuale globale anycast, IPv4 sau IPv6 sunt disponibile pentru echilibrarea \u00eenc\u0103rc\u0103rii HTTP(S) global\u0103, asociat\u0103 cu o regul\u0103 de redirec\u021bionare care direc\u021bioneaz\u0103 traficul c\u0103tre serverul proxy \u021bint\u0103 care \u00eencheie sesiunea client. Desigur, \u00een cazul HTTP(S) acesta este \u0219i locul \u00een care implementezi certificatele.<\/p>\n\n\n\n Important este c\u0103 \u00een acest caz nu vorbim de un singur dispozitiv, ci de o logic\u0103 distribuit\u0103 \u00een \u00eentreaga infrastructur\u0103. Harta URL configurat\u0103 ofer\u0103 rutarea Layer 7 \u0219i direc\u021bioneaz\u0103 solicitarea clientului c\u0103tre serviciul backend corespunz\u0103tor. Serviciile de backend pot fi grupuri gestionate de instan\u021be sau grupuri de puncte finale de re\u021bea pentru \u00eenc\u0103rc\u0103turi de lucru containerizate.<\/p>\n\n\n\n Tot aici se determin\u0103 capacitatea \u0219i statusul serviciului, iar Cloud CDN permite ca con\u021binutul s\u0103 fie stocat \u00een cache pentru a \u00eembun\u0103t\u0103\u021bi performan\u021ba. Aici pute\u021bi configura regulile firewall pentru a controla traficul c\u0103tre \u0219i dinspre backend.<\/p>\n\n\n\n Configura\u021bia intern\u0103 de load balancing func\u021bioneaz\u0103 \u00een acela\u0219i mod. Regula de redirec\u021bionare r\u0103m\u00e2ne valabil\u0103, dar \u00een acest caz indic\u0103 direct serviciul backend. O regul\u0103 de redirec\u021bionare are o adres\u0103 IP virtual\u0103, un protocol \u0219i p\u00e2n\u0103 la cinci porturi.<\/p>\n\n\n\n Google \u00ee\u021bi ofer\u0103 un set cuprinz\u0103tor de bune practici de securitate. Care sunt acestea?<\/p>\n\n\n\n \u00cen primul r\u00e2nd, \u00eencearc\u0103 s\u0103 utilizezi SSL peste tot.<\/strong> Cu load balancing proxy HTTP(S) \u0219i SSL, po\u021bi utiliza certificate gestionate de Google. \u00cen acest caz, Google este responsabil pentru furnizarea \u0219i gestionarea ciclului de via\u021b\u0103 al certificatului SSL.<\/p>\n\n\n\nCe este un load balancer \u00een cloud?<\/h2>\n\n\n\n
Algoritmi pentru load balancing: statici vs. dinamici<\/h2>\n\n\n\n
Load balancing static<\/h3>\n\n\n\n
Load balancing dinamic<\/h3>\n\n\n\n
Load balancing pentru aplica\u021bii \u0219i load balancing pentru re\u021bele<\/h2>\n\n\n\n
Algoritmi de load balancing a aplica\u021biei<\/h3>\n\n\n\n
<\/figure><\/div>\n\n\n\nLoad balancing pentru re\u021bea <\/h3>\n\n\n\n
<\/figure><\/div>\n\n\n\nLoad balancing DNS<\/h3>\n\n\n\n
Load balancing \u00een cloud<\/h3>\n\n\n\n
Cum func\u021bioneaz\u0103 load balancing?<\/h2>\n\n\n\n
Scalare automat\u0103<\/h3>\n\n\n\n
Middleware de load balancing<\/h3>\n\n\n\n
Cum se utilizeaz\u0103 load balancing \u00een cloud?<\/h2>\n\n\n\n
<\/figure>\n\n\n\nCum asiguri securitatea cu un load balancer \u00een cloud?<\/h2>\n\n\n\n