Blog

Internet nikad ne spava – zašto trebate load balancer?

Šta je korisnicima bitno kada su u pitanju aplikacije? Prvenstveno to da su one dostupne. Dostupnost aplikacija se nikad nije shvaćala 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 uvijek dostupne, koje su nepouzdane – gube svoje korisnike i svoju važnost i postaju nepostojeće. Praktički odmah.

Internet nikad ne spava. Radi 24x7x365, pa prema tome isto vrijedi za aplikacije. Kako bi se to osiguralo, skalabilnost postaje jedna od ključnih stvari za osiguravanje dostupnosti aplikacije. Jedan od osnovnih faktora za osiguravanje dostupnosti je upravo – load balancing. Mnogi na load balancing gledaju kao na nešto sto se može kroz jednostavnu skriptu odraditi, pa umanjuju značaj naprednih load balancing sistema. Međutim, kompanija F5 Networks dobar dio svog portfolija fokusira upravo na to i u tom smjeru kako bi svojim korisnicima osigurala dostupnost aplikacija – u bilo kojem trenutku, bilo gdje, bez obzira koji uređaj koristili.

U nastavku predstavljamo nekoliko ključnih načina load balancinga i njegovu važnost općenito.

Global Server Load Balancing

Za početak, ovdje se ne radi o server load balancing-u, već o dostupnosti pojedine lokacije tj. data centra, što ponovno dovodi do dostupnosti aplikacija. GSLB je način kojim možemo osigurati da, ako neki data centar nije dostupan, radilo se o tradicionalnom ili cloud data centru, možemo pronaći drugi.

U osnovnom obliku, GSLB koristi DNS-based load balancing što znači da postoji lista IP adresa asocirana s domenom i ako prva nije dostupna, ide na drugu, pa na treću, itd. Ovaj proces nije posebno napredan, međutim, osnova je na koju se nadograđuju napredne funkcionalnosti. Postoji mogućnost provjere performansi pojedinog data centra, te donošenja odluke o usmjeravanju korisnika ovisno o toj informaciji ili pak usmjeravanja korisnika na geografski bliži data centar. Neovisno o tome koja opcija je odabrana, GSLB omogućava da se korisnički zahtjevi raspodjele 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 koji su raspoređeni u grupe, ovisno o aplikacijama koje poslužuju. Ideja je korisnika poslati na dostupan resurs. Međutim, i tu postoji nekoliko metoda i faktora koji se trebaju uzeti u obzir. Recimo, običan Round Robin ne uzima u obzir performanse servera. Ako radimo load balancing na temelju najmanjeg broja konekcija (Least Connection), možemo jako utjecati na performanse servera. Iz ovoga je vidljivo da ispravan odabir load balancing metode može imati veliki utjecaj na dostupnost aplikacija i rad sustava kao cjeline.

Persistence

Većina aplikacija je složena u three-tier (troslojnom) modelu i činjenica je da su one, u većini slučajeva, stateful – informacije koje korisnik izmjenjuje s aplikacijom čuvaju se između zahtjeva i odgovora i kritične su za ispravan rad aplikacije i zadovoljstvo korisnika. Neke od tih informacija su login podaci, stanje košarice za kupovinu, status, zadnja posjećena stranica i slično. Ovo uvjetuje da za vrijeme trajanja cijele sesije korisnički zahtjevi moraju uvijek 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 cookie koji se onda koristi kako bi load balancer ispravno usmjerio zahtjev na odgovarajući server. U današnje vrijeme kad je upotreba SSL/TLS protokola praktički obavezna, potrebno je prilagoditi način uspostave perzistencije. SSL/TLS omogućava sigurnu sesiju između klijenta i servera. Kako bi se osiguralo da obje strane mogu dekriptirati i koristiti podatke izmijenjene preko te konekcije, load balancer mora biti u mogućnosti poslati zahtjeve na isti server gdje je sesija i počela – zbog toga se koristi SSL/TLS based perzistencija. Međutim, korištenje perzistencije dovodi do toga da treba pažljivije razmotriti metodu load balancing-a koja će se koristiti zato što prije svega load balancer poštuje tablicu perzistiranih zapisa. U ovakvom scenariju, Least Connection može biti dobra opcija jer osigurava da nijedan pojedini resurs ne postane zatrpan sesijama dok 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 utjecaja na performanse i iskustvo krajnjeg korisnika.

Host-based load balancing

Host-based load balancing je jedan od najčešćih načina za postizanje skalabilnosti. Česta je pretpostavka da u ovom slučaju load balanceri nisu potrebni, budući da svi web serveri podržavaju ovu funkcionalnost. Ali to baš nije tako. Iako web ili aplikativni server mogu imati više hostova na sebi istovremeno, ne može uvijek load balancing raditi među njima. I zato – load balancer.

Da, naravno da web/aplikativni serveri mogu sami usmjeriti korisničke zahtjeve na određeni virtualni server, međutim ako se koristi load balancer – unosi se dodatna razina efikasnosti i može dovesti do smanjenja broja servera i potrebnog hardvera. Load balanceri u ovakvom scenariju omogućavaju jednostavnije planiranje opterećenja i osiguravanje da se za obradu korisničkog zahtjeva uvijek 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 aplikativnoj razini. Međutim, spominjemo HTTP protokol kao danas vjerojatno najrašireniji i korišteniji kad su u pitanju aplikacije.

HTTP protokol je izrazito fleksibilan pa time ima mogućnost da se load balancing radi po bilo čemu, uključujući i HTTP payload. Većina korisnika odabire donositi load balancing odluku prema onome sto je zapisano u nekom od HTTP headera: host, cookie, user agent, itd.

Opsežnost HTTP protokola omogućava load balancing po apsolutno svemu što vam padne napamet. Load balancing kod HTTP protokola prvo je usmjeravanje korisničkih zahtjeva, a tek onda load balancing. Kad dođe korisnički zahtjev, prvo se odabire virtualni server na koji će zahtjev biti poslan, a nakon toga se iz grupe servera odabire najoptimalniji resurs za obradu korisničkog zahtjeva. HTTP omogućava recimo i load balancing po API verziji, gdje je API verzija ugrađena u URI ili poseban HTTP header. Na ovaj način load balancer može razlikovati korisničke zahtjeve te osigurati da je zahtjev poslan na odgovarajući back-end servis na obradu.

I na kraju pitanje – i dalje mislite da vam LB ne treba? Ovdje smo naveli tek nekoliko karakteristika load balancera, a ako pogledamo F5 portfolio i njihov produkt F5 Local Traffic Manager vidjet ćete koliko tu postoji još dodatnih funkcionalnosti. Da, osnovna zadaća load balancera uvijek je bila raspodjela prometa prema pozadinskim serverima. Osnovna zadaća load balancera danas, u ovom zahtjevnom online svijetu, napredna je raspodjela tog istog prometa. Ali, load balanceri, poput F5 LTM proizvoda, nude i napredne optimizacije prometa koji prolazi kroz njih – od optimizacija na TCP nivou pa sve do brojnih optimizacija na aplikativnom nivou. Nude monitoring svih dijelova sustava i offload pojedinih funkcija sa servera, kako bi se osiguralo da je uvijek najbolji resurs odabran za obradu korisničkog zahtjeva i da serveri rade upravo ono za sto su i zamišljeni – 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 rješenja? Tražite partnera za implementaciju?
Kontaktirajte nas!