Vyrovnávanie záťaže

Internetové servisy

Jedna z najbežnejších aplikácií load balancingu je poskytnúť jednu internetovú servisu z viacerých serverov, označované ako serverová farma. Populárne webové stránky, veľké IRC siete, širokopásmové FTP stránky, NNTP servery a DNS servery využívajú systém load balancing.
Pre internetové servisy, load balancing je zvyčajne program, ktorý počúva na porte, na ktorý sa pripojí externý klient. Následne prepošle na jeden z koncových serverov, ktorý zvyčajne odpovie load balanceru. Toto povoľuje odpovedať klientu bez toho aby vedel o delení záťaže. taktiež to predchádza, aby klienti priamo pristupovali na koncové servre, takže to má aj bezpečnostnú úlohu, tým že interná štruktúra je skrytá a predchádza útokom na sieťové jadro a spusteniu servís na iných portoch.
Niektoré load balancere poskytujú funkciu, ktorá vykoná určitú operácu ak všetky koncové servre sú nedostupné. Môže to zahrňovať preposielanie požiadavkov na záložný load balancer alebo zobrazovať poruchovú hlášku.
one.example.org1.1.1.1
two.example.org2.2.2.2
www.example.orgNSone.example.org
www.example.orgNStwo.example.org
Alternatívna metóda load balancingu, ktorá zvyčajne nevyžaduje dedikovaný software alebo hardware, sa vola ROUND ROBIN DNS. Je to technika, viac IP adries sú priradené k jednému doménovému menu (napríklad www.example.org), klienty si sami určia, na ktorý server sa pripoja. Nevýhoda používania dedikovaného load balancera je, že zverejní klientom existenciu koncových serverov. Táto technika má aj iné výhody a nevýhody, záleží na stupni kontroly nad DNS serverom a žiadanej granulity load balancingu. Ďalšia z techník pre DNS používajúce Load balancing, ktorá je oveľa inteligentnejšia ako jedoduchý Round Robin, je delegovanie stránky www.example.org ako pod-doménu, ktorej zóny budú vybavované každým zo serverov, ktoré servisuju web stránku. Táto technika pracuje čiastočne dobre tam, kde jednotlivé servre sú rozmiestnené po internete.
Príklad:
Hoci súbor zón pre www.example.org na každom serveri bude rozdielny ako to, že každý server priradí svoju vlastnú IP adresu ako záznam A. na serveri “one” súbor zón na www.example.org nám povie:
@ in a1.1.1.1
Na serveri “two” rovnaký súbor zóny nám vráti:
@ in a2.2.2.2
Tým pádom, ak server je nedostupný, jeho DNS nebude odpovedať a web servisa nedostane žiadnu požiadavku. Taktiež ak sieť začne byť preťažená, nespoľahlivosť DNS spôsobí, že menej HTTP požiadaviek dosiahne server. Ďalej DNS odpoveď, ktorá sa vráti k požadovateľovi, bude takmer vždy najrýchlejšia zo servera v sieti, ktorá sa nachádza najbližšie k odosielateľovi – zabezpečuje geo-sensitive load balancing. Krátke TTL na záznam A takisto pomôže zaistiť, že prenos je presmerovaný v čo najkratšom čase, ak server vypadne.
Rôzne plánovacie algoritmy sú používané load balancermi, na určenie, ktorému koncovému serveru treba prideliť požiadavku. Jednoduché algoritmy zahŕňajú náhodný výber alebo roud robin. Zložitejšie zvažujú aj rôzne faktory ako sú: vyťaženosť servera, čas poslednej odpovede, upload/download status, počet aktívnych pripojení, geografická lokácia, možnosti servera alebo koľko prenosu bolo pridelené serveru za poslednú dobu. Vysoko výkonné systémy môžu využívať viaceré vrstvy load balancingu.
Okrem používania hardvérového riešenia na dosiahnutie load balancingu, je možné využiť aj softvérové, ktoré zahŕňa aj open source riešenia. Príklad zahŕňa aj doplnok mod_proxy_balancer pre Appache web server, Varnish, alebo Pround.
Vo viacvrstvovej architektúre, terminológia zahŕňa aj výrazy Bowties a Stovepipes. Stovpipes prezentuje situáciu, keď je transakcia, ktorá je odoslaná na najvyššiu vrstvu, ide po statickej ceste cez pole zariadení a softvéru za load balancerom, aby dosiahol svoj cieľ. Eventuélne, ak sú použité Bowties, na každej vrstve si transakcia môže zvoliť jednu z ciest, po tom ako ju aplikácie na jednotlivých vrstvách spracujú. Sieťové diagramy s tokom operácií sa podobajú na Stovepipes alebo Bowties alebo hybridným architektúram založené na presnej potrebe jednotlivých vrstiev.

Vytrvalosť

