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
Koormusjaotur on ülioluline mehhanism, mis haldab ja reguleerib tõhusalt Interneti-liikluse voogu rakendusserverite ja nende kasutajate või klientide vahel.
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.
Koormusjaoturit kasutatakse võrguliikluse tõhusaks jaotamiseks paljude serverite vahel. See võimaldab rakendustel tõhusalt hallata suurt hulka kliendipäringuid.
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.
Koormusjaotur suurendab rakenduste jõudlust, suurendades reageerimisaega ja minimeerides võrgu latentsust.
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[2]
Koormusjaoturit kasutatakse sageli ühe Interneti-teenuse pakkumiseks mitmest serverist või serveripargist.[3] 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 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.[4]
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.[5]
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[6]
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.[7]
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ünaamilised koormusjaoturi tasakaalustamisse algoritmid analüüsivad enne liikluse serverite hetkeseisukorda.
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[9]
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.
Koormusjaoturit saab liigitada kolme põhiklassifikatsiooni kriteeriumide alusel, mida koormusjaotur kliendi liikluse ümbersuunamise taotluses uurib.
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õ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.