Zvyšování výkonu serverových farem - Server Load Balancing (1)

Petr Odvárka Tutoriály 6. října 2008

Zvyšování výkonu serverových farem, zejména u webových aplikací, lze zajistit minimálně dvěma způsoby. Buď posilováním výkonu jednoho stroje, nebo rozložením zátěže na více slabších strojů - tzv. Server Load Balancing. U tohoto způsobu je ovšem potřeba zavést nový prvek, zajišťující rozkládání zátěže; jeho název je např. load balancing switch, aplikační switch, L7 switch, Web switch... Těmto prvkům se bude věnovat náš článek.

Zvyšování výkonu serverových farem, zejména u webových aplikací, lze zajistit minimálně dvěma způsoby:

  • posilování výkonu jednoho stroje, což má několik nevýhod (např. omezení příslušeného hardware nebo OS; občas je nutné stroj odstavit a provést údržbu);
  • rozložením zátěže na více slabších strojů, čímž se výše uvedené nevýhody eliminují (při potřebě zvýšení výkonu se přidá další server; odstavení části serverů má dopad maximálně na výkon), navíc se do systému vnáší redundance; je ovšem potřeba zavést nový prvek zajišťující rozkládání zátěže; jeho název je např. load balancing switch, aplikační switch, L7 switch, Web switch... Těmto prvkům se budeme věnovat v dalším textu.

Popis principu funkčnosti

V současnosti jsou k dispozici i jiné technologie pro optimalizaci rozložení zátěže na servery (serverová řešení založená na tom, že jeden ze serverů je jakýmsi arbitrem, který zajišťuje rozkládání zátěže mezi ostatní servery ve skupině), nicméně load balancing switche mají některé vlastnosti, kterými tyto technologie předčí.

Load balancing switche jsou L2/L3 switche, které navíc zajišťují:

  • rozkládání zátěže pro aplikace na více serverů, tedy vlastnost SLB;
  • globální server load balancing (GSLB) – tedy rozkládání zátěže mezi geograficky oddělenými serverovými farmami;
  • v závislosti na technologii mohou zařízení zajišťovat i další funkce (např. Intelligent Traffic Management – tedy řízení provozu, Firewall Load Balancing, ochranu před DOS útoky, optimalizace využívání Internet linek...).

Pokud je ve výše uvedeném textu uvedeno „rozkládání zátěže“, automaticky to znamená i zajištění redundance. Více viz. v dalším textu.

Server Load Balancing (SLB)

Celá myšlenka rozkládání zátěže je založena na tom, že uživatel přistupuje k web serveru na základě jeho veřejné IP adresy. Např. pro www.infinity.cz je touto adresou adresa 193.86.241.43. Tato adresa je nakonfigurovaná jako virtuální IP adresa na SLB switchi. Za switchem se zpravidla skrývá farma několika serverů s tzv. reálnými IP adresami, které aktivně komunikují s uživateli. Uživatel neví, na který z reálných serverů se připojil, ale pokud je aplikace dobře napsaná, ani jej to nemusí trápit.

Na následujícím obrázku je popsána funkce SLB switche.

Princip funkce SLB switche

Princip funkce SLB switche

Ke každému veřejnému (webovému) serveru existuje skupina fyzických serverů, které jsou skryté za SLB switchem.

SLB switch pro rozkládání zátěže a redundanci serverů zajišťuje tyto funkce:

  • algoritmus pro rozkládání zátěže;
  • mechanismus pro kontrolu dostupnosti reálných serverů;
  • mechanismus pro návrat reálného serveru do skupiny po jeho výpadku (např. restartu).

Algoritmus pro rozkládání zátěže

Používají se např. tyto metody:

  • nejméně spojení;
  • round robin (cyklická obsluha), tedy rovnoměrné dělení (případně vážené dělení);
  • čas odpovědi (sleduje rychlost odezvy od reálných serverů);
  • využité pásmo (sleduje množství dat přicházejících od jednotlivých reálných serverů).

Pro zachování konkrétního spojení mezi uživatelem a konkrétním fyzickým serverem je používán identifikátor spojení (session ID), který je určen z IP adresy klienta a náhodně generovaného zdrojového portu (ten samý port je používán v průběhu celé životnosti TCP spojení).

Uvedené mechanismy zajišťují rozkládání zátěže tak, jak požadavky (jednotlivá spojení) přicházejí. Pokud si uvědomíme, že v protokolu http verze 1.0 se pro každou část webové stránky (gif, jpg, tlačítka na stránce...) vytváří samostatné TCP spojení, pak to v kombinaci s výše uvedenými mechanismy může způsobit, že na prohlédnutí jedné stránky jsou použity všechny servery ve skupině.

V případě, že je nutné zachovat trvalost spojení uživatele na konkrétní server (např. u obchodních portálů), lze nastavit i některý ze způsobů zajišťujících tzv. persistence-based algorithms. Jsou to např. metody okamžité vazby (immediate binding) které mohou být založené např. na:

  • kontrolním součtu (hash);
  • IP adrese.

Jinou možností jsou metody odložených vazeb (ID SSL session, práce s cookie). Optimálním způsobem pro rozkládání zátěže se zachováním spojení pro konkrétního uživatele je kontrola cookie. Algoritmy založené na cookie jsou obecně tři:

  • pasivní mód; switch kontroluje cookie v http paketech;
  • přepisování cookie; switch přepisuje cookie tak, aby obsahovala specifické informace o serveru;
  • vkládání cookie; switch vkládá cookie do odpovědi serverů klientům; tato funkce se uplatní v prostředí, kde není aktivní funkce vkládání cookie na serverech.

 

Metoda odložených vazeb (práce s cookie)

Metoda odložených vazeb (práce s cookie)

Cookies jsou obecně používaným mechanismem pro udržování jednoznačnosti spojení mezi klientem a serverem. Umožňují serveru vystavit pro klienta “odznak”, kterým se klient serveru prokazuje při všech následujících požadavcích. Serveru to při nich umožňuje  vynechat znovu ověřování klienta a další  časově náročné procesy potvrzující, že jde o stále stejného klienta.

V nejjednodušším případě může být cookie identifikátorem přiřazeným uživateli (customer ID). Může to být znak důvěry, umožňující klientovi přeskočit ověřování pokud je jeho cookie platná. Může to ale být i klíč, který spojuje stavová data uživatele, která jsou udržována na serveru. Těmi jsou např. nákupní košík a jeho obsah. V mnohem složitější aplikacích může být cookie zašifrována a obsahovat víc dat než jednoduchý klíč nebo identifikační číslo. Cookie může obsahovat uživatelské volby na konkrétním serveru, což umožňuje přizpůsobit stránky pro konkrétního uživatele.

Mechanismus používání cookie je definován v RFC2109. Hlavička cookie obsahuje pár “Name”=Value”    a další parametry. Cookies mohou být trvalé (zůstávají uskladněné v adresáři klientského prohlížeče) nebo dočasné (jsou platné pouze pro konkrétní relaci). Podle definice v RFC2109 jsou cookie bez datumu vypršení pouze dočasné. příklad cookie je:

           Cookie:ASP_SESSIONID=YTGGFEGHJKO

           Cookie: name=john_doe

První příklad představuje identifikátor ASP relace a druhý je cookie určité aplikace zahrnující jméno klienta.

Nutno zdůraznit, že algoritmy založené na cookie jsou použitelné pouze pro protokol HTTP. Protokol HTTPS lze v tomto režimu použít za předpokladu, že HTTPS spojení nebude ukončené na serveru, ale na SSL akcelerátoru (a to je trochu jiné téma).

Mechanismy kontroly dostupnosti reálných serverů

Používané mechanismy jsou závislé na konkrétní službě běžící na serverech (http, radius, ftp...). V závislosti na této službě lze volit např. mezi těmito typy kontroly:

  • kontrola fyzické vrstvy – portu, na němž je připojen server; nejjednodušší způsob, ale s nejhorší informací o skutečném stavu služby;
  • ICMP echo (ping) – kontrola dostupnosti IP služby, opět s omezenou informační hodnotou;
  • požadavky na TCP spojení (dokončení 3way handshake a ukončení spojení) – to je kontrola s podstatně lepší vypovídající schopností o službě;
  • kontrola obsahu nebo dostupnosti služby – např. pro HTTP, POP3, FTP, SMTP, DNS, NNTP, IMAP, RADIUS...

Mechanismy pro zařazení serveru do skupiny po výpadku

SLB switch pokračuje v kontrole služby i na serverech, jež jsou aktuálně nedostupné. Lze konfigurovat po jaké době od obnovení dostupnosti má switch zařadit server do provozního seznamu a začít jej používat. To má význam zejména při kontrole fyzické vrstvy nebo kontrole pingem (od okamžiku, kdy je link ve stavu up a nebo server začne odpovídat na ping, může do plné funkčnosti služby uplynout poměrně dlouhá doba).

Možnosti redundance

Z výše uvedeného může vyplývat, že SLB switch je jednoduchým bodem selhání systému. Samozřejmě jde konfigurovat i redundantní řešení postavené na použití dvou a více SLB switchů. Jejich zapojení pak může být např. podle tohoto obrázku:

Redundantní řešení postavené na použití dvou SLB switchů

Redundantní řešení postavené na použití dvou SLB switchů

K redundanci je používaná technologie redundance IP adresy (VRRP).  V závislosti na technologii může být záložní prvek v aktivním stavu (tzn. procházejí přes něj data) nebo ve stavu standby (čeká na výpadek primárního prvku).

Redundance může být na úrovni IP adres pro routing, ale (a to je důležité) i pro virtuální IP adresy serverů. Pomocí toho lze zajistit režim Active – Active, kdy oba SLB switche jsou aktivně používané, každý však pro určitou skupinu virtuálních serverů.


Vytisknout


    Komentáře k článku

    ...k článku nejsou žádné komentáře

Vložte Váš komentář k tomuto článku

Máte dotaz? Neváhejte nám napsat.

Pole označená hvězdičkou (*) jsou povinná


Reklama v příspěvcích není dovolena, dodržujte etiketu. Redakce Světa sítí si vyhrazuje právo smazat příspěvěk, který v diskuzi použije vulgární slova a společensky neúnosné výrazy. Délka příspěvku je limitována 1500 znaky.