Dôležitou otázkou ohľadom load balancingu je ako spravovať informácie, ktoré musia byť sprostredkované medzi viacerými dopytmi počas pripojenia určitého užívateľa. Ak sú tieto informácie uložené lokálne na koncovom serveri, potom nasledujúca požiadavka idúca na iný server, by nebola schopná tieto údaje nájsť a použiť. Mohli by tam byť uložené informácie, ktoré by sa museli nanovo prepočitať, ale to by mohlo viesť k problému výkonu load balancingu…
Jedno riešenie na úložisko dát je poslať všetky požiadavky počas relácie jedného užívateľa na rovnaký server. Je to známe ako vytrvalosť alebo súdržnosť. Slabá stránka tejto techniky sú techniky pri automatických výpadkoch. Ak koncový server má výpadok, tak informácie relácie sa stanú nedostupné. Rovnaký problém je zväčša relevantný pre centrálne databázové servery, aj keď webová servery sú “bez stavu” a nie “súdržné”.
Priradenie k určitému serveru môže byť založené na užívateľskom mene, IP adrese klienta alebo náhodnom pridelení. Kvôli DHCP, prekladu sieťových adries a webových proxy, adresy klientov sa môžu počas jednej relácie zmeniť a služba sa stane nedostupnou. Náhodné pridelenia sa ukladajú na load balancingu, čo zvyšuje nároky na úložisko dát. Ak je load balancer nahradený alebo sa poškodí, informácie sa môžu stratiť a priradenia sa musia vymazať po uplynutí timeoutu alebo počas vysokej záťaže, aby sa predišlo presahnutiu miesta dostupného pre tabuľky priradenia. Metóda náhodného pridelenia taktiež vyžaduje aby klient udržiaval určitý stav, čo môže byť problém, napríklad, keď webový prehliadač zablokoval ukladanie cookies. Inteligentnejší load balancer využíva viaceré techniky udržiavania aby sa vyhol spomenutým chybám.
Iné riešenie is udržiavať dáta relácie v databáze. Vo všeobecnosti je to horšie na výkon, lebo to zvyšuje vyťaženosť databázy: databáza je najlepšie využívať pre krátkodobé dáta ako pre dáta relácií. Aby sme predišli tomu, že sa databáza stane single point of failure, a zvýšiť rozšíriteľnosť, databáza sa často replikuje medzi viacerými strojmi a load balancing je využitý na rozširovanie dopytov medzi replikátmi. Microsoftový produkt ASP.net State Server je ukážkou databázy pre relácie. Všetky servery vo web farme ukladajú dáta o relácii na State Serveri a každý zo serverov webovej farmy môže tieto dáta získať.
Našťastie existujú viac učinné prístupy. Najbežnejší prípad, keď klient je internetový prehliadač, dáta relácie môžu byť uložené priamo v prehliadači. jedna z techník je použitie cookies, využívajúce časovú známku a kódovanie. Ďalšou metódou je URL rewriting. Ukladanie dát o relácii v kliente je vo všeobecnosti preferované riešenie: potom load balancer môže jednoducho rozhodnúť, ktorý koncový server vybere na vykonanie požiadavky. Hoci táto metóda nie je úplne vhodné pre niektoré komplexné biznis riešenia, pri ktorých vyťažnie dát relácií je príliš veľké alebo prepočítavanie každej požiadavky na serveri je realizovateľný a URL rewriting nie je dovolené z hľadiska bezpečnosti, lebo užívateľ môže jednoducho upraviť zadávanú URL, čo zmení dáta reláacii.

V telekomunikáciách

Load balancing môže byť užitočný pri spravovaní redundantných komunikačných liniek. Napríklad spoločnosť môže mať viacero internetových pripojení zabezpečujúcich prístup na internet v prípade, že jedno z nich sa preruší.
Výpadkový zriadenie znamená, že jedna linka je určená pre normálne využívanie, zatial čo druhá je používaná iba v prípade poruchy prvej.
S Load balancingom môžu byť obe linky používané súčasne. Zariadenie alebo program rozhoduje, ktorá linka je dostupná na posielanie paketov a nepošle pakety linkou, ktorá má výpadok. Táto možnosť využívania viacerých liniek súčasne zvyšuje dostupnú šírku pásma.
Hlavné telekomunikačné spoločnosti majú viaceré cesty v ich sieťovaní alebo do externých sietí. Využívajú omnoho sofistikovanejší load balancing to prepnutie z jednej cesty do druhej, aby sa vyhli preťaženiu siete jednotlivých liniek a niekedy minimalizuje cenu prenosu medzi sieťami alebo zvyšuje spoľahlivosť siete.
Iný spôsob využívania load balancingu je na monitorovanie sieťových pripojení. Load balancer môže byť použitý na rozdelenie obrovských dátových tokov do niekoľkých menších tokov a použiť niekoľko sieťových analyzérov. Je to veľmi užitočné pri monitorovaní rýchlych sietí ako 10GbE alebo STM64.

Vzťah s failover

Load balancing je často použitý na implementovanie failover – prolongácia servisy po chybe jedného alebo viacerých jej komponentov. Komponenty sú neustále monitorované a ak prestanú odpovedať, load balancer je informovaný a prestane im posielať požiadavky. Hneď ako začne server opäť odpovedať, Load balancer ich zaradí naspäť do zoznamu a preposiela požiadavky. Aby toto fungovalo, musí byť minimálne jeden komponent presahujúci kapacitu servisy. toto je oveľa menej drahé a viac flexibilné riešenie ako failover postupy kde jediný “živý” komponent je spárovaný s jediným “backup“ komponentom, ktoré nahradí v prípade, že prvý komponent vypadne. Niektoré tymy RAID systému umožňuje taktiež využit hot spare pre podobné účely.