Blog

Internet nikad ne spava – zašto vam je potreban load balancer?

Šta je korisnicima važno kada su u pitanju aplikacije? Prvenstveno da su dostupne. Dostupnost aplikacija se nikad nije shvatala toliko ozbiljno kao danas, kad ne samo da aplikacije koristimo za komunikaciju, bilo privatnu ili poslovnu, već kada su upravo aplikacije – posao. Aplikacije koje nisu uvek dostupne, koje su nepouzdane – gube svoje korisnike i svoj značaj i postaju nepostojeće. Praktično odmah.

Internet nikad ne spava, radi 24x7x365, tako da se ista stvar odnosi i na aplikacije. Kako bi se to osiguralo, skalabilnost postaje jedna od ključnih stvari za obezbeđivanje dostupnosti aplikacije. Jedan od osnovnih faktora za obezbeđivanje dostupnosti upravo je – load balancing. Mnogi na load balancing gledaju kao na nešto sto se može odraditi jednostavnom skriptom, pa umanjuju značaj naprednih load balancing sistema. Međutim, kompanija F5 Networks dobar deo svog portfolija fokusira upravo na to, sa ciljem da svojim korisnicima obezbedi dostupnost svojih aplikacija – u bilo kom trenutku, bilo gdj, bez obzira koji uređaj koriste.

Upravo zbog toga, u nastavku teksta predstavljamo nekoliko ključnih načina load balancinga i njegov značaj generalno.

Global Server Load Balancing

Za početak – ovde se ne radi o server load balancing-u, već o dostupnosti pojedine lokacije, odnosno data centra, što ponovo dovodi do dostupnosti aplikacija. GSLB predstavlja način kojim možemo obezbediti da, ako neki data centar nije dostupan, bilo da se radi o tradicionalnom ili cloud data centru, možemo pronaći drugi.

U osnovnom obliku GSLB koristi DNS-based load balancing – znači da postoji lista IP adresa asocirana sa domenom i ako prva nije dostupna ide na drugu, pa na treću, itd. Ovaj proces nije tako napredan, ali predstavlja osnovu na koju se nadograđuju napredne funkcionalnosti. Stoga je moguće proveriti performanse određenog data centra i doneti odluku o usmeravanju korisnika u zavisnosti od te informacije ili usmeriti korisnike ka geografski bližem data centru. Bez obzira na to koja je opcija odabrana, GSLB omogućava da se korisnički zahtevi raspodele između fizički odvojenih lokacija vraćanjem adrese dostupne, odnosno odabrane lokacije.

 Old School Load Balancing

U ovom slučaju aplikacije se nalaze na više servera, serveri su raspoređeni u grupe u zavisnosti od aplikacija koje poslužuju. Ideja je da spošaljete korisnika na onaj resurs koji je dostupan. Međutim, i tu postoji nekoliko metoda i faktora koji se mogu uzet u obzir. Na primer, običan Round Robin ne uzima u obzir performanse servera. Ako radimo load balancing na osnovu minimalnog broja konekcija (Least Connection) možemo jako uticati na performanse servera. Iz ovoga se vidi da pravilan izbor metoda load balancing može imati veliki uticaj na dostupnost aplikacija i rad sistema u celini.

Persistence

Većina aplikacija je složena u troslojnom modelu i činjenica je da su one, u većini slučajeva, stateful – informacije koje korisnik razmenjuje s aplikacijom se čuvaju između zahteva i odgovora i od ključnog su značaja za ispravan rad aplikacije i zadovoljstvo korisnika. Neke od ovih informacija su login podaci, stanje korpe za kupovinu, status, poslednja posećena stranica i slično. To podrazumeva da tokom trajanja čitave sesije korisnički zahtevi moraju uvek ići na isti server.

