Obsah[Skrýt][Ukázat]
Dostupnost aplikací nebyla nikdy brána tak vážně, jako je tomu dnes, kdy aplikace používáme pro více než pouhou komunikaci, ať už osobní nebo profesionální, a kdy jsou aplikace obchodní.
Aplikace, které nejsou neustále online nebo jsou nestabilní, ztrácejí své uživatele a relevanci a nakonec zastarají. Stalo se to bleskově. Protože internet nikdy nespí a funguje 24 hodin denně, 7 dní v týdnu, stejná myšlenka musí platit i pro aplikace.
Škálovatelnost je pro to a zajištění dostupnosti aplikací zásadní. Vyvažování zátěže je jednou z nejdůležitějších součástí zajištění dostupnosti. Mnoho lidí stále věří, že vyrovnávání zátěže lze provést pomocí jednoduchého skriptu.
To však není tento případ. Pouze ona poskytuje přístup k programům po celém světě – kdykoli a z jakéhokoli zařízení.
V tomto příspěvku se podrobně podíváme na vyvažování zátěže, jeho algoritmy a mimo jiné na to, jak souvisí s mikroslužbami. Pojďme začít!
Co je vyvažování zátěže?
Vzhledem k tomu, že poptávka po webových stránkách nebo obchodní aplikaci roste, jediný server brzy nebude schopen zvládnout celou zátěž. Organizace rozdělují pracovní zátěž na četné servery, aby uspokojily poptávku. Tato metoda, známá jako „vyrovnávání zátěže“, zabraňuje přetížení jednoho serveru, což může způsobit jeho zpomalení, zahození požadavků nebo dokonce pád.
Vyrovnávání zátěže rozděluje síťový provoz rovnoměrně, aby se zabránilo selhání v důsledku přetížení zdrojů. Aplikace, webové stránky, databáze a další počítačové zdroje fungují lépe a jsou při použití této metody dostupnější. Napomáhá také správnému a včasnému zpracování požadavků uživatelů.
Z pohledu uživatele slouží vyvažování zátěže jako neviditelný prostředník mezi klientem a skupinou serverů, který zajišťuje, že požadavky na připojení nebudou zrušeny. Aplikace, webové stránky, databáze a online služby by s největší pravděpodobností zkolabovaly, pokud by poptávka bez vyvažování zátěže byla příliš velká.
Na jeden web s vysokou návštěvností lze současně odeslat statisíce uživatelských požadavků. Ke správnému naplnění webových stránek požadovaným obsahem, jako je text, obrázky, video a audio streaming, je zapotřebí více serverů. Vyrovnávání zátěže se běžně používá na serverových farmách s vysokou návštěvností webových serverů a také na serverech DNS, databázích a serverech FTP (File Transfer Protocol).
Pokud je jeden server přetížen, může fungovat špatně nebo dokonce havarovat. Nástroj pro vyrovnávání zátěže snižuje možnost prostojů tím, že požadavky uživatelů rozděluje rovnoměrně mezi několik serverů. Pokud jeden ze serverů ve skupině selže, provoz je přesměrován na jiné servery ve skupině. Nástroj pro vyrovnávání zatížení automaticky přidává nové servery do procesu distribuce provozu, když jsou přidány do fondu serverů.
Jak funguje vyvažování zátěže?
Funguje následovně:
- Když klient obdrží požadavek, například prostřednictvím prohlížeče nebo aplikace, pokusí se připojit k serveru.
- Když nástroj pro vyrovnávání zatížení obdrží požadavek, nasměruje jej na jeden ze serverů ve skupině serverů na základě zavedených vzorů algoritmem (nebo farmou).
- Server obdrží požadavek na připojení a odpoví klientovi prostřednictvím nástroje pro vyrovnávání zatížení.
- Když nástroj pro vyrovnávání zatížení obdrží odpověď, porovná IP adresu klienta s IP adresou vybraného serveru. Poté je s paketem odeslána odpověď.
- Snížení zátěže SSL je proces dešifrování dat pomocí šifrovacího protokolu Security Socket Layer, takže to servery nemusí.
- Proces se opakuje, dokud relace neskončí.
Metody vyvažování zátěže
K výběru, který ze serverů v serverové farmě obdrží další požadavek, používá každá technika vyrovnávání zátěže sadu kritérií. Existuje pět typických přístupů pro vyrovnávání zátěže:
- Round Robin: Toto je výchozí přístup a funguje přesně tak, jak to zní. Nástroj pro vyrovnávání zatížení distribuuje požadavky v rotujícím vzoru, počínaje prvním serverem ve skupině a pokračuje dolů, kde čeká na opětovné volání. Tato metoda zajišťuje, že každý server zpracovává zhruba stejný počet připojení.
- Vážená Round Robin: Tento přístup přiděluje každému serveru váhu (nebo preferenci), která je obecně úměrná jeho kapacitě. Čím více požadavků server obdrží, tím vyšší je váha. Například server s hodnotou váhy dvě obdrží dvakrát více požadavků než server s hodnotou váhy jedna.
- Lepkavá relace: Tento přístup, známý také jako persistence relace, propojuje určité klienty a servery po dobu trvání relace. K vytvoření propojení používá nástroj pro vyrovnávání zatížení soubor cookie nebo IP adresu uživatele k identifikaci uživatelského atributu. Jakmile je spojení navázáno, požadavky uživatele jsou směrovány na stejný server, dokud relace neskončí. To optimalizuje síťové zdroje a zároveň zlepšuje uživatelskou zkušenost.
- Nejméně spojení: Tato strategie předpokládá, že všechny požadavky vedou ke stejné zátěži serveru. Výsledkem je, že server s nejmenším počtem požadavků obdrží další požadavek.
- IP hash: Tento algoritmus generuje jedinečný hash klíč na základě zdrojové a cílové IP adresy klienta a serveru. Klíč se používá ke směrování požadavku a umožňuje obnovení ztraceného spojení se stejným serverem.
Hardware vs. Software Load Balancers
Hardware Load Balancer
Fyzický hardware, jako je zařízení, tvoří nástroje pro vyrovnávání zátěže hardwaru. Ty směrují provoz na servery v závislosti na faktorech, jako je počet existujících připojení, využití procesoru a výkon serveru. Hardwarové nástroje pro vyrovnávání zatížení mají proprietární firmware, který je třeba udržovat a aktualizovat, když jsou k dispozici nové verze a opravy zabezpečení.
Hardwarové nástroje pro vyrovnávání zátěže často poskytují vyšší výkon a kontrolu a také širší škálu funkcí, jako je ověřování Kerberos a hardwarová akcelerace SSL, ale vyžadují určitou úroveň odborných znalostí v oblasti správy a údržby. Protože hardwarové nástroje pro vyrovnávání zatížení jsou méně flexibilní a škálovatelné než softwarové nástroje pro vyrovnávání zatížení, existuje sklon k nadměrnému poskytování hardwarových vyvažovačů zatížení.
Software Load Balancer
Softwarové nástroje pro vyrovnávání zatížení se obvykle nastavují snadněji než jejich hardwarové protějšky. Jsou také nákladově efektivnější a přizpůsobivější a dobře spolupracují s prostředími pro vývoj softwaru. Softwarová metoda vám umožňuje přizpůsobit nástroj pro vyrovnávání zatížení přesným požadavkům vašeho prostředí. Zvýšená flexibilita může přijít na úkor dodatečného času stráveného nastavováním load balanceru.
Softwarové balancéry vám poskytují větší flexibilitu při provádění úprav a aktualizací než hardwarové, které mají uzavřenější přístup. Předbalené virtuální stroje lze použít jako nástroje pro vyrovnávání zatížení softwaru (VM). Virtuální stroje vám ušetří čas na nastavování, ale nemusí mít všechny funkce dostupné v jejich hardwarových protějšcích.
Jednoduchá implementace vyvažování zátěže
K tomu použijeme knihovnu Spring Cloud vytvářet aplikace které se připojují k jiným aplikacím způsobem s vyváženým zatížením. Při zpracování požadavků na vzdálenou službu můžeme snadno vytvořit vyrovnávání zátěže pomocí jakékoli techniky, kterou chceme. Zvažte následující kód jako příklad. Začneme základní serverovou aplikací.
Server bude mít pouze jeden koncový bod HTTP a bude provozován v několika instancích. Poté vytvoříme klientskou aplikaci, která používá Load Balancer k distribuci požadavků mezi několik instancí serveru.
Server
Začínáme základní Jarní bota aplikace pro náš ukázkový server:
Nejprve vložíme přizpůsobitelnou proměnnou s názvem instance_ID. To nám pomáhá rozlišovat mezi mnoha instancemi, které jsou v provozu. Poté vytvoříme jeden koncový bod HTTP GET, který vrátí zprávu a ID instance.
Výchozí instance s ID 1 bude fungovat na portu 8080. Ke spuštění druhé instance stačí přidat několik parametrů programu:
Klient
Pojďme se nyní podívat na kód klienta. Zde přichází na řadu Load Balancer, takže začněme jeho začleněním do naší aplikace:
Následně vyvíjíme implementaci ServiceInstanceListSupplier. Toto je jedno z nejdůležitějších rozhraní v Load Balancer. Určuje, jak najdeme instance přístupných služeb.
V naší ukázkové aplikaci pevně zakódujeme dvě samostatné instance našeho vzorového serveru. Běží na stejném systému, ale využívají samostatné porty:
Vytvořte třídu LoadBalancerConfiguration nyní:
Tato třída má pouze jeden účel: vytváří tvůrce WebClient s vyváženým zatížením pro vytváření vzdálených požadavků. Naše anotace používá fiktivní název služby.
To je způsobeno skutečností, že s největší pravděpodobností nebudeme předem znát přesné názvy hostitelů a porty pro spuštěné instance. V důsledku toho používáme fiktivní název jako zástupný symbol a rámec nahradí skutečné informace, když vybere spuštěnou instanci.
Dále udělejme třídu Configuration, která bude použita k vytvoření instance naší dodávky instance služby. Vezměte na vědomí, že používáme stejný alias jako dříve:
Nyní můžeme vytvořit skutečnou klientskou aplikaci. Odešleme 10 dotazů na ukázkový server pomocí bean WebClient z dříve:
Z výstupu vidíme, že vyrovnáváme zátěž mezi dvěma samostatnými instancemi:
Vyrovnávání zátěže v mikroslužbách
Architekturu mikroslužeb používá několik společností, jako jsou Netflix a Amazon, k vývoji obchodních aplikací jako sady volně propojených služeb. Hyperškálování a nepřetržité poskytování pro komplikované aplikace jsou pouze dva důvody pro přechod na tuto distribuovanou, volně propojenou architekturu.
Týmy těchto podniků implementovaly strategie Agile a DevOps, aby produkovaly aplikace rychleji a s nižší mírou selhání než tradiční metody. Musíte však najít rovnováhu mezi složitostí distribuované architektury a požadavky aplikace, požadavky na škálování a omezeními doby uvedení na trh.
Po tolik let byly řadiče pro doručování aplikací (ADC) zásadní pro splnění požadavků na úroveň služeb pro podnikové aplikace hostované on-premise nebo v cloudu. Klient, který pracuje s aplikací založenou na mikroslužbách, nemusí vědět o instancích, které ji poskytují, aby mohl nezávisle růst klienta a mikroslužeb.
Toto je přesně oddělení poskytované reverzním proxy nebo load balancerem. Opět platí, že vyrovnávání zátěže je řešením, které zajistí, že mikroslužby zvládnou poptávku, bezpečnost a dostupnost.
Když zkombinujete tradiční vyrovnávání zátěže Sever-Jih mezi klientskými aplikacemi a aplikacemi založenými na mikroslužbách s nasazením východ-západ pro horizontální škálovatelnost, získáte podstatnou podporu. Cílem je udržovat bezpečné a regulované prostředí požadované IT bez obětování agilnosti vývoje resp Automatizace DevOps požadavky.
Výhody
Vyrovnávání zátěže poskytuje různé výhody tím, že zlepšuje využití zdrojů, doručování dat a dobu odezvy pro vysoce provozované weby a aplikace a také databáze, které získávají velké množství dotazů. Vyrovnávání zátěže zajišťuje rychlé a správné plnění požadavků uživatelů ve scénářích s vysokým provozem.
Ušetří uživatelům ztížené zacházení s pomalými programy a zdroji. Vyrovnávání zátěže také pomáhá předcházet prostojům a zjednodušuje zabezpečení, čímž snižuje riziko ztráty produktivity a příjmů vaší společnosti.
- Vyvažování zátěže poskytuje flexibilitu při přidávání a odebírání serverů podle požadavků poptávky a navíc zajišťuje optimální efektivitu provozu. Vzhledem k tomu, že provoz je během údržby přesměrován na jiné servery, je také možné provádět údržbu serveru bez narušení uživatelů.
- Vyrovnávání zátěže poskytuje vestavěnou redundanci rozdělením provozu mezi sadu serverů. Pokud jeden selže, můžete zatížení okamžitě přesměrovat na jiné servery, čímž se minimalizuje dopad na uživatele.
- Pokud používání aplikace nebo webové stránky roste, může zvýšený provoz snížit její výkon, pokud nebude efektivně řešen. S vyrovnáváním zátěže můžete přidat skutečný nebo virtuální server, abyste uspokojili poptávku, aniž byste narušili službu. Nástroj pro vyrovnávání zátěže identifikuje nové servery, jakmile jsou online, a bez námahy je začlení do provozu. Tato metoda je vhodnější než migrace webu z přetíženého serveru na nový, který často zahrnuje určité prostoje.
Proč investovat do čističky vzduchu?
Vyvažování zátěže je kritickou součástí současných systémů odolných vůči poruchám. Můžeme jednoduše vytvářet aplikace, které distribuují požadavky do více instancí služeb pomocí různých přístupů k vyrovnávání zátěže. Aby podniky mohly bezpečně poskytovat aplikace, musí podporovat složité IT systémy.
Konfigurace, nasazení a údržba mikroslužeb mezi doménami mohou být náchylné k chybám, drahé a časově náročné. IT by mělo používat osvědčené postupy a technologie pro automatizaci, viditelnost, analýzu a orchestraci, které jsou kompatibilní s jejich agilními a DevOps procesy, aby bylo nastavení a údržba těchto mikroslužeb snazší.
Napsat komentář