Obsah[Skryť][Šou]
Dostupnosť aplikácií sa nikdy nebrala tak vážne ako dnes, keď aplikácie používame na viac než len komunikáciu, či už osobnú alebo profesionálnu a keď sú aplikácie biznisom.
Aplikácie, ktoré nie sú neustále online alebo sú nestabilné, strácajú svojich používateľov a relevantnosť, prípadne sa stávajú zastaranými. Stalo sa to bleskovo. Keďže internet nikdy nespí a funguje 24 hodín denne, 7 dní v týždni, rovnaká myšlienka musí platiť aj pre aplikácie.
Škálovateľnosť je rozhodujúca pre to a zabezpečenie dostupnosti aplikácií. Vyvažovanie záťaže je jednou z najdôležitejších zložiek pri zabezpečovaní dostupnosti. Mnoho ľudí stále verí, že vyrovnávanie záťaže sa dá dosiahnuť pomocou jednoduchého skriptu.
Nie je to však tak. Iba ona poskytuje prístup k programom po celom svete – kedykoľvek a z akéhokoľvek zariadenia.
V tomto príspevku sa okrem iného podrobne pozrieme na vyvažovanie záťaže, jeho algoritmy a ako súvisí s mikroslužbami. Poďme začať!
Čo je to vyvažovanie záťaže?
Keďže dopyt po webovej stránke alebo obchodnej aplikácii rastie, jediný server čoskoro nebude schopný zvládnuť celú záťaž. Organizácie rozdeľujú pracovné zaťaženie na množstvo serverov, aby uspokojili dopyt. Táto metóda, známa ako „vyvažovanie záťaže“, zabraňuje preťaženiu jedného servera, čo môže spôsobiť jeho spomalenie, zrušenie požiadaviek alebo dokonca zlyhanie.
Vyvažovanie záťaže rovnomerne rozdeľuje sieťovú prevádzku, aby sa predišlo zlyhaniu v dôsledku preťaženia zdrojov. Aplikácie, webové stránky, databázy a ďalšie počítačové zdroje fungujú lepšie a sú dostupnejšie pomocou tejto metódy. Pomáha tiež pri správnom a včasnom spracovaní požiadaviek používateľov.
Z pohľadu používateľa slúži vyrovnávanie záťaže ako neviditeľný prostredník medzi klientom a kolekciou serverov, ktorý zaisťuje, že sa nezrušia požiadavky na pripojenie. Aplikácie, webové stránky, databázy a online služby by s najväčšou pravdepodobnosťou skolabovali, ak by sa dopyt stal príliš veľkým bez vyrovnávania záťaže.
Na jeden web s vysokou návštevnosťou je možné súčasne odoslať státisíce požiadaviek používateľov. Na správne naplnenie webových stránok požadovaným obsahom, ako je text, obrázky, video a audio streaming, je potrebných viacero serverov. Vyvažovanie záťaže sa bežne používa na farmách serverov webových stránok s vysokou návštevnosťou, ako aj na serveroch DNS, databázach a lokalitách FTP (File Transfer Protocol).
Ak je jeden server nadmerne zaťažený, môže fungovať zle alebo dokonca zlyhať. Nástroje na vyrovnávanie záťaže znižujú možnosť prestojov tým, že požiadavky používateľov rozdeľujú rovnomerne medzi kolekciu serverov. Ak jeden zo serverov v skupine zlyhá, prevádzka sa presmeruje na iné servery v skupine. Nástroj na vyrovnávanie zaťaženia automaticky pridáva nové servery do procesu distribúcie prevádzky, keď sú pridané do oblasti serverov.
Ako funguje vyrovnávanie záťaže?
Funguje to nasledovne:
- Keď klient dostane požiadavku, napríklad cez prehliadač alebo aplikáciu, pokúsi sa pripojiť k serveru.
- Keď nástroj na vyrovnávanie záťaže dostane požiadavku, nasmeruje ju na jeden zo serverov v skupine serverov na základe vzorov stanovených algoritmom (alebo farmou).
- Server prijme požiadavku na pripojenie a odpovie klientovi prostredníctvom nástroja na vyrovnávanie zaťaženia.
- Keď nástroj na vyrovnávanie záťaže dostane odpoveď, porovná IP adresu klienta s IP adresou vybraného servera. Potom sa odpoveď odošle s paketom.
- Znižovanie zaťaženia SSL je proces dešifrovania údajov pomocou šifrovacieho protokolu Security Socket Layer, takže servery to nemusia.
- Postup sa opakuje, kým sa relácia neskončí.
Metódy vyrovnávania záťaže
Ak chcete vybrať, ktorý zo serverov v serverovej farme dostane ďalšiu požiadavku, každá technika vyrovnávania záťaže používa súbor kritérií. Existuje päť typických prístupov na vyrovnávanie záťaže:
- Okrúhly Robin: Toto je predvolený prístup a funguje presne tak, ako to znie. Nástroj na vyrovnávanie záťaže distribuuje požiadavky v rotujúcom vzore, počnúc prvým serverom v skupine a pokračuje nadol, kde čaká na opätovné zavolanie. Táto metóda zabezpečuje, že každý server spracováva približne rovnaký počet pripojení.
- Vážená Round Robin: Tento prístup priraďuje každému serveru váhu (alebo preferenciu), ktorá je vo všeobecnosti úmerná jeho kapacite. Čím viac požiadaviek server dostane, tým vyššia je váha. Napríklad server s hodnotou hmotnosti dve dostane dvakrát toľko požiadaviek ako server s hodnotou hmotnosti jedna.
- Lepkavá relácia: Tento prístup, známy aj ako pretrvávanie relácie, spája určitých klientov a servery počas trvania relácie. Na vytvorenie prepojenia používa nástroj na vyrovnávanie zaťaženia súbor cookie alebo IP adresu používateľa na identifikáciu atribútu používateľa. Po nadviazaní spojenia sú požiadavky používateľa smerované na rovnaký server, kým sa relácia neskončí. To optimalizuje sieťové zdroje a zároveň zlepšuje používateľskú skúsenosť.
- Najmenej pripojení: Táto stratégia predpokladá, že všetky požiadavky budú mať za následok rovnaké zaťaženie servera. Výsledkom je, že server s najmenším počtom požiadaviek dostane ďalšiu požiadavku.
- IP hash: Tento algoritmus generuje jedinečný hash kľúč na základe zdrojovej a cieľovej IP adresy klienta a servera. Kľúč sa používa na smerovanie požiadavky a umožňuje obnovenie strateného spojenia s rovnakým serverom.
Hardvér vs. Softvérové vyrovnávače zaťaženia
Hardvérový vyrovnávač zaťaženia
Fyzický hardvér, ako napríklad zariadenie, tvorí vyrovnávače zaťaženia hardvéru. Tieto smerujú prevádzku na servery v závislosti od faktorov, ako je počet existujúcich pripojení, využitie procesora a výkon servera. Hardvérové vyrovnávače zaťaženia majú vlastný firmvér, ktorý je potrebné udržiavať a aktualizovať, keď budú k dispozícii nové verzie a bezpečnostné opravy.
Hardvérové vyrovnávače záťaže často poskytujú vyšší výkon a kontrolu, ako aj širšiu škálu možností, ako je autentifikácia Kerberos a hardvérová akcelerácia SSL, vyžadujú si však určitú úroveň odborných znalostí v oblasti správy a údržby. Pretože hardvérové vyrovnávače zaťaženia sú menej flexibilné a škálovateľné ako softvérové vyrovnávače zaťaženia, existuje tendencia k nadmernému poskytovaniu vyrovnávačov hardvérového zaťaženia.
Software Load Balancer
Softvérové nástroje na vyrovnávanie zaťaženia sa zvyčajne nastavujú jednoduchšie ako ich hardvérové náprotivky. Sú tiež nákladovo efektívnejšie a prispôsobiteľnejšie a dobre spolupracujú s prostrediami na vývoj softvéru. Softvérová metóda vám umožňuje prispôsobiť vyrovnávač zaťaženia presným požiadavkám vášho prostredia. Zvýšená flexibilita môže prísť na úkor dodatočného času stráveného nastavovaním vyrovnávača zaťaženia.
Softvérové balancéry vám poskytujú väčšiu flexibilitu pri vykonávaní úprav a aktualizácií ako hardvérové, ktoré majú viac uzavretý prístup. Vopred zabalené virtuálne stroje možno použiť ako nástroje na vyrovnávanie zaťaženia softvéru (VM). Virtuálne stroje vám ušetria čas potrebný na nastavenie, ale nemusia mať všetky funkcie dostupné v ich hardvérových náprotivkoch.
Jednoduchá implementácia vyrovnávania záťaže
Na to použijeme knižnicu Spring Cloud vytvárať aplikácie ktoré sa pripájajú k iným aplikáciám spôsobom s vyváženou záťažou. Pri spracovávaní požiadaviek na vzdialenú službu môžeme jednoducho zostaviť vyvažovanie záťaže pomocou akejkoľvek techniky, ktorá sa nám páči. Zvážte nasledujúci kód ako príklad. Začneme základnou serverovou aplikáciou.
Server bude mať iba jeden koncový bod HTTP a bude prevádzkovaný v niekoľkých inštanciách. Potom vytvoríme klientsku aplikáciu, ktorá používa Load Balancer na distribúciu požiadaviek medzi niekoľko inštancií servera.
server
Začíname základom Jarná topánka aplikácia pre náš vzorový server:
Na začiatok vložíme prispôsobiteľnú premennú s názvom instance_ID. To nám pomáha rozlíšiť medzi mnohými inštanciami, ktoré fungujú. Potom vytvoríme jeden koncový bod HTTP GET, ktorý vráti správu a ID inštancie.
Predvolená inštancia s ID 1 bude fungovať na porte 8080. Na spustenie druhej inštancie potrebujeme pridať iba niekoľko parametrov programu:
Zákazník
Poďme sa teraz pozrieť na kód klienta. Tu prichádza na scénu Load Balancer, takže začnime jeho začlenením do našej aplikácie:
Následne vyvíjame implementáciu ServiceInstanceListSupplier. Toto je jedno z najdôležitejších rozhraní v Load Balancer. Špecifikuje, ako nájdeme dostupné inštancie služieb.
V našej vzorovej aplikácii pevne zakódujeme dve samostatné inštancie nášho vzorového servera. Bežia na rovnakom systéme, ale využívajú samostatné porty:
Vytvorte triedu LoadBalancerConfiguration teraz:
Táto trieda má len jeden účel: vytvára tvorca WebClient s vyvážením zaťaženia na vytváranie vzdialených požiadaviek. Naša anotácia používa fiktívny názov služby.
Dôvodom je skutočnosť, že s najväčšou pravdepodobnosťou nebudeme vopred poznať presné názvy hostiteľov a porty pre spustené inštancie. V dôsledku toho používame fiktívny názov ako zástupný symbol a rámec nahradí skutočné informácie, keď vyberie spustenú inštanciu.
Ďalej urobme triedu Configuration, ktorá sa použije na vytvorenie inštancie našej inštancie služby. Upozorňujeme, že používame rovnaký alias ako predtým:
Teraz môžeme vytvoriť skutočnú klientsku aplikáciu. Pošlime 10 dopytov na vzorový server pomocou bean WebClient z predchádzajúceho:
Z výstupu vidíme, že vyrovnávame zaťaženie medzi dvoma samostatnými inštanciami:
Vyvažovanie záťaže v mikroslužbách
Architektúru mikroslužieb používa niekoľko spoločností, ako sú Netflix a Amazon, na vývoj obchodných aplikácií ako súboru voľne prepojených služieb. Hyperškálovanie a nepretržité poskytovanie pre komplikované aplikácie sú len dva z dôvodov prechodu na túto distribuovanú, voľne prepojenú architektúru.
Tímy týchto podnikov implementovali stratégie Agile a DevOps s cieľom produkovať aplikácie rýchlejšie a s nižšou mierou zlyhania ako tradičné metódy. Musíte však nájsť rovnováhu medzi zložitosťou distribuovanej architektúry a požiadavkami aplikácie, požiadavkami na rozsah a obmedzeniami doby uvedenia na trh.
Už mnoho rokov sú radiče doručovania aplikácií (ADC) rozhodujúce pre splnenie požiadaviek na úroveň služieb pre podnikové aplikácie hosťované na mieste alebo v cloude. Klient, ktorý pracuje s aplikáciou založenou na mikroslužbách, nemusí vedieť o inštanciách, ktoré ju poskytujú, aby mohol nezávisle rásť klienta a mikroslužby.
Toto je presne oddelenie poskytované reverzným proxy alebo vyrovnávačom zaťaženia. Opäť platí, že vyrovnávanie záťaže je riešením na zabezpečenie toho, aby mikroslužby zvládli dopyt, bezpečnosť a dostupnosť.
Keď skombinujete tradičné vyrovnávanie záťaže sever-juh medzi klientskymi aplikáciami a aplikáciami založenými na mikroslužbách s nasadením medzi východom a západom pre horizontálnu škálovateľnosť, získate podstatné zvýšenie. Cieľom je udržiavať bezpečné a regulované prostredie požadované IT bez obetovania agilnosti vývoja resp Automatizácia DevOps Požiadavky.
Výhody
Vyvažovanie záťaže poskytuje rôzne výhody tým, že zlepšuje využitie zdrojov, doručovanie údajov a čas odozvy pre webové stránky a aplikácie s vysokou návštevnosťou, ako aj databázy, ktoré získavajú veľké množstvo dopytov. Vyvažovanie záťaže zabezpečuje rýchle a správne splnenie požiadaviek používateľov v scenároch s vysokou návštevnosťou.
Používateľom ušetria problémy pri práci s pomalými programami a zdrojmi. Vyvažovanie záťaže tiež pomáha predchádzať prestojom a zjednodušovať zabezpečenie, čím sa znižuje riziko straty produktivity a príjmov vašej spoločnosti.
- Vyvažovanie záťaže poskytuje flexibilitu pri pridávaní a odstraňovaní serverov podľa požiadaviek, ako aj pri riadení prevádzky na optimálnu efektivitu. Pretože prevádzka je počas údržby presmerovaná na iné servery, je tiež možné vykonávať údržbu servera bez prerušenia používateľov.
- Vyvažovanie záťaže poskytuje vstavanú redundanciu rozdelením prevádzky medzi skupinu serverov. Ak jeden zlyhá, záťaž môžete okamžite presmerovať na iné servery, čím sa minimalizuje dopad na používateľov.
- Ak používanie aplikácie alebo webovej lokality rastie, zvýšená návštevnosť môže znížiť jej výkon, ak sa s ňou nebude efektívne zaobchádzať. Pomocou vyrovnávania záťaže môžete pridať skutočný alebo virtuálny server, aby ste uspokojili dopyt bez prerušenia služby. Nástroj na vyrovnávanie záťaže identifikuje nové servery, keď sú online, a bez námahy ich začleňuje do prevádzky. Táto metóda je vhodnejšia ako migrácia webovej stránky z preťaženého servera na nový, čo často zahŕňa určité prestoje.
záver
Vyvažovanie záťaže je kritickou súčasťou súčasných systémov odolných voči poruchám. Môžeme jednoducho vytvárať aplikácie, ktoré distribuujú požiadavky do viacerých inštancií služieb pomocou rôznych prístupov na vyrovnávanie záťaže. Podniky musia podporovať zložité IT systémy, aby mohli poskytovať aplikácie bezpečne.
Konfigurácia, nasadenie a údržba mikroslužieb medzi doménami môžu byť náchylné na chyby, drahé a časovo náročné. IT by malo používať osvedčené postupy a technológie automatizácie, viditeľnosti, analýzy a orchestrácie, ktoré sú kompatibilné s ich agilnými procesmi a procesmi DevOps, aby sa uľahčilo nastavenie a údržba týchto mikroslužieb.
Nechaj odpoveď