Load balanceri implementiraju perzistenciju u različitim oblicima, među kojima je najpopularnija metoda cookie-based perzistencije – informacije o korisničkoj sesiji spremaju se u cookieu koji se onda koristi kako bi load balancer ispravno usmerio zahtev ka odgovarajućem serveru. U današnje vreme, kad je upotreba SSL/TLS protokola praktično obavezna, potrebno je prilagoditi način uspostavljanja perzistencije. SSL/TLS omogućava sigurnu sesiju između klijenta i servera. Kako bi se osiguralo da obe strane mogu da dekriptuju i koriste podatke izmenjene preko te konekcije, load balancer mora da bude u mogućnosti da pošalje zahteve na isti server gde je sesija i počela – zbog toga se koristi SSL/TLS based perzistencija. Međutim, korišćenje perzistencije dovodi do toga da treba pažljivije razmotriti metodu load balancing-a koja će se koristiti zbog toga što, pre svega, load balancer poštuje tablelu perzistiranih zapisa. U ovakvom scenariju, Least Connection može biti dobra opcija jer obezbeđuje da nijedan pojedini resurs ne bude zatrpan sesijama, dok oni drugi „odmaraju“. Druge metode lako mogu dovesti do toga da pojedinačni resurs odrađuje veliki broj korisničkih sesija, što će dovesti do negativnog uticaja na performanse i, na kraju, i na samo iskustvo krajnjeg korisnika.

Host-based load balancing

Host-based load balancing je jedan od najčešćih načina za postizanje skalabilnosti. Uobičajena pretpostavka je da u ovom slučaju load balanceri nisu potrebni, budući da svi web serveri podržavaju ovu funkcionalnost. Međutim, to nije slučaj. Iako web server ili server aplikacija mogu imati istovremeno više hostova na sebi, ipak load balancing ne može uvek raditi između njih. I zato – load balancer.

Da, naravno da web/aplikativni serveri mogu sami da usmere korisničke zahteve na određeni virtuelni server, međutim, ako se koristi load balancer – uvode se dodatni nivoi efikasnosti i može doći do smanjenja broja servera i potrebnog hardvera. Load balanceri u ovakvom scenariju omogućavaju jednostavnije planiranje opterećenja i obezbeđuju da se za obradu korisničkog zahteva uvek odabere najoptimalniji resurs.

Route and Return – L7 (HTTP) Load Balancing

Ne samo HTTP nego i drugi protokoli omogućavaju load balancing na osnovu informacija na aplikativnom nivou. Međutim, spominjemo HTTP protokol kao danas verojatno najrasprostranjeniji i najkorišćeniji kada su u pitanju aplikacije.

HTTP protokol je izrazito fleksibilan i ima mogućnost load balancinga na bilo čemu, uključujući i HTTP payload. Većina korisnika donosi load balancing odluku na osnovu onoga što je zapisano u nekom od HTTP headera: host, cookie, user agent, itd.

Međutim, opseg HTTP protokola omogućava load balancing apsolutno svega što vam padne na pamet. Load balancing kod HTTP protokola prvo podrazumeva usmeravanje korisničkih zahteva, a tek onda load balancing.

Kad dođe korisnički zahtev, prvo se bira virtuelni server na koji se zahtev šalje, a nakon toga  se iz grupe servera bira najoptimalniji resurs za obradu korisničkog zahteva. HTTP omogućava recimo
i load balancing pomoću API verzije, gde je API verzija ugrađena u URI ili poseban HTTP header. Na ovaj način load balancer može razlikovati korisničke zahteve i osigurati da je zahtev poslat na obradu na odgovarajući back-end servis.

I na kraju pitanje – i dalje mislite da vam LB nije potreban?

Ovde smo naveli tek nekoliko karakteristika load balancera, a ako pogledamo F5 portfolio i njihov proizvod F5 Local Traffic Manager, uverićete se koliko još dodatnih funkcija tu po- stoji. Da, osnovni zadatak load balancera je oduvek bila distribucija saobraćaja na pozadinskim serverima. Osnovni zadatak load balancera danas, u ovom zahtevnom online svetu, je napredna distribucija tog istog saobraćaja. Ali, load balanceri poput F5 LTM proizvoda nude i napredne optimizacije saobraćaja koji prolazi kroz njih – od optimizacija na TCP nivou, pa sve do brojnih optimizacija na aplikativnom nivou. Oni nude monitoring svih delova sistema i offload pojedinih funkcija sa servera, kako bi se osiguralo da se uvek bira najbolji resurs za obradu korisničkog zahteva i da serveri
rade upravo ono za šta su i namenjeni – isporučuju aplikacije korisnicima.

Za više informacija o F5 LTM produktu, kao i ostalim produktima iz F5 portfelja – kontaktirajte nas!

Share on LinkedInShare on FacebookShare on Google+Tweet about this on Twitter
Treba Vam ponuda ili pomoć pri izradi rešenja? Tražite partnera za implementaciju?
Kontaktirajte nas!