Naudojant apkrovos ba­lan­sa­vi­mą, prieiga prie serverio tolygiai pa­skirs­to­ma tarp įvairių apa­ra­ti­nės įrangos išteklių per techninį įrenginį, vadinamą apkrovos ba­lan­suo­to­ju. Tai užtikrina stabilų prieigos greitį, kuris yra itin svarbus siekiant pri­trauk­ti po­ten­cia­lius klientus ir už­si­tik­rin­ti esamus klientus.

Kas yra apkrovos pa­skirs­ty­mas?

Apkrovos ba­lan­sa­vi­mas yra ypač po­pu­lia­rus serverių tech­no­lo­gi­jų srityje ir apibūdina metodą, kai užklausos foniniame režime pa­skirs­to­mos tarp skirtingų serverių, var­to­to­jams to ne­pa­ste­bint. Šiam tikslui nau­do­ja­mas apkrovos ba­lan­suo­to­jas gali būti įgy­ven­din­tas kaip aparatinė arba prog­ra­mi­nė įranga. Jis vienam domenui priskiria kelis serverius, ne­su­kel­da­mas adresų konfliktų, o prieiga prie jo vykdoma per viešąjį domeną.

Pa­gal­bi­niai ži­nia­tink­lio serveriai pa­va­di­na­mi pridedant domeno priesagas www1, www2, www3 ir t. t. Tai leidžia taikyti apkrovos ba­lan­sa­vi­mą, kad svetainė būtų pa­sie­kia­ma tuo pačiu URL adresu, net jei ją ap­tar­nau­ja keli serveriai. Taip iš­ven­gia­ma serverių perkrovos, nes išoriniai už­klau­si­mai pa­skirs­to­mi tarp įvairių fizinės įrangos vienetų klas­te­ry­je. Var­to­to­jai paprastai to nepastebi, nes užklausų pa­skirs­ty­mas vyksta fone pagal su­dė­tin­gus al­go­rit­mus.

Apkrovos ba­lan­sa­vi­mas gali būti svarbus ne tik ži­nia­tink­lio serverių atveju, bet ir, pa­vyz­džiui, kom­piu­te­riuo­se, kuriuose veikia keli pro­ce­so­riai. Tokiais atvejais apkrovos ba­lan­suo­to­jas užtikrina, kad užklausos būtų tolygiai pa­skirs­ty­tos tarp skirtingų pro­ce­so­rių, taip pa­di­di­nant skai­čia­vi­mo galią. Apkrovos ba­lan­suo­to­jai taip pat yra rei­ka­lin­gi naudojant kon­t­ei­ne­rių prog­ra­mi­nę įrangą, pa­vyz­džiui, „Ku­ber­ne­tes“. Šiuo atveju jie užtikrina, kad darbo apkrovos būtų efek­ty­viai pa­skirs­ty­tos tarp įvairių podų.

Kaip veikia apkrovos pa­skirs­ty­mas?

Užklausos ži­nia­tink­lio serveriui, pvz., puslapių peržiūrų forma, iš pradžių ap­do­ro­ja­mos apkrovos pa­skirs­ty­mo įren­gi­ny­je. Šis įrenginys perima apkrovos pa­skirs­ty­mą, per­siun­čiant pri­si­jun­gi­mo bandymus į skir­tin­gus serverius. Pats apkrovos pa­skirs­ty­mo įrenginys gali būti įgy­ven­din­tas kaip aparatinė arba prog­ra­mi­nė įranga, tačiau principas lieka tas pats: užklausa pasiekia apkrovos pa­skirs­ty­mo įrenginį ir, pri­klau­so­mai nuo naudojamo metodo, įrenginys arba prog­ra­mi­nė įranga per­siun­čia duomenis į ati­tin­ka­mą serverį.

Techninis pagrindas yra DNS procedūra: var­to­to­jai prie svetainės pri­si­jun­gia tik per URL adresą. Šis adresas, naudojant DNS, kon­ver­tuo­ja­mas į IP adresą, kuris vėliau nukreipia į apkrovos ba­lan­sa­vi­mo įrenginį. Idealiu atveju var­to­to­jai šio proceso nepastebi.

Image: Diagram of how load balancing works
A load balancer dist­ri­bu­tes the load of client accesses over the internet or web to various servers.

Kokie yra su­ba­lan­suo­to apkrovos pa­skirs­ty­mo pri­va­lu­mai?

