Přejít k obsahu
BeoHosting
BeoHosting
Technické

Co je load balancing a jak funguje

BeoHosting Team··9 min čtení čtení
Co je load balancing a jak funguje

Co je load balancing

Load balancing je technika rozdělování síťového provozu. To je obzvlášť relevantní pro uživatele dedikovaných serverů. Jde o rozdělování provozu mezi více serverů s cílem zajistit vysokou dostupnost, spolehlivost a optimální výkon aplikace. Představte si load balancer jako dopravního policistu, který stojí před skupinou serverů a každý příchozí požadavek směruje na server, jenž je momentálně nejméně zatížený. Bez load balanceru musí veškerý provoz zvládat jediný server, a jakmile dosáhne své kapacity, web zpomalí nebo je zcela nedostupný. S load balancerem je zátěž rozdělena rovnoměrně, a pokud jeden server selže, ostatní převezmou jeho práci bez výpadku pro uživatele.

Load balancing je základem moderní webové infrastruktury. Každá velká webová platforma – Google, Facebook, Amazon, Netflix – používá sofistikované systémy load balancingu. Load balancing ale není vyhrazen jen pro giganty – přínosem může být pro každý web s rostoucí návštěvností nebo s požadavkem na vysokou dostupnost. S rozmachem cloudového hostingu se load balancing stal dostupným i pro malé a střední firmy za rozumné ceny.

Typy load balancerů

Load balancing na vrstvě 4

Load balancer na vrstvě 4 (L4) pracuje na transportní vrstvě modelu OSI a rozhoduje o směrování na základě IP adres a portů, bez náhledu do obsahu provozu. Když dorazí požadavek, L4 balancer přesměruje celé TCP nebo UDP spojení na vybraný backendový server. Výhodou L4 balancerů je mimořádná rychlost, protože neanalyzují obsah paketů, nižší nároky na prostředky a schopnost vyvažovat libovolný typ provozu – nejen HTTP. Používá se ve scénářích, kde stačí čisté rozdělování provozu bez potřeby inteligentního směrování podle URL nebo hlaviček.

Load balancing na vrstvě 7

Load balancer na vrstvě 7 (L7) pracuje na aplikační vrstvě a rozumí protokolu HTTP. To mu umožňuje inteligentní směrování podle URL, HTTP hlaviček, cookies, typu obsahu a dalších atributů požadavku. L7 balancer může například směrovat požadavky na obrázky na servery optimalizované pro statický obsah, požadavky na API na aplikační servery a websocketová spojení na servery nakonfigurované pro dlouhodobá spojení. L7 balancery dokážou také provádět SSL terminaci (dešifrování HTTPS na balanceru), kompresi obsahu a caching. Většina moderních webových aplikací používá load balancing na vrstvě 7.

Globální load balancing serverů

GSLB (Global Server Load Balancing) rozděluje provoz mezi servery v různých geografických lokalitách. K nasměrování uživatelů do nejbližšího datového centra na základě zeměpisné polohy, latence nebo stavu serveru používá DNS. Například uživatelé z České republiky jsou směrováni do evropského datového centra, zatímco uživatelé z USA do amerického. GSLB je klíčový pro globální aplikace, které vyžadují nízkou latenci po celém světě, a zajišťuje disaster recovery – pokud se celé datové centrum stane nedostupným, provoz se automaticky přesměruje do jiného.

Algoritmy rozdělování provozu

Round Robin

Round Robin je nejjednodušší algoritmus, který rozděluje požadavky postupně po pořadí mezi dostupné servery. První požadavek jde na server 1, druhý na server 2, třetí na server 3, poté zpět na server 1 a tak dále. Výhodou je naprostá jednoduchost implementace a předvídatelnost rozdělování. Nevýhodou je, že nebere v úvahu aktuální zátěž serverů – server zpracovávající náročnou operaci dostane stejný počet nových požadavků jako server, který je nečinný. Varianta Weighted Round Robin přiřazuje serverům různé váhy úměrné jejich kapacitě, takže výkonnější servery dostávají více požadavků.

Least Connections

Algoritmus Least Connections směruje každý nový požadavek na server, který má momentálně nejméně aktivních spojení. To je inteligentnější než Round Robin, protože bere v úvahu skutečnou zátěž. Pokud jeden server zpracovává dlouho běžící požadavky, zatímco jiný rychle dokončuje krátké požadavky, Least Connections nasměruje více požadavků na rychlejší server. Weighted Least Connections kombinuje tento přístup s váhovými koeficienty pro servery různé kapacity. Tento algoritmus je ideální pro aplikace s požadavky, které se liší délkou trvání.

IP Hash

Algoritmus IP Hash vypočítá hash hodnotu z IP adresy klienta a podle ní určí server. Tím se zaručí, že požadavky od stejného klienta jdou vždy na stejný server, což je důležité pro aplikace, které ukládají relaci na serveru (session persistence). Bez IP Hash nebo podobného mechanismu může být uživatel přesunut na jiný server, který jeho relaci nemá, což má za následek ztrátu nákupního košíku nebo vyžádání opětovného přihlášení. Moderní alternativou je použít centralizované úložiště relací s Redisem, což eliminuje potřebu session persistence na úrovni load balanceru.

Least Response Time

Tento algoritmus kombinuje nejméně spojení s nejkratší dobou odezvy. Požadavek se směruje na server s nejméně aktivními spojeními a nejrychlejší průměrnou dobou odezvy. Jde o nejinteligentnější přístup, protože zohledňuje jak zátěž, tak výkon každého serveru. Pokud má jeden server rychlejší disky nebo více RAM, bude mít přirozeně kratší dobu odezvy a obdrží úměrně více požadavků. Vyžaduje monitorování odezev z každého serveru, což přidává malou režii, ale přináší optimální výsledky.

Hardwarové vs. softwarové load balancery

Hardwarové load balancery

Hardwarové load balancery jsou specializovaná zařízení navržená výhradně pro rozdělování provozu. Výrobci jako F5 Networks (BIG-IP), Citrix (NetScaler) a A10 Networks nabízejí zařízení, která dokážou zvládnout miliony spojení za sekundu s mimořádně nízkou latencí. Výhodou je předvídatelný výkon, dedikovaný hardware a pokročilé funkce jako SSL offloading, DDoS ochrana a aplikační firewall. Nevýhodou jsou vysoké náklady – hardwarové load balancery stojí od několika tisíc po stovky tisíc dolarů, k tomu náklady na údržbu a licence.

Softwarové load balancery

Softwarové load balancery se instalují na standardní servery a nabízejí flexibilitu, nižší náklady a snadné škálování. Nejpopulárnějšími open-source řešeními jsou Nginx, který je zároveň webovým serverem i load balancerem s vynikajícím výkonem, HAProxy, jenž je specializovaný na load balancing s mimořádnou spolehlivostí a nízkou latencí, a Traefik, moderní load balancer navržený pro kontejnerizovaná prostředí jako Docker a Kubernetes. Cloudoví poskytovatelé nabízejí spravované (managed) load balancery jako službu, čímž odpadá potřeba spravovat infrastrukturu.

Cloudové load balancery

AWS Elastic Load Balancer, Google Cloud Load Balancing a Azure Load Balancer jsou spravované služby, které nabízejí load balancing bez správy hardwaru či softwaru. Automaticky se škálují podle vašeho provozu, integrují se s dalšími cloudovými službami a platíte jen za to, co spotřebujete. Pro většinu moderních aplikací jsou cloudové load balancery optimální volbou, protože eliminují provozní složitost, nabízejí vysokou dostupnost se zabudovanou redundancí a pro spuštění vyžadují minimální konfiguraci.

Kdy load balancer potřebujete

Scénáře použití

Load balancer potřebujete, když jeden server nezvládá váš provoz a web během špiček zpomaluje, když potřebujete vysokou dostupnost a nemůžete si dovolit výpadky, když máte kritickou aplikaci jako e-shop, kde každá minuta výpadku znamená ztrátu příjmů, když chcete mít možnost aktualizovat servery bez přerušení provozu pomocí rolling deploymentu, nebo když se váš provoz výrazně mění a potřebujete dynamické škálování.

Kdy load balancer nepotřebujete

Pro malý web se střední návštěvností přináší load balancer zbytečnou složitost a náklady. Pokud váš web navštíví méně než 10 000 návštěvníků denně, jeden dobře optimalizovaný server s cachingem zcela stačí. Než přidáte load balancer, optimalizujte stávající server – nasaďte page caching, optimalizujte databázi, použijte CDN pro statické soubory a komprimujte obrázky. Tyto optimalizace často potřebu load balanceru zcela eliminují a jsou mnohem levnější.

Health checky a failover

  • Aktivní health checky: Load balancer periodicky odesílá požadavky na backendové servery, aby ověřil, zda jsou živé a funkční – obvykle HTTP GET na konkrétní endpoint.
  • Pasivní health checky: Load balancer sleduje odezvy serverů během běžného provozu a detekuje chyby bez zvláštních požadavků.
  • Automatický failover: Když server neprojde health checkem, je automaticky vyřazen z rotace a provoz se přesměruje na zbývající servery.
  • Plynulé zotavení (graceful recovery): Když je server opět zdravý, je postupně vracen do rotace s menším počtem požadavků, aby se předešlo náhlé zátěži.
  • Vlastní health checky: Kromě základní HTTP kontroly nastavte kontroly specifické pro vaši aplikaci – stav databáze, dostupnost externích API a volné místo na disku.

Závěr

Load balancing je základní technikou pro budování spolehlivých a škálovatelných webových aplikací. Od jednoduchého algoritmu Round Robin po sofistikované L7 balancery s inteligentním směrováním existuje řešení pro každý rozpočet i potřebu. Softwarové load balancery jako Nginx a HAProxy tuto technologii demokratizovaly a zpřístupnily ji všem. V BeoHosting nabízíme cloudový hosting s možností load balancingu pro weby, které vyžadují vysokou dostupnost, a náš tým vám pomůže nakonfigurovat optimální infrastrukturu pro vaše konkrétní potřeby.

BeoHosting Team

10+ let zkušeností — Specialisté na webhosting a infrastrukturu

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Naposledy aktualizováno: