Balansiranje opterećenja s AWS ELB

Bok svima! Tečaj počinje danas "AWS za programere", povodom čega smo održali odgovarajući tematski webinar posvećen recenziji ELB-a. Pogledali smo vrste balansera i stvorili nekoliko EC2 instanci s balanserom. Proučavali smo i druge primjere korištenja.

Balansiranje opterećenja s AWS ELB

Nakon slušanja webinara, Hoćeš:

  • razumjeti što je AWS Load Balancing;
  • poznavati vrste Elastic Load Balancera i njegove komponente;
  • koristite AWS ELB u svojoj praksi.

Zašto to uopće trebate znati?

  • korisno ako planirate polagati AWS certifikacijske ispite;
  • ovo je jednostavan način za raspodjelu opterećenja između poslužitelja;
  • Ovo je jednostavan način za dodavanje Lambde vašoj usluzi (ALB).

Održana otvorena lekcija Rishat Teregulov, sistem inženjer u marketinškoj tvrtki za razvoj i podršku web stranica.

Uvod

Što je Elastic Load Balancer može se vidjeti na donjem dijagramu koji prikazuje jednostavan primjer:

Balansiranje opterećenja s AWS ELB

Load Balancer prihvaća zahtjeve i distribuira ih među instancama. Imamo jednu zasebnu instancu, postoje Lambda funkcije i postoji grupa AutoScaling (grupa poslužitelja).

AWS ELB vrste

1. Pogledajmo glavne vrste:

Klasični balanser opterećenja. Prvi balanser iz AWS-a, radi na OSI slojevima 4 i 7, podržani su HTTP, HTTPS, TCP i SSL. Omogućuje osnovno balansiranje opterećenja na više instanci Amazon EC2 i radi na razini zahtjeva i veze. Otvorimo ga (označeno sivom bojom):

Balansiranje opterećenja s 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 mreži EC2‑Classic. U principu, nitko nas ne sprječava da ga stvorimo:

Balansiranje opterećenja s AWS ELB

2. Mrežni balanser opterećenja. Prikladno za velika radna 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 prema ciljevima u Amazon VPC-u i sposoban je obraditi milijune zahtjeva u sekundi s ultraniskom latencijom. Osim toga, optimiziran je za rukovanje obrascima prometa s iznenadnim i promjenjivim opterećenjima.

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

Mnogim je korisnicima Application Load Balancer bio prvi izbor za zamjenu Classic Load Balancera, jer TCP nije tako uobičajen kao HTTP.

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

Balansiranje opterećenja s AWS ELB

Komponente ravnoteže opterećenja

Uobičajene komponente ravnoteže opterećenja (zajedničko svim balanserima):

  • Politika bilježenja pristupa

— vaši zapisnici pristupa ELB-u. Za postavljanje postavki možete otići na Opis i odabrati gumb "Uredi atribute":

Balansiranje opterećenja s AWS ELB

Zatim specificiramo S3Bucket - pohranu objekata Amazona:

Balansiranje opterećenja s AWS ELB

  • Shema

— unutarnji ili vanjski balanser. Stvar je u tome mora li vaš LoadBalancer primati vanjske adrese kako bi mu se moglo pristupiti izvana ili to može biti vaš interni balanser opterećenja;

  • Sigurnosne grupe

— kontrola pristupa balanseru. U biti ovo je vatrozid visoke razine.

Balansiranje opterećenja s AWS ELB

Balansiranje opterećenja s AWS ELB

  • Podmreže

— podmreže unutar vašeg VPC-a (i, sukladno tome, zone dostupnosti). Podmreže su navedene tijekom stvaranja. Ako su VPC-ovi ograničeni regijom, tada su podmreže ograničene zonama dostupnosti. Kada stvarate Load Balancer, bolje ga je stvoriti u najmanje dvije podmreže (pomaže ako se pojave problemi s jednom zonom dostupnosti);

  • slušatelji

— vaši protokoli balansera. 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 balanser opterećenja:

Balansiranje opterećenja s AWS ELB

Ali u Application Load Balanceru vidimo nešto drugačije sučelje i općenito drugačiju logiku:

Balansiranje opterećenja s AWS ELB

Load Balancer v2 komponente (ALB i NLB)

