Balansiranje opterećenja sa AWS ELB

Zdravo svima! Kurs počinje danas "AWS za programere", povodom čega smo održali odgovarajući tematski webinar posvećen ELB recenziji. Pogledali smo tipove balansera i kreirali nekoliko EC2 instanci sa balanserom. Proučavali smo i druge primjere upotrebe.

Balansiranje opterećenja sa AWS ELB

Nakon slušanja webinara, Ti ces:

  • razumjeti šta je AWS balansiranje opterećenja;
  • poznaju tipove elastičnog balansera opterećenja i njegove komponente;
  • koristite AWS ELB u svojoj praksi.

Zašto to uopšte trebate znati?

  • korisno ako planirate polagati ispite za AWS certifikaciju;
  • ovo je jednostavan način raspodjele opterećenja između servera;
  • Ovo je jednostavan način da dodate Lambda u vašu uslugu (ALB).

Održala otvorenu lekciju Rishat Teregulov, sistem inženjer u marketinškoj kompaniji za razvoj i podršku web stranica.

Uvod

Šta je elastični balanser opterećenja može se vidjeti na dijagramu ispod, koji pokazuje jednostavan primjer:

Balansiranje opterećenja sa AWS ELB

Load Balancer prihvaća zahtjeve i distribuira ih po instancama. Imamo jednu zasebnu instancu, postoje Lambda funkcije i postoji AutoScaling grupa (grupa servera).

AWS ELB tipovi

1. Pogledajmo glavne vrste:

Classic Load Balancer. Prvi balanser iz AWS-a, radi na oba OSI sloja 4 i 7, podržani su HTTP, HTTPS, TCP i SSL. Pruža osnovnu ravnotežu opterećenja na višestrukim Amazon EC2 instancama i radi na nivou zahtjeva i veze. Otvorimo (označeno sivom bojom):

Balansiranje opterećenja sa AWS ELB

Ovaj balanser se smatra zastarjelim, pa se preporučuje za korištenje samo u određenim slučajevima. Na primjer, za aplikacije koje su izgrađene na EC2‑Classic mreži. U principu, niko nas ne brani da ga kreiramo:

Balansiranje opterećenja sa AWS ELB

2. Mrežni balanser opterećenja. Pogodno za velika opterećenja, radi na OSI sloju 4 (može se koristiti u EKS i ECS), podržani su TCP, UDP i TLS.

Network Load Balancer usmjerava promet do ciljeva u Amazon VPC-u i sposoban je obraditi milione zahtjeva u sekundi s ultra-niskim kašnjenjem. Osim toga, optimiziran je za upravljanje prometnim obrascima s naglim i promjenjivim opterećenjima.

3. Balansator opterećenja aplikacija. Radi na sloju 7, ima Lambda podršku, podržava pravila nivoa zaglavlja i putanje, podržava HTTP i HTTPS.
Pruža napredno usmjeravanje zahtjeva fokusirano na isporuku aplikacija izgrađenih na modernim arhitekturama, uključujući mikroservise i kontejnere. Usmjerava promet na ciljeve u Amazon VPC-u na osnovu sadržaja zahtjeva.

Za mnoge korisnike, Application Load Balancer je bio prvi izbor da zameni klasični Load Balancer, jer TCP nije tako uobičajen kao HTTP.

Kreirajmo i njega, kao rezultat čega ćemo već imati dva balansera opterećenja:

Balansiranje opterećenja sa AWS ELB

Komponente balansa opterećenja

Zajedničke komponente ravnoteže opterećenja (zajedničko za sve balansere):

  • Pristup politici evidentiranja

— vaše ELB evidencije pristupa. Da izvršite podešavanja, možete otići na Opis i odabrati dugme “Uredi atribute”:

Balansiranje opterećenja sa AWS ELB

Zatim specificiramo S3Bucket - Amazon object storage:

Balansiranje opterećenja sa AWS ELB

  • Šema

— interni ili eksterni balanser. Stvar je u tome da li vaš LoadBalancer mora primiti eksterne adrese da bi bio dostupan izvana, ili to može biti vaš interni balansator opterećenja;

  • Sigurnosne grupe

— kontrola pristupa balansu. U suštini ovo je zaštitni zid visokog nivoa.

Balansiranje opterećenja sa AWS ELB

Balansiranje opterećenja sa AWS ELB

  • Podmreže

— podmreže unutar vašeg VPC (i, shodno tome, zona dostupnosti). Podmreže se specificiraju tokom kreiranja. Ako su VPC-ovi ograničeni regionom, onda su podmreže ograničene zonama dostupnosti. Kada kreirate Load Balancer, bolje ga je kreirati u najmanje dvije podmreže (pomaže ako se pojave problemi s jednom zonom dostupnosti);

  • Slušalice

— vaši protokoli za balansiranje. Kao što je ranije spomenuto, za Classic Load Balancer to može biti HTTP, HTTPS, TCP i SSL, za Network Load Balancer - TCP, UDP i TLS, za Application Load Balancer - HTTP i HTTPS.

Primjer za klasični Load Balancer:

Balansiranje opterećenja sa AWS ELB

Ali u aplikaciji za balansiranje opterećenja vidimo malo drugačije sučelje i općenito drugačiju logiku:

Balansiranje opterećenja sa AWS ELB

Komponente Load Balancer v2 (ALB i NLB)

Sada pogledajmo pobliže balansere verzije 2 Application Load Balancer i Network Load Balancer. Ovi balanseri imaju svoje karakteristike komponenti. Na primjer, pojavio se koncept kao što su ciljne grupe - instance (i funkcije). Zahvaljujući ovoj komponenti imamo mogućnost da odredimo na koju od ciljnih grupa želimo da usmerimo saobraćaj.