Tinkamai įdiegtas apkrovos pa­skirs­ty­mo įrenginys turi šiuos tris pag­rin­di­nius pri­va­lu­mus:

  • Op­ti­mi­zuo­tas pri­si­jun­gi­mo laikas: pa­skirs­tant srautą keliems ser­ve­riams galima su­trum­pin­ti pri­si­jun­gi­mo laiką, net ir tuo atveju, kai vienu metu gaunama daug užklausų.
  • Didesnis at­spa­ru­mas gedimams: apkrovos ba­lan­sa­vi­mo įrenginys padidina atsparumą gedimams, nes srautas iš lėto vei­kian­čio serverio au­to­ma­tiš­kai nu­krei­pia­mas į kitus klasterio serverius. Jei serveris ne­pa­sie­kia­mas, talpinama svetainė lieka prieinama.
  • Su­pa­pras­tin­ta sistemos priežiūra: apkrovos ba­lan­sa­vi­mas labai pa­leng­vi­na serverių sistemos priežiūrą. Kon­fi­gū­ra­ci­jos ir at­nau­ji­ni­mai gali būti atliekami ser­ve­riams veikiant be pastebimo našumo su­ma­žė­ji­mo. Apkrovos ba­lan­suo­to­jas aptinka prie­žiū­ros būsenas ir ati­tin­ka­mai nukreipia užklausas.

Kokie yra apkrovos pa­skirs­ty­mo tipai?

Tai, kaip pa­skirs­to­mi gaunami už­klau­si­mai, priklauso nuo pa­si­rink­tos algoritmo rūšies. Po­pu­lia­riau­si apkrovos ba­lan­sa­vi­mo al­go­rit­mai yra: „Round Robin“, „Weighted Round Robin“, „Least Con­nec­tions“ ir „Weighted Least Con­nec­tions“.

„Round Robin“

„Round Robin“ – tai procedūra, kai gaunami serverio užklausos ap­do­ro­ja­mos apkrovos ba­lan­sa­vi­mo įrenginio eilėje ir pa­skirs­to­mos tarp kelių serverių. Kiekviena nauja užklausa pri­ski­ria­ma eilėje esančiam kitam serveriui. Dėl to prieigos užklausos gali būti tolygiai pa­skirs­ty­tos po visą apkrovos ba­lan­sa­vi­mo klasterį. Nesvarbu, koks skubus yra už­klau­si­mas ar kokia didelė serverio apkrova, „Round Robin“ visus procesus traktuoja vienodai. Apkrovos ba­lan­sa­vi­mo įren­gi­niai, vei­kian­tys pagal „round-robin“ principą, ypač tinka aplinkoms, kuriose visos instancės turi maždaug vienodus išteklius.

Svertinis „Round Robin“

Kla­si­ki­nio „round-robin“ algoritmo trūkumus ne­vie­na­ly­tė­se serverių grupėse galima kom­pen­suo­ti taikant svertinį „round-robin“ pa­skirs­ty­mą. Gaunami už­klau­si­mai pa­skirs­to­mi at­si­žvel­giant į kiekvieno serverio statinį svorį. Šį svorį iš anksto nustato ad­mi­nist­ra­to­rius.

Pa­vyz­džiui, ga­lin­giau­siam serveriui galima priskirti vertę „100“, o mažiau na­šie­siems ser­ve­riams – vertę „50“. Tokiu atveju serveris, kuriam priskirta vertė „100“, per vieną ciklą iš apkrovos ba­lan­sa­vi­mo įrenginio gautų du už­klau­si­mus, o serveris, kuriam priskirta vertė „50“, – tik vieną už­klau­si­mą. Svorinis „Round Robin“ metodas turėtų būti taikomas apkrovos ba­lan­sa­vi­mui visų pirma tais atvejais, kai klasterio serveriai turi skir­tin­gus išteklius.

Ma­žiau­sias jungčių skaičius

Abu „round-robin“ al­go­rit­mai, kai apkrovos ba­lan­suo­to­jas serijiniu būdu paskirsto serverių užklausas, ne­at­si­žvel­gia į tai, kiek ryšių pavaldūs serveriai turi palaikyti per tam tikrą lai­ko­tar­pį. Dėl to viename klasterio serveryje gali su­si­kaup­ti daugybė ryšių. Tai lemia serverio perkrovą, net jei jis tvarko mažiau ryšių nei kiti. „Ma­žiau­siai ryšių“ al­go­rit­mas apsaugo nuo to. Jis paskirsto užklausas rem­da­ma­sis kiekvieno serverio esamais ryšiais– tas, kuris turi ma­žiau­siai aktyvių ryšių, gauna kitą užklausą iš apkrovos ba­lan­sa­vi­mo įrenginio. Šis apkrovos ba­lan­sa­vi­mo metodas re­ko­men­duo­ja­mas vie­na­ly­tėms serverių grupėms, kuriose visi kom­piu­te­riai turi panašius išteklius.

Svertinis mažiausių jungčių skaičiaus metodas