Pogledajmo sada pobliže balansere verzije 2, Application Load Balancer i Network Load Balancer. Ovi balanseri imaju svoje karakteristike komponenti. Na primjer, pojavio se takav koncept kao ciljne skupine - instance (i funkcije). Zahvaljujući ovoj komponenti imamo mogućnost odrediti na koju ciljnu skupinu želimo usmjeriti promet.

Balansiranje opterećenja s AWS ELB

Balansiranje opterećenja s AWS ELB

Jednostavnim rječnikom rečeno, u ciljnim grupama navodimo slučajeve gdje će doći promet. Ako u istom Classic Load Balanceru jednostavno odmah povežete intenzitet s balanserom, tada u Application Load Balanceru prvo:

  • stvoriti Load Balancer;
  • stvoriti ciljnu skupinu;
  • izravno putem potrebnih priključaka ili pravila Load Balancera prema potrebnim ciljnim skupinama;
  • u Ciljnim grupama dodjeljujete instance.

Ova logika rada može se činiti kompliciranijom, ali zapravo je praktičnija.

Sljedeća komponenta je Pravila slušatelja (pravila za usmjeravanje). Ovo se odnosi samo na Application Load Balancer. Ako u Network Load Balanceru jednostavno stvorite Listener, a on šalje promet određenoj ciljnoj skupini, tada u Application Load Balanceru sve zabavnije i praktičnije.

Balansiranje opterećenja s AWS ELB

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

Kreirajmo mrežni balanser opterećenja:

Balansiranje opterećenja s AWS ELB

Balansiranje opterećenja s AWS ELB

Upravo tijekom procesa stvaranja vidjet ćemo da nam je dana mogućnost odabira Elastic IP-a:

Balansiranje opterećenja s AWS ELB

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

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

Balansiranje opterećenja s AWS ELB

Amazon ih mijenja tijekom vremena, 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 Balancera, možete jednostavno vezati IP adresu i navesti je u svojim pravilima, politikama itd.

Balansiranje opterećenja s AWS ELB

Napravite zaključke

ELB omogućuje automatsku distribuciju dolaznog prometa na više ciljeva (spremnici, Amazon EC2 instance, IP adrese i Lambda funkcije). ELB je sposoban distribuirati promet s različitim opterećenjima unutar jedne zone dostupnosti 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 je ovo važno kako bi se osigurala tolerancija na pogreške vaših aplikacija.

Glavne prednosti:

  • visoka dostupnost. Ugovor o usluzi pretpostavlja 99,99% dostupnost za balanser opterećenja. Na primjer, višestruke zone dostupnosti osiguravaju da promet obrađuju samo zdravi objekti. Zapravo, možete uravnotežiti opterećenje u cijeloj regiji, preusmjeravajući promet na zdrave ciljeve u različitim zonama dostupnosti;
  • sigurnosni. ELB radi s Amazon VPC-om, pružajući razne sigurnosne mogućnosti - integrirano upravljanje certifikatima, provjeru autentičnosti korisnika i SSL/TLS dešifriranje. Sve zajedno pruža centralizirano i fleksibilno upravljanje TLS postavkama;
  • elastičnost. ELB može podnijeti nagle promjene mrežnog prometa. A duboka integracija s automatskim skaliranjem daje aplikaciji dovoljno resursa ako se opterećenje promijeni, bez potrebe za ručnom intervencijom;
  • savitljivost. Možete koristiti IP adrese za usmjeravanje zahtjeva do ciljeva vaših aplikacija. Ovo pruža fleksibilnost prilikom virtualizacije ciljanih aplikacija, čime se daje mogućnost hostiranja više aplikacija na jednoj instanci. Budući da aplikacije mogu koristiti jedan mrežni priključak i imati zasebne sigurnosne grupe, komunikacija između aplikacija je pojednostavljena kada imamo, recimo, arhitekturu temeljenu na mikroservisima;
  • praćenje i revizija. Možete pratiti aplikacije u stvarnom vremenu pomoću značajki Amazon CloudWatch. Govorimo o metrici, zapisnicima, praćenju zahtjeva. Jednostavno rečeno, moći ćete vrlo točno identificirati probleme i odrediti uska grla u izvedbi;
  • hibridno uravnoteženje 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. Rješavanje kvarova također je pojednostavljeno korištenjem oblaka.

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

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

Izvor: www.habr.com

Dodajte komentar