Echilibrarea sarcinii cu AWS ELB

Salutare tuturor! Cursul începe astăzi „AWS pentru dezvoltatori”, în legătură cu care am susținut un webinar tematic corespunzător dedicat revizuirii ELB. Am analizat tipurile de echilibrare și am creat mai multe instanțe EC2 cu un echilibrator. Am studiat și alte exemple de utilizare.

Echilibrarea sarcinii cu AWS ELB

După ascultarea webinarului, Veți:

  • înțelegeți ce este AWS Load Balancing;
  • cunoașteți tipurile de Elastic Load Balancer și componentele acestuia;
  • utilizați AWS ELB în practica dvs.

De ce trebuie să știi asta?

  • util dacă intenționați să susțineți examene de certificare AWS;
  • aceasta este o modalitate simplă de a distribui sarcina între servere;
  • Aceasta este o modalitate simplă de a adăuga Lambda la serviciul dvs. (ALB).

A condus o lecție deschisă Rishat Teregulov, inginer de sisteme la o companie de marketing pentru dezvoltare și suport pentru site-uri web.

Introducere

Ce este un Elastic Load Balancer poate fi văzut în diagrama de mai jos, care arată un exemplu simplu:

Echilibrarea sarcinii cu AWS ELB

Load Balancer acceptă solicitări și le distribuie între instanțe. Avem o instanță separată, există funcții Lambda și există un grup AutoScaling (un grup de servere).

Tipuri AWS ELB

1. Să ne uităm la principalele tipuri:

Load Balancer clasic. Primul echilibrator de încărcare de la AWS, funcționează atât pe OSI Layer 4, cât și pe Layer 7, acceptând HTTP, HTTPS, TCP și SSL. Oferă echilibrarea sarcinii de bază în mai multe instanțe Amazon EC2 și funcționează atât la nivel de solicitare, cât și la nivel de conexiune. Să-l deschidem (evidențiat cu gri):

Echilibrarea sarcinii cu AWS ELB

Acest echilibrator este considerat depășit, de aceea este recomandat pentru utilizare doar în anumite cazuri. De exemplu, pentru aplicațiile care au fost construite pe rețeaua EC2-Classic. În principiu, nimeni nu ne împiedică să o creăm:

Echilibrarea sarcinii cu AWS ELB

2. Network Load Balancer. Potrivit pentru sarcini grele, funcționează la OSI Layer 4 (poate fi utilizat în EKS și ECS), sunt acceptate TCP, UDP și TLS.

Network Load Balancer direcționează traficul către ținte într-un Amazon VPC și este capabil să proceseze milioane de solicitări pe secundă cu o latență ultra-scăzută. În plus, este optimizat pentru a gestiona tiparele de trafic cu sarcini bruște și în schimbare.

3. Aplicație Load Balancer. Funcționează la nivelul 7, are suport Lambda, acceptă reguli de nivel de antet și cale, acceptă HTTP și HTTPS.
Oferă rutarea avansată a cererilor axată pe furnizarea de aplicații construite pe arhitecturi moderne, inclusiv microservicii și containere. Direcționează traficul către ținte în Amazon VPC pe baza conținutului solicitării.

Pentru mulți utilizatori, Application Load Balancer a fost prima alegere pentru a înlocui Classic Load Balancer, deoarece TCP nu este la fel de comun ca HTTP.

Să-l creăm și noi, drept urmare vom avea deja două echilibrante de încărcare:

Echilibrarea sarcinii cu AWS ELB

Componentele echilibrului de sarcină

Componente comune de echilibrare a sarcinii (comun tuturor echilibratorilor):

  • Politica de înregistrare a accesului

— jurnalele dvs. de acces ELB. Pentru a face setări, puteți accesa Descriere și selectați butonul „Editați atribute”:

Echilibrarea sarcinii cu AWS ELB

Apoi specificăm S3Bucket - stocare obiect Amazon:

Echilibrarea sarcinii cu AWS ELB

  • Sistem

— echilibrator intern sau extern. Ideea este dacă LoadBalancer-ul tău trebuie să primească adrese externe pentru a fi accesibil din exterior sau poate fi echilibrul tău de încărcare intern;

  • Grupuri de securitate

— controlul accesului la echilibrator. În esență, acesta este un firewall de nivel înalt.

Echilibrarea sarcinii cu AWS ELB

Echilibrarea sarcinii cu AWS ELB

  • Subrețele

— subrețele din interiorul VPC-ului dvs. (și, în consecință, zona de disponibilitate). Subrețelele sunt specificate în timpul creării. Dacă VPC-urile sunt limitate de regiune, atunci subrețelele sunt limitate de zonele de disponibilitate. Când creați un Load Balancer, este mai bine să îl creați în cel puțin două subrețele (ajută dacă apar probleme cu o zonă de disponibilitate);

  • ascultătorii

— protocoalele dvs. de echilibrare. După cum am menționat mai devreme, pentru Classic Load Balancer poate fi HTTP, HTTPS, TCP și SSL, pentru Network Load Balancer - TCP, UDP și TLS, pentru Application Load Balancer - HTTP și HTTPS.

Exemplu pentru Load Balancer clasic:

Echilibrarea sarcinii cu AWS ELB

Dar în aplicația Load Balancer vedem o interfață ușor diferită și o logică în general diferită:

Echilibrarea sarcinii cu AWS ELB

Componente Load Balancer v2 (ALB și NLB)

Acum să aruncăm o privire mai atentă asupra aplicației de echilibrare a încărcăturii din versiunea 2 și a echilibrului încărcăturii în rețea. Aceste balansoare au propriile lor caracteristici componente. De exemplu, a apărut un astfel de concept precum Grupuri țintă - instanțe (și funcții). Datorită acestei componente, avem posibilitatea de a specifica către care dintre Grupurile țintă dorim să direcționăm traficul.