Jei serverių klasterio serverių pajėgumai skiriasi, vietoj algoritmo, pagrįsto mažiausiu pri­si­jun­gi­mų skaičiumi, reikėtų taikyti apkrovos ba­lan­sa­vi­mą, grin­džia­mą esamų pri­si­jun­gi­mų svertiniu pa­skirs­ty­mu. Šis metodas at­si­žvel­gia tiek į aktyvų pri­si­jun­gi­mų skaičių serveryje, tiek į ad­mi­nist­ra­to­riaus nu­sta­ty­tus svorio ko­e­fi­ci­en­tus. Tai užtikrina su­ba­lan­suo­tą apkrovos pa­skirs­ty­mą serverių klas­te­ry­je. Nauji už­klau­si­mai apkrovos ba­lan­sa­vi­mo įrenginio au­to­ma­tiš­kai nu­krei­pia­mi į tuos serverius, kurių aktyvų pri­si­jun­gi­mų ir ati­tin­ka­mo serverio svorio ko­e­fi­ci­en­to santykis rodo mažiausią esamą apkrovą.

Kokios problemos gali kilti naudojant apkrovos pa­skirs­ty­mą?

Ypač elekt­ro­ni­nės prekybos sek­to­riu­je apkrovos ba­lan­sa­vi­mas dažnai susiduria su sunkumais. Štai pavyzdys: svetainės lan­ky­to­jai į pirkinių krepšelį įdeda prekes, kurias nori įsigyti. Šios prekės išlieka iš­sau­go­tos visą sesijos laiką, ne­pri­klau­so­mai nuo to, į kurį puslapį var­to­to­jai pereina in­ter­ne­ti­nė­je par­duo­tu­vė­je. Įprastas apkrovos ba­lan­suo­to­jas užklausas pa­skirs­ty­tų skir­tin­giems ser­ve­riams. Tai reiškia, kad krepšelio turinys būtų prarastas.

Šiai problemai išspręsti galima taikyti du metodus. Pirma, apkrovos pa­skirs­ty­mo įrenginys gali reaguoti į vartotojų IP adresus. Tokiu atveju, pa­vyz­džiui, užklausos iš to paties IP adreso visada nu­krei­pia­mos į tą patį serverį. Kitas būdas – iš pačios užklausos iš­skai­ty­ti sesijos iden­ti­fi­ka­to­rių, kad būtų galima nustatyti, į kurį serverį užklausa turi būti nusiųsta.

Kodėl apkrovos pa­skirs­ty­mo įren­gi­niai yra tokie svarbūs?

Jei uždirbate pinigus internetu, jūsų verslas negali sau leisti serverio gedimo. O jei naudojate tik vieną serverį ir jis sugenda dėl perkrovos, jūsų svetainė tampa ne­pa­sie­kia­ma po­ten­cia­liems klientams. Tai sukelia keletą problemų: pirma, perkrovos metu negalite gauti pajamų. Negalima už­si­sa­ky­ti paslaugų ir atlikti pirkimų. Be to, mažėja (po­ten­cia­lių) klientų pa­si­ti­kė­ji­mas. Tai dvigubai blogai var­to­to­jams, kurie susiduria su serverio perkrova užsakymo proceso metu. Dažnai kyla didelė ne­aiš­ku­mas, ir nu­ken­tė­ju­sie­ji nežino, ar užsakymas iš tikrųjų buvo gautas ir už­re­gist­ruo­tas sistemoje.

Net jei savo paslaugų ne­tei­kia­te tie­sio­giai internetu, jūsų svetainė turėtų būti pa­sie­kia­ma bet kuriuo metu. Svetainė yra vienas iš pag­rin­di­nių in­for­ma­ci­jos gavimo šaltinių. Jei po­ten­cia­lūs klientai ieško in­for­ma­ci­jos apie jūsų įmonę internete ir negali patekti į jūsų svetainę, jie grei­čiau­siai kreipsis į jūsų kon­ku­ren­tus. Tokią riziką galite sumažinti naudodami apkrovos ba­lan­sa­vi­mo įrenginį.

Kaip įdiegti apkrovos pa­skirs­ty­mą savo įmonėje

Apkrovos ba­lan­sa­vi­mas vir­tu­alia­me serveryje gali būti įgy­ven­din­tas naudojant tiek apa­ra­ti­nės, tiek prog­ra­mi­nės įrangos spren­di­mus. Daugybė tiekėjų siūlo pro­fe­sio­na­lius komp­lek­si­nius paketus, kurie teikiami kaip „Inf­rast­ruc­tu­re-as-a-Service“ (IaaS) arba kaip tinklo kom­po­nen­tas jūsų pačių IT inf­rastruk­tū­rai.

Kadangi ko­mer­ci­nių apkrovos ba­lan­sa­vi­mo įrenginių įsi­gi­ji­mas paprastai yra brangus, mažesnės įmonės dažnai renkasi atvirojo kodo spren­di­mus, pa­vyz­džiui, „NGINX“. Tai eko­no­miš­kas būdas už­tik­rin­ti aukštą jūsų įmonės svetainės ar kitų interneto projektų pri­ei­na­mu­mą, efek­ty­viai pa­skirs­tant apkrovą serverių tinkle. Interneto prie­glo­bos sek­to­riu­je apkrovos ba­lan­sa­vi­mas taip pat dažnai siūlomas kaip papildoma debesų serverių funkcija.

Go to Main Menu