Balansiranje opterećenja sa AWS ELB

Balansiranje opterećenja sa AWS ELB

Jednostavno rečeno, u ciljnim grupama navodimo slučajeve u koje će doći promet. Ako u istom klasičnom balanseru opterećenja jednostavno odmah povežete intenzitet sa balanserom, onda u aplikacijskom balanseru opterećenja prvo:

  • kreirajte Load Balancer;
  • kreirati ciljnu grupu;
  • direktno preko potrebnih portova ili pravila Load Balancera do potrebnih ciljnih grupa;
  • u Ciljnim grupama dodjeljujete instance.

Ova operativna logika može izgledati komplikovanija, ali u stvari je praktičnija.

Sledeća komponenta je Pravila slušaoca (pravila za rutiranje). Ovo se odnosi samo na aplikaciju za balansiranje opterećenja. Ako u Network Load Balancer jednostavno kreirate slušalac i on šalje promet određenoj ciljnoj grupi, onda u aplikaciji za balansiranje opterećenja sve zabavnije i praktičnije.

Balansiranje opterećenja sa AWS ELB

Recimo sada nekoliko riječi o sljedećoj komponenti - Elastična IP adresa (statičke adrese za NLB). Ako su pravila slušatelja pravila usmjeravanja utjecala samo na balanser opterećenja aplikacije, onda je Elastic IP utjecao samo na balanser opterećenja mreže.

Kreirajmo mrežni balanser opterećenja:

Balansiranje opterećenja sa AWS ELB

Balansiranje opterećenja sa AWS ELB

I tek tokom procesa kreiranja videćemo da nam je data mogućnost da odaberemo Elastic IP:

Balansiranje opterećenja sa AWS ELB

Elastični IP pruža jednu IP adresu koja se može povezati s različitim EC2 instancama tokom vremena. Ako EC2 instanca ima Elastic IP adresu i ta instanca je prekinuta ili zaustavljena, možete odmah povezati novu EC2 instancu s Elastic IP adresom. Međutim, vaša trenutna aplikacija neće prestati raditi, budući da aplikacije i dalje vide istu IP adresu, čak i ako se stvarni EC2 promijenio.

ovdje drugi slučaj upotrebe na temu zašto je Elastic IP potreban. Vidimo, vidimo 3 IP adrese, ali one neće ostati ovdje zauvijek:

Balansiranje opterećenja sa AWS ELB

Amazon ih mijenja s vremenom, možda svakih 60 sekundi (ali u praksi, naravno, rjeđe). To znači da se IP adrese mogu mijenjati. A u slučaju Network Load Balancer-a, možete jednostavno vezati IP adresu i naznačiti je u svojim pravilima, politikama itd.

Balansiranje opterećenja sa AWS ELB

Izvući zaključke

ELB omogućava automatsku distribuciju dolaznog saobraćaja na više ciljeva (kontejneri, Amazon EC2 instance, IP adrese i Lambda funkcije). ELB je sposoban za distribuciju saobraćaja sa različitim opterećenjima kako unutar jedne zone dostupnosti tako i preko više zona dostupnosti. Korisnik može birati između tri vrste balansera koji pružaju visoku dostupnost, automatsko skaliranje i dobru zaštitu. Sve ovo je važno kako bi se osigurala tolerancija grešaka vaših aplikacija.

Glavne prednosti:

  • visoka dostupnost. Ugovor o usluzi pretpostavlja 99,99% dostupnosti za balansiranje opterećenja. Na primjer, višestruke zone dostupnosti osiguravaju da promet obrađuju samo zdravi objekti. Zapravo, možete uravnotežiti opterećenje u cijelom regionu, preusmjeravajući promet na zdrave ciljeve u različitim zonama dostupnosti;
  • sigurnost. ELB radi sa Amazon VPC, pružajući različite sigurnosne mogućnosti - integrisano upravljanje sertifikatima, autentifikaciju korisnika i SSL/TLS dešifrovanje. Sve zajedno pruža centralizovano i fleksibilno upravljanje TLS postavkama;
  • elastičnost. ELB može podnijeti iznenadne promjene u mrežnom prometu. Duboka integracija sa automatskim skaliranjem daje aplikaciji dovoljno resursa ako se opterećenje promijeni, bez potrebe za ručnim intervencijama;
  • fleksibilnost. Možete koristiti IP adrese za usmjeravanje zahtjeva do ciljeva vaših aplikacija. Ovo pruža fleksibilnost pri virtuelizaciji ciljnih aplikacija, čime se daje mogućnost hostovanja više aplikacija na jednoj instanci. Budući da aplikacije mogu koristiti jedan mrežni port i imati odvojene sigurnosne grupe, komunikacija između aplikacija je pojednostavljena kada imamo, recimo, arhitekturu zasnovanu na mikroservisima;
  • praćenje i revizija. Možete pratiti aplikacije u realnom vremenu koristeći Amazon CloudWatch funkcije. Govorimo o metrikama, logovima, praćenju zahtjeva. Jednostavnim rečima, moći ćete da identifikujete probleme i precizno odredite uska grla u performansama;
  • hibridno balansiranje opterećenja. Mogućnost balansiranja opterećenja između lokalnih resursa i AWS-a pomoću istog balansera opterećenja olakšava migraciju ili proširenje lokalnih aplikacija u oblak. Rukovanje kvarovima je također pojednostavljeno korištenjem oblaka.

Ako vas zanimaju detalji, evo još par korisnih linkova sa službene Amazonove web stranice:

  1. Elastično balansiranje opterećenja.
  2. Mogućnosti elastičnog balansiranja opterećenja.

izvor: www.habr.com

Dodajte komentar