Echilibrarea sarcinii cu AWS ELB

Echilibrarea sarcinii cu AWS ELB

În termeni simpli, în Target Groups specificăm cazurile în care va veni traficul. Dacă în același Classic Load Balancer conectați imediat intensitatea la echilibrator, atunci în Application Load Balancer trebuie mai întâi:

  • creați un Load Balancer;
  • creați un grup țintă;
  • direct prin porturile necesare sau regulile Load Balancer către grupurile țintă necesare;
  • în Grupurile țintă atribuiți instanțe.

Această logică de operare poate părea mai complicată, dar de fapt este mai convenabilă.

Următoarea componentă este Regulile ascultătorului (reguli pentru rutare). Acest lucru se aplică numai aplicației Load Balancer. Dacă în Network Load Balancer creați pur și simplu un ascultător și acesta trimite trafic către un anumit grup țintă, atunci în Application Load Balancer totul mai distractiv și mai convenabil.

Echilibrarea sarcinii cu AWS ELB

Acum să spunem câteva cuvinte despre următoarea componentă - IP elastic (adrese statice pentru NLB). Dacă regulile de rutare a regulilor de ascultare au afectat doar aplicația Load Balancer, atunci Elastic IP a afectat doar Network Load Balancer.

Să creăm un Network Load Balancer:

Echilibrarea sarcinii cu AWS ELB

Echilibrarea sarcinii cu AWS ELB

Și tocmai în timpul procesului de creare vom vedea că ni se oferă posibilitatea de a selecta IP elastic:

Echilibrarea sarcinii cu AWS ELB

Elastic IP oferă o singură adresă IP care poate fi asociată cu diferite instanțe EC2 în timp. Dacă o instanță EC2 are o adresă IP elastică și acea instanță este terminată sau oprită, puteți asocia imediat o nouă instanță EC2 cu o adresă IP elastică. Cu toate acestea, aplicația dvs. actuală nu va înceta să funcționeze, deoarece aplicațiile încă văd aceeași adresă IP, chiar dacă EC2 real s-a schimbat.

Aici alt caz de utilizare pe tema de ce este nevoie de Elastic IP. Uite, vedem 3 adrese IP, dar nu vor rămâne aici pentru totdeauna:

Echilibrarea sarcinii cu AWS ELB

Amazon le schimbă în timp, poate la fiecare 60 de secunde (dar în practică, desigur, mai rar). Aceasta înseamnă că adresele IP se pot schimba. Și în cazul Network Load Balancer, puteți doar să legați o adresă IP și să o indicați în regulile, politicile dvs. etc.

Echilibrarea sarcinii cu AWS ELB

Trage concluzii

ELB oferă distribuția automată a traficului de intrare pe mai multe ținte (containere, instanțe Amazon EC2, adrese IP și funcții Lambda). ELB este capabil să distribuie traficul cu sarcini diferite atât într-o singură zonă de disponibilitate, cât și în mai multe zone de disponibilitate. Utilizatorul poate alege dintre trei tipuri de echilibrare care oferă disponibilitate ridicată, scalare automată și protecție bună. Toate acestea sunt importante pentru a asigura toleranța la erori a aplicațiilor dumneavoastră.

Principalele avantaje:

  • Valabilitate ridicată. Acordul de servicii presupune o disponibilitate de 99,99% pentru echilibrul de încărcare. De exemplu, mai multe zone de disponibilitate asigură că traficul este procesat numai de obiecte sănătoase. De fapt, puteți echilibra sarcina în întreaga regiune, redirecționând traficul către ținte sănătoase în diferite zone de disponibilitate;
  • siguranță. ELB funcționează cu Amazon VPC, oferind diverse capacități de securitate - management integrat al certificatelor, autentificarea utilizatorilor și decriptare SSL/TLS. Toate împreună oferă o gestionare centralizată și flexibilă a setărilor TLS;
  • elasticitate. ELB poate face față schimbărilor bruște ale traficului de rețea. Iar integrarea profundă cu Auto Scaling oferă aplicației suficiente resurse dacă încărcarea se modifică, fără a necesita intervenție manuală;
  • flexibilitate. Puteți utiliza adrese IP pentru a direcționa cererile către țintele aplicațiilor dvs. Acest lucru oferă flexibilitate la virtualizarea aplicațiilor țintă, oferind astfel posibilitatea de a găzdui mai multe aplicații pe o singură instanță. Deoarece aplicațiile pot folosi un singur port de rețea și au grupuri de securitate separate, comunicarea între aplicații este simplificată atunci când avem, de exemplu, o arhitectură bazată pe microservicii;
  • monitorizare si audit. Puteți monitoriza aplicațiile în timp real folosind funcțiile Amazon CloudWatch. Vorbim despre metrici, jurnalele, urmărirea solicitărilor. În termeni simpli, veți putea identifica problemele și identificați blocajele de performanță destul de precis;
  • echilibrare hibridă a sarcinii. Capacitatea de a echilibra încărcarea între resursele locale și AWS folosind același echilibrator de încărcare facilitează migrarea sau extinderea aplicațiilor locale în cloud. De asemenea, gestionarea defecțiunilor este simplificată folosind cloud-ul.

Dacă sunteți interesat de detalii, iată câteva link-uri utile de pe site-ul oficial Amazon:

  1. Echilibrarea sarcinii elastice.
  2. Capacități elastice de echilibrare a sarcinii.

Sursa: www.habr.com

Adauga un comentariu