Traficul online a înregistrat un boom în ultimul deceniu. Utilizatorii web au așteptări tot mai mari de la viteza de acces și securitatea serviciilor pe care le folosesc. De cealaltă parte, furnizorii acestora au așteptări tot mai mari de la serverele web care le gestionează traficul. Aici intră în scenă o strategie de optimizare a sarcinilor de lucru – load balancing sau load balancer. În materialul următor, îți vom explica ce este load balancer, cum funcționează și cum să te asiguri că distribui traficul într-o manieră sigură.
Ce este și ce înseamnă load balancing?
Echilibrarea încărcăturii (nr. eng load balancing) se referă la distribuția sarcinilor pe mai multe resurse sau servere. Astfel că există load balancing bazat pe hardware, dar și load balancing bazat pe software. Primele dintre acestea necesită un dispozitiv fizic dedicat numit load balancer.
Load balancing-ul software rulează pe servere sau pe mașini virtuale din cloud, optimizând utilizarea capacității de calcul pentru fiecare dintre resurse. În acest articol, ne vom concentra asupra load balancerelor bazate pe software, cu precădere pe load balancing în cloud, în Google Cloud.
Ce este un load balancer în cloud?
Load balancing în cloud este o soluție complet distribuită, definită de software. Aceasta direcționează traficul către mai multe backend-uri pentru a evita congestionarea și pentru a asigura o latență scăzută. Există diferite tipuri de echilibrare a încărcăturii, în funcție de tipul de trafic cu care aveți de-a face – global sau local.
Algoritmi pentru load balancing: statici vs. dinamici
Putem distinge două tipuri de algoritmi de echilibrare a sarcinii: statici și dinamici.
Load balancing static
Algoritmii statici au reguli fixe în funcție de care procesează traficul utilizatorilor. Ei măsoară traficul care intră și îl distribuie între diferite servere, fără a lua în calcul performanța fiecărui server.
Imaginează-ți un punct de control securitate la aeroport și o serie de porți care împart în mod egal pasagerii care sosesc la acesta. Sistemul va funcționa corespunzător dacă toate aceste porți procesează în același timp numărul de pasageri. Dacă, totuși, unul dintre punctele de securitate se mișcă mai încet, va cauza un dezechilibru pe care, în acest exemplu, algoritmul de load balancing static nu îl poate lua în considerare.
Un load balancer static distribuie uniform traficul între toate serverele din rețea. Este, prin urmare, o soluție bună pentru un site web cu conținut static, deoarece traficul este de obicei foarte previzibil pentru astfel de exemple.
Load balancing dinamic
Algoritmii dinamici iau în considerare starea curentă și disponibilitatea tuturor serverelor disponibile. Transferă apoi traficul de la serverele care performează slab asupra serverelor subutilizate. În acest fel, traficul rămâne uniform și neîntrerupt chiar dacă serverele individuale sunt mai puțin eficiente.
Revenim la exemplul cu securitatea din aeroport. Un load balancer dinamic ar distribui pasagerii la porțile de securitate cel mai puțin ocupate, indiferent de calea de acces a acestora. În acest fel, dacă o poartă este mai lentă în procesarea pasagerilor, celelalte pot prelua volumul suplimentar de lucru.
Un load balancing dinamic este, prin urmare, o soluție adecvată site-urilor web și aplicațiilor care întâmpină creșteri și scăderi de trafic greu de anticipat. Un load balancer dinamic asigură o disponibilitate ridicată a aplicațiilor, chiar dacă parte din servere performează slab. Acestea sunt, totuși, mai greu de configurat.
Load balancing pentru aplicații și load balancing pentru rețele
Există două tipuri de load balancing: pentru aplicații și pentru rețea.
Algoritmi de load balancing a aplicației
Aplicația Load Balancer distribuie traficul HTTP și HTTPS către backend-uri, indiferent dacă acestea sunt găzduite intern sau extern. Funcționează la nivelul aplicației (Layer 7) și îl poți utiliza pentru a direcționa traficul pe baza conținutului din fiecare solicitare (de exemplu, URL-ul sau antetul HTTP).
Load balancing pentru rețea
Sarcina care necesită echilibrare este cel mai adesea traficul de rețea sau solicitările clienților. Un load balancer de rețea operează la nivelul de transport (Layer 4) și traficul pe baza datelor protocolului IP. Scopul load balancerului este de a optimiza performanța și de a asigura fiabilitatea și disponibilitatea serviciilor.
În procesul de echilibrare a încărcăturii, traficul este distribuit între mai multe servere. De exemplu, rețelele de livrare de conținut (CDN) conțin adesea un echilibror de încărcare pentru a putea livra conținut într-o manieră rapidă și fiabilă, indiferent de traficul utilizatorilor.
Load balancing DNS
Distribuția sarcinilor poate fi efectuată și la nivel de domeniu prin configurarea unui domeniu în sistemul de nume de domeniu (DNS). Prin echilibrarea încărcăturii DNS, cererile utilizatorilor către domeniu sunt distribuite pe un grup de servere.
Load balancing în cloud
Un caz special de load balancing se referă la distribuția în cloud. Dacă aplicația voastră este în creștere în popularitate, cel mai probabil o să vă intereseze și preocupe scalarea corectă a acesteia. De asemenea, va trebui să luați în considerare optimizarea și securizarea aplicației, menținând în același timp satisfacția utilizatorului. Aici intervine load balancing ca relevanță.
Cum funcționează load balancing?
Să presupunem că unul dintre utilizatorii aplicației tale se află în New York, în regiunea US-East4. Pentru ca aplicația să funcționeze cel mai eficient, este o idee bună să implementezi o instanță backend în această regiune și să configurezi o adresă IP virtuală de load balancing.
Dacă descoperi că și alte regiuni înregistrează o creștere a numărului de utilizatori, creează și acolo instanțe backend. Făcând acest lucru, poți fi sigur că nu vor exista modificări la adresa IP virtuală sau la setările serviciului DNS.
Scalare automată
Crearea de instanțe în diferite regiuni îți va oferi o oarecare flexibilitate. Ce se va întâmpla dacă, de exemplu, utilizatorii din India, direcționați către instalațiile din acea regiune, le vor găsi supraîncărcate?
În acest caz, instanța va începe să se extindă automat pentru a răspunde la încărcarea suplimentară. Astfel, utilizatorii vor fi redirecționați către instanțe backend din altă regiune pe durata acestor proceduri. Odată ce instanțele din regiunea inițială au fost scalate fără probleme, utilizatorii vor fi apoi direcționați către instanțele originale.
Load balancing în cloud utilizează adrese IP virtuale anycast, oferind o singură adresă front-end IP virtuală globală. Ceea ce este deosebit de important pentru utilizatori este faptul că load balancing în cloud oferă failover pe mai multe regiuni, scalare automată rapidă și scalare la milioane de interogări pe secundă.
Middleware de load balancing
Într-o aplicație cu trei niveluri, după front-end întâlnești software-ul intermediat și apoi surse de date cu care poți interacționa pentru a îndeplini cererea utilizatorului. Dacă vrei să încorporezi algoritmi de load balancing, vei avea nevoie de un al patrulea strat suplimentar. Acesta este un load balancer intern, situat între front-end și celelalte straturi interne.
Load balancingul intern de nivel 4 este destinat traficului TCP/UDP conform RFC 1918 VIP, unde adresa IP a clientului este păstrată. În acest caz, obții verificări automate de status în absența unui server proxy de mijloc. Rețeaua definită de software și controalele planului de date sunt utilizate pentru load balancing.
Cum se utilizează load balancing în cloud?
Să aruncăm o privire la modelul practic Cloud Load Balancing din Google Cloud. Adresele IP virtuale globale anycast, IPv4 sau IPv6 sunt disponibile pentru echilibrarea încărcării HTTP(S) globală, asociată cu o regulă de redirecționare care direcționează traficul către serverul proxy țintă care încheie sesiunea client. Desigur, în cazul HTTP(S) acesta este și locul în care implementezi certificatele.
Important este că în acest caz nu vorbim de un singur dispozitiv, ci de o logică distribuită în întreaga infrastructură. Harta URL configurată oferă rutarea Layer 7 și direcționează solicitarea clientului către serviciul backend corespunzător. Serviciile de backend pot fi grupuri gestionate de instanțe sau grupuri de puncte finale de rețea pentru încărcături de lucru containerizate.
Tot aici se determină capacitatea și statusul serviciului, iar Cloud CDN permite ca conținutul să fie stocat în cache pentru a îmbunătăți performanța. Aici puteți configura regulile firewall pentru a controla traficul către și dinspre backend.
Configurația internă de load balancing funcționează în același mod. Regula de redirecționare rămâne valabilă, dar în acest caz indică direct serviciul backend. O regulă de redirecționare are o adresă IP virtuală, un protocol și până la cinci porturi.
Cum asiguri securitatea cu un load balancer în cloud?
Google îți oferă un set cuprinzător de bune practici de securitate. Care sunt acestea?
În primul rând, încearcă să utilizezi SSL peste tot. Cu load balancing proxy HTTP(S) și SSL, poți utiliza certificate gestionate de Google. În acest caz, Google este responsabil pentru furnizarea și gestionarea ciclului de viață al certificatului SSL.
Cloud Load Balancing acceptă, de asemenea, mai multe certificate SSL, ceea ce este util mai ales dacă vrei să susții mai multe domenii de pe aceeași adresă IP și același port de load balancing. Distribuția globală a sarcinilor absoarbe și dispersează atacurile volumetrice de nivel 3 și 4 asupra infrastructurii globale de load balancing a Google.
În plus, cu Cloud Armor, vă puteți proteja împotriva atacurilor la nivel de aplicație de la Layer 3 la Layer 7. Folosind Identity Aware Proxy și firewall-uri, te poți autentifica și autoriza accesul la backend-urile acesteia.
Rularea unui load balancer clasic pentru aplicații cloud
Cum configurezi un load balancer pentru aplicația externe, folosind backend-ul unui grup de instanțe gestionat de Compute Engine? Urmărește pașii de mai jos.
Configurarea resurselor pentru certificatul SSL
Înainte de a începe să creezi un load balancer, asigură-te că ai configurat resursele pentru certificatul SSL. Google recomandă utilizarea certificatelor gestionate de Google.
Configurarea permisiunii
Este important să ai permisiuni pentru a crea instanțe Compute Engine, reguli de firewall și adrese IP rezervate în proiect. Rolurile recunoscute sunt cele ale proprietarului de proiect și editorul. Puteți avea, de asemenea, următoarele roluri, în funcție de sarcină:
- Administrator de instanță (pentru crearea unei instanțe)
- Administrator de securitate (pentru adăugarea și eliminarea regulilor de firewall)
- Administrator de rețea (pentru crearea componentelor de load balancer)
- Project Creator (pentru crearea unui proiect)
Crearea unui grup gestionat de instanțe
Pentru a configura corect unload balancer utilizând backend-ul Compute Engine, mașinile dvs. virtuale trebuie să fie într-un grup de instanțe. Un grup de instanțe gestionat oferă mașini virtuale care rulează serverele backend ale unui load balancer extern HTTP(S).
Începe cu crearea unui șablon de instanță. Creează apoi un grup gestionat de instanțe și selectează acest șablon.
Adăugarea un port la grupul de instanțe
În acest pas, ar trebui să definești serviciul HTTP pentru grupul de instanțe și să mapezi numele portului la portul corespunzător. Serviciul de load balancing va redirecționa traficul conform acestei indicații.
Crearea unei reguli de firewall
Acesta ar putea fi un exemplu al regulii fw-allow-health-check, adică o regulă de trafic inbound care permite traficul din partea sistemelor de verificare health a Google Cloud.
Rezervarea unei adrese externe IP
Odată ce instanțele sunt deschise și funcționale, următorul pas este să configurezi adresa IP externă globală, statică, pe care clienții tăi o vor utiliza pentru a se conecta la load balancer.
Configurarea load balancer-ului
Ajungem la al șaptelea pas, foarte important, și anume configurarea load balancer-ului. Pentru a face acest lucru, trebuie să accesezi subpagina „Load Balancing” din consolă și să selectezi opțiunea „Create load balancer”.
Dacă ai ales protocolul HTTP(S), accesează fila „Application Load Balancer (HTTP/S)”. După finalizarea pașilor următori, nu uita să configurezi regulile de front-end, backend, hosting și cale.
Conectarea domeniului la load balancer
După ce ai creat load balancer-ul, notează adresa IP asociată acestuia. Pentru a direcționa un domeniu către load balancer, creează o înregistrare A utilizând serviciul de înregistrare a domeniului.
Dacă adaugi mai multe domenii la certificatul dvs. SSL, ar trebui să adaugi o înregistrare A la fiecare dintre acestea, iar apoi toate vor indica adresa IP a modulului de load balancing.
Testarea traficului trimis către instanțele tale
Pe măsură ce ne apropiem de sfârșitul acestei proceduri, rămâne de testat funcționarea load balancer-ului. Experții cloud FOTC îți pot fi alături pas cu pas, pe tot parcursul procesului. O astfel de asistență poate fi utilă în special dacă ești începător în mediul cloud. În același timp, vei învăța cum să le configurezi corect pentru a optimiza costurile organizației tale.