Koormusjaotus

**Koormusjaotus** (inglise keeles *load balancing*) on ülesannete kogumi jaotamine ressursside (arvutusüksuste) vahel, eesmärgiga muuta nende üldine töötlemine tõhusamaks. Koormusjaotur võib optimeerida reaktsiooniaega ja vältida mõne arvutussõlme ebaühtlast ülekoormamist, samal ajal kui teised arvutussõlmed jäävad tühikäiku

## Koormusjaoturi eelised
Koormusjaotur on ülioluline mehhanism, mis haldab ja reguleerib tõhusalt Interneti-liikluse voogu rakendusserverite ja nende kasutajate või klientide vahel.

#### Rakenduse saadavus
Serveri rike või hooldus võib põhjustada rakenduse seisaku pikenemist, mille tulemuseks on rakendus kasutajatele kättesaamatu. Koormusjaotur suurendab süsteemi vastupidavust, tuvastades serveriprobleemid ja suunates kliendi liikluse ümber töötavatasse serveritesse.

* Saad käivitada rakendusserveri hooldust või uuendusi ilma rakenduse seisakuta.
* Tagab varundussaitidele suurõnnetus taastumist.
* Teeb tervisekontrolle ja väldib probleeme, mis võib põhjustada seisakuid.

#### Rakenduse skaleeritavus
Koormusjaoturit kasutatakse võrguliikluse tõhusaks jaotamiseks paljude serverite vahel. See võimaldab rakendustel tõhusalt hallata suurt hulka kliendipäringuid.

* Hoiab ära bottleneck-e serverites.
* Ennustab rakenduste liiklust, et saaksid vajadusel erinevaid servereid lisada või eemaldada.
* Lisab süsteemile liiasust, et saaksid enesekindlalt skaleerida.

#### Rakenduse turvalisus
Koormusjaotur on integreeritud turvafunktsioonidega, et pakkuda Interneti-rakendustele täiendavat kaitsetaset. Need on väärtuslikud ressursid hajutatud teenuse keelamise rünnakute leevendamiseks, kus pahatahtlikud osalejad koormavad rakendusserverit suure hulga samaaegsete päringutega, mis põhjustab serveri seisakuid.

*Jälgib liiklust ja blokeerib pahatahtliku sisu.
*Mõju minimeerimiseks suunab ründeliikluse automaatselt ümber mitme taustaserverile.
*Täiendab turvalisuse tagamiseks suunab liikluse läbi võrgu tulemüüride rühma.

#### Rakenduse jõudlus
Koormusjaotur suurendab rakenduste jõudlust, suurendades reageerimisaega ja minimeerides võrgu latentsust.

* Rakenduse jõudluse parandamiseks jaotab koormus serverite vahel ühtlaselt.
* Viiteaja vähendamiseks suunab kliendi taotlused geograafiliselt lähemale asuvasse serverisse.
* Tagab füüsiliste ja virtuaalsete andmetöötlusressurssie töökindlust ja jõudlust.

## Kasutusjuhtumid
Koormusjaotur algoritme kasutatakse laialt veebisaitide HTTP-päringute haldamisel. Võimaldades kasutada suurt hulka päringuid sekundis koos tõhusa probleemide lahendamisega paralleelsete arvutuste abil

### Koormusjaoturi algoritmid

Koormusjaoturit kasutatakse sageli ühe Interneti-teenuse pakkumiseks mitmest serverist või serveripargist. Tavaliselt tasakaalustatud koormusega süsteemid on näiteks tuntud suure ribalaiusega failiedastusprotokolli (FTP) saidid, veebisaidid, võrgu edastusprotokolli (NTP) serverid, domeeninimesüsteemi (DNS) serverid ja andmebaasid.

#### Round-robin koormusjaotur
Round-robin algoritm peetakse koormusjaoturi lihtsamaiks meetodiks. See jaotab klientide päringuid rakenduseserverite vahel ühtlaselt, järgides otsest pöörlemismustrit. Näiteks kui rakendusservereid on kolm, suunatakse esimene kliendipäring esimesse serverisse, teine päring suunatakse teisele serverile, kolmas päring kolmandale serverile, neljas päring tagasi esimesse serverisse ja nii edasi.

#### Weighted Round-robin
Weighted Round-robin on Round-robini koormusjaoturi meetodi täiustus. Selle korral määrab võrguadministraator igale kogumis olevale serverile fikseeritud arvulise kaalukuse. Suurima efektiivsuse ja võimsusega serverile võib anda kaalukusväärtuseks 100. Teisest küljest võib poole väiksema töötlemisvõimsusega serverile määrata kaalukuseväärtuse 50 ja nii edasi pargi ülejäänud serverite puhul. Suurema kaalukusega serverid saavad suurema arvu päringuid. Päringute jaotamine järgib siiski tsüklilist mustrit, suurema kaalukusega servitele määratakse igas tsüklis rohkem seansse.

#### DNS koormusjaotur
DNS-i koormusjaotur on meetod, mis jaotab sissetuleva võrguliikluse mitme serveri vahel läbi, parandades seeläbi rakenduse või teenuse kättesaadavust jõudlust. Kui server pole saadaval või on ülekoormatud, määrab DNS-i lahendaja teistele serveritele ikkagi IP-aadressid, tagades liiasuse ja tõrkesiirde võimalusi

#### Source IP Hash koormusjaotur
Source IP Hash koormusjaotur meetod kasutab kliendi päringu lähte- ja sihtkoha IP-aadresse, et luua eraldiseisev räsivõti, mis võimaldab kliendi konkreetsele serverile määrata. Juhul, kui seanss katkeb, saab võtme uuesti luua, tagades, et klient suunatakse tagasi algsesse serverisse.

#### Static Load Balancing
Staatiline koormusjaotur meetod jaotab liiklust serverite vahel, võtmata arvesse süsteemi või serverite endi hetkeseisu. Need meetodid kasutavad fikseeritud algoritme, mis jaotab liikluse ühtlaselt, kas etteantud järjekorras või juhuslikult, rühmab igasse serverisse. Teisest küljest võtab dünaamiline koormusjaotur algoritmid arvesse süsteemi ja iga üksiku serveri hetkeseisundit, kasutades seda teavet liikluse jaotmaise määramiseks.

## Dünaamiline koormusjaotur
Dünaamilised koormusjaoturi tasakaalustamisse algoritmid analüüsivad enne liikluse serverite hetkeseisukorda.

#### Least Connection koormusjaotur
Least Connection koormusjaotur on meetod kliendi päringute jagamiseks rakendusserveritele, mis põhineb serveril, millel on kõige vähem aktiivseid ühendusi kui päring esitatakse. Juhtudel, kui rakendusserveritel on sarnased spetsifikatsioonid, võib üks server olla pikemaajaliste ühenduste tõttu ülekoormatud. Arvestades aktiivsete ühenduste koormust, sobib see algoritm hästi, kus sissetulevad päringud on erineva ühenduse kestusega ning serverid on töötlemisvõimaluste ja saadaolevate ressursside poolest sarnased

#### Least response time meetod
Koguaega, mis serveril kulub sissetulevate päringute töötlemiseks ja vastuse saatmiseks, nimetatakse reageerimisajaks. Võttes arvesse nii serveri reageerimisaega kui ka aktiivseid ühendusi, tuvastab väikseima reaktsiooniaja meetod optimaalse serveri. Koormusejaoturid kasutavad seda algoritmi, et tagada kiirem teenindus kõigile kasutajatele.

## Staatiline Vs Dünaamiline koormusjaotur

#### Staatilise koormusjaoturi eelised
* Rakendamise lihtsus: staatilist koormusejaotamist on selle pideva konfiguratsiooni tõttu lihtsam seadistada ja hallata, mis muudab selle hooldamise lihtsamaks.
* Usaldusväärsus: keskkondades, kus töökoormus on ühtlane ja prognoositav, võib staatiline koormusjaotur olla usaldusväärtsam, kuna see jaotab liiklust vastavalt etteantud seadistusele.
* Vähendatud arvutuslikud üldkulud: staatiline koormusejaotur nõuab tavaliselt vähem arvutusressursse, kuna liiklusjaotus on fikseeritud ega vaja pidevat jälgimist ega kohandamist.

#### Staatilise koormusjaoturi puudused
*Vähese kohanemisvõime: paindumatus põhjustab suutmatust kohaneda erinevate tingimustega, nagu liikluse äkilised hüpped või serveri võimsuse kõikumised, mis viib ebatõhusa kasutamiseni.
*Ülekoormusoht: töökoormuse ebaühtlane jaotus võib põhjustada teatud serverite ülekoormamise ohtu, jättes samal ajal teised alakautatuks, mõjutades süsteemi üldist jõudlust.
*Piiratud tõrketaluvus: staatilised koormusejaoturi mehhanismid võivad serveri tõrgetega toime tulla, kuna need ei kohandu dünaamiliselt ressursside saadavuse muutustega.

#### Dünaamilise koormusjaoturi eelised
*Dünaamiline koormusjaotur suudab reaalajas kohaneda muutuvate olukordadega, muutes selle sobivaks mitmekesise ja ettearvamatu töökoormusega keskkondades.
*See optimeerib ressursside kasutamist, suunates liikluse kõige kättesaadavamatele ja võimekamatele serveritele, parandades seeläbi süsteemi jõudlust.
*Dünaamiline koormusjaotur on väga skaleeritav, kuna see suudab tõhusalt jaotada töökoormust erineva arvu serverite vahel, võttes arvesse suuruse ja võimsuse muutusi.

#### Dünaamilise koormusjaoturi puudused
*Dünaamilise koormusjaoturi juurutamiseks on vaja keerulisi algoritme ja mehhanisme, mis võib suurendada keerukust.
*Pideva jälgimise ja reaalajas reguleerimise vajadus võib põhjustada arvutuslike kulude suurenemist, mis mõjutab süüstemi jõudlust.
*Dünaamiliste koormusjaoturi algoritmide ja parameetrite peenhäälestus tekitab konfiguratsioonis probleeme, mis võib viia ebaoptimaalsete tulemusteni, kui seda ei tehta õigesti.

## Koormusjaotur tüübid
Koormusjaoturit saab liigitada kolme põhiklassifikatsiooni kriteeriumide alusel, mida koormusjaotur kliendi liikluse ümbersuunamise taotluses uurib.

#### Rakenduse koormusjaotur
Mitut serverit, mis on pühendatud ühele rakenduse funktsioonile, kasutatakse keerukates kaasaegsetes rakendustes, mida sageli toetavad mitmed serveripargid. Liikluse tõhusaks haldamiseks analüüsivad rakenduste koormusjaoturid päringu sisu näiteks HTTP päised või SSL-i seansi ID-d ja suunavad selle vastavalt ümber.

#### Võrgukoormusjaotur
Võrgukoormusejaoturid analüüsivad IP-aadresse ja täiendavad võrguandmeid, et liiklust tõhusalt ümber suunata. Nad jälgivad rakenduste liikluse päritolu ja saavad määrata fikseeritud IP-aadressi mitmele serverile. Koormusjaoturid kasutavad nii staatilisi kui ka dünaamilisi koormusjaotur algoritme.

## Viited