in

Jak se zbavit starosti o IT infrastrukturu?

Jak jsme psali už minule v článku Jak svět ke cloudu přišel, od přechodu do cloudu společnosti očekávají především to, že sníží své náklady na starost o IT infrastrukturu. Základní služba, která je k tomu používána, se nazývá Infrastruktura jako služba. Pojďme si o ní říct více.

Infrastruktura jako služba (Infrastructure as a Service – IaaS)

„Infrastruktura jako služba“ je schopna nahradit kompletní interní infrastrukturu. Tedy pokud se smíříme s tím, že hardware není fyzicky u nás.

Poskytovatelé cloudu obvykle nabízí své služby v různých regionech. To znamená, že při vytváření virtuálního serveru musíme tomuto poskytovateli sdělit, ve kterém regionu jej má pro nás vytvořit.

V jednotlivých regionech existují tzv. availability zóny (zóny dostupnosti), což jsou zjednodušeně data-centra, která poskytovatel v daném regionu provozuje. Například Amazon ve svém „Irském regionu“ provozuje tři data-centra, Microsoft ve svém regionu „Západní Evropa“ také tři.

Při vytváření jednoho virtuálního stroje můžeme vybrat zónu, ve které stroj bude umístěn, nebo umístění stroje nechat na poskytovateli. Při vytváření více instancí identického serveru můžeme nechat poskytovatele instance rozložit do více zón. Proč o to usilovat? Zajistí totiž dostupnost našich služeb i v případě, kdy poskytovateli jedna zóna prostě přestane fungovat.

Virtuální sítě

Abychom mohli několik virtuálních serverů propojit a zabezpečit, zároveň zajistili, aby pouze některé z nich byly přístupné veřejně, uzavřeme je do tzv. virtuální sítě.

Virtuální síť tvoří uzavřený prostor se samostatným rozsahem IP adres a kontrolou příchozího a odchozího síťového provozu. Tato kontrola může být prováděna na úrovni jedno serveru – povolíme nebo zakážeme určitý provoz (např. zakážeme SSH, ale povolíme http) pro daný server, na úrovni sítě nebo pod-sítě – povolení nebo zákaz provozu platí pro celou síť.

Pokud chceme, aby servery v naší síti měly přístup k internetu, ale samy byly z internetu nedostupné, nabízí se použití tzv. brány, která má přístup k internetu a sdílí tento přístup s našimi servery.

Abychom serverům umožnili přístup z internetu, musíme jim přiřadit veřejnou IP adresu. Pod touto adresou pak vystupují v internetu a na tuto IP adresu můžeme navázat tzv. DNS záznam a nasměrovat tak naši doménu na server (např. doména cekujvedu.cz je nasměrována na server s IP adresou 89.221.213.21).

Vyžadujeme-li, aby zaměstnanci měli přístup k serverům, které jsou interní a nemají být přístupné veřejně, můžeme tyto servery zpřístupnit v cloudu přes VPN (virtuální privátní síť). To znamená, že naše servery zůstanou nepřístupné z internetu, ale zaměstnanci, kteří se do naší virtuální sítě připojí pomocí VPN, na ně přístup mít budou.

Obecně platí, že jedna virtuální síť nemůže zasahovat do více availability zón. To znamená, že pokud pracujeme v regionu se třemi availability zónami, budeme pracovat nejméně se třemi virtuálními sítěmi, abychom využili všechny zóny a mohli do nich umísťovat servery.

Load balancing (vyrovnávání zátěže)

Obvyklým důvodem pro vytváření více serverů s jednou aplikací je, abychom rozprostřeli zátěže mezi více serverů, a zároveň zajistili, aby při selhání jednoho serveru aplikace nadále fungovala – při selhání jednoho serveru si ostatní rozdělí jeho zátěž (tzv. failover).

V případě webových aplikací je failover zabezpečen tzv. load balancerem. To je zařízení, na které přichází požadavky na aplikaci a které zná adresy serverů, kde aplikace běží. Příchozí požadavek pak load balancer přeposílá na server, který běží a je nejméně vytížen. Nefunkční servery a servery velmi zatížené tak load balancer neoslovuje a zajišťuje tím, že všechny požadavky jsou obslouženy.

V prostředí IaaS nám poskytovatelé nabízí virtuální load balancery několika typů. Například v Amazon Web Services to je load balancer, který může rozhodovat o cílovém serveru jak podle failover strategie, tak např. podle části URL.

Například můžeme load balanceru říci, aby v případě, že je nastaven parametr country na hodnotu CZ, přeposílal požadavky na některý z funkčních serverů, které se nachází v Česku.

Jiným typem load balanceru v AWS je síťový load balancer, který neumožňuje tolik nastavení, ale zato umožňuje obrovský průtok dat a velice rychlé rozkládání zátěže.

Auto scaling (automatické škálování)

Rozkládání a vyrovnávání zátěže ale neřeší problém, co se stane se servery, které přestanou fungovat. Load balancer je nebude používat ke zpracování požadavků, ale servery nadále zůstávají v chybovém stavu.

Je potřeba, aby na chybový stav serveru zareagovala jiná část IaaS, a to automatické škálování. Tento prvek můžeme nastavit tak, aby udržoval přesně daný počet funkčních serverů nebo aby podle zátěže již existujících serverů buď nějaké servery přidal, nebo odebral.

V praxi to znamená, že musí existovat nějaký „hlídací pes“, který zjistí a dá vědět systému automatického škálování, že některý server neběží, nebo že je jeho stav špatný. Systém pak začne vyrábět nový server z tzv. obrazu, ze kterého jsou vyrobeny ostatní běžící servery. Obraz je v tomto případě popis operačního systému, předinstalovaných aplikací a skriptů, které se spustí po startu serveru.

Tento „hlídací pes“ může implicitně sledovat parametry serveru, jako

  • vytížení procesoru,
  • síťový provoz,
  • zápisy a čtení z disku
  • a volné místo na disku.

Jiná měření, například paměti RAM, musí být naprogramována samostatně a musí běžet na sledovaném serveru, protože, z principu virtualizace, nemá host systém mít přístup k paměti virtualizovaného systému.

Po vytvoření nového serveru musí systém dát vědět load balanceru, že existuje nová instance, na kterou může směřovat požadavky.

Naopak v případě, že existuje několik instancí a ty nejsou využity, je potřeba některé vypnout, abychom ušetřili za jejich provoz. O to se také stará systém automatického škálování.

Užívají se přitom dvě základní strategie, jak vypínat nepotřebné servery.

  • Podle první strategie vypínáme nejdéle běžící server.
  • Podle druhé vypínáme ten, který má nejblíže k účtovacímu cyklu (snažíme se o maximální využití účtovaného času tím, že např. při účtovacím období jedné hodiny, vypneme server, který běží 53 minut, a ne ten, který běží 17 minut).

Vypínání nevyužitých serverů ale není tak jednoduché, protože systém nemůže vědět, co přesně se na serveru děje a jestli zrovna nedokončuje nějakou úlohu, i když se tváří málo vytížený. Pokud by systém takový server vypnul, došlo by k přerušení úlohy a pravděpodobně k chybě.

Tomu zabrání tzv. scale-down-protection, neboli ochrana proti škálování dolů, kterou aktivuje server samotný.

V praxi to znamená, že jakmile server začne zpracovávat nějakou úlohu, nastaví scale-down-protection příznak a dá tak systému automatického škálování vědět, že nemůže být vypnut. Po dokončení úlohy pak server příznak smaže a systém může tento server následně bezpečně vypnout, je-li nevyužitý.

High Availability vs. Fault Tolerance

Jako zákazníci cloudových poskytovatelů vytváříme balancované a škálované prostředí proto, abychom rychle odpovídali na měnící se zátěž, šetřili prostředky v případě nízkého zatížení a hlavně, abychom v případě chyby serveru nepřestali poskytovat službu zákazníkům. Tedy aby naše služby byly neustále dostupné.

Rozlišujeme dva stupně dostupnosti. První je tzv. „vysoká dostupnost“ (high availability), kdy při běžném provozu splňujeme požadavky na výkon a při výskytu chyby jsme ochotni se smířit s poklesem výkonu kvůli výpadku části systému.

Vyšší stupeň dostupnosti je „odolnost proti chybě“ (fault tolerance), kdy při výskytu chyby netolerujeme pokles výkonu, a proto musíme systém nad-dimenzovat tak, aby výpadek části výkonu neovlivnil rychlost poskytování služby.

Co to tedy znamená? Pokud potřebuji pro běh mé služby tři servery, pak v high available uspořádání vytvořím

  • tři virtuální stroje,
  • load balancer, který mezi ně bude distribuovat požadavky,
  • a auto-scaling, který nahradí nefunkční stroj novým. 

Dojde-li k výpadku jednoho serveru, požadavky budou směřovány na zbylé dva, a auto-scaling vytvoří nový server, kterým nahradí nefunkční.

Ve fault tolerant uspořádání, kde požadavkem je tolerovat chybu dvou serverů, budu muset vytvořit na začátku pět serverů. V takovém případě pak při výpadku dvou serverů stále zůstávají tři, které zcela splňují počáteční požadavek na výkon. I v tomto uspořádání potřebujeme load balancer a auto-scaling pro vytvoření nových serverů místo těch nefunkčních.

Závěr? IaaS nás zbaví managementu infrastruktury. To ale není vše, s čím nám může cloud pomoci. V následujícím článku se podíváme na pokročilé služby, které cloud nabízí, a také na to, kolik nás to bude všechno stát.

Článek připravil SyncBytes

What do you think?

1 point
Upvote Downvote

Comments

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Loading…

0

Comments

0 comments

Elektromagnetické vlny na Marsu

Ovlivňují skleníkové plyny klima? – Vědecké kladivo