facebook LinkedIN LinkedIN - follow
IT SYSTEMS 10/2013 , Cloud a virtualizace IT

OpenStack – Amazon EC2 ve vaší firmě

Historie, teorie a praxe nejpoužívanějšího opensource IaaS řešení na světě



Red HatKdyž Američan, říkejme mu třeba Jeff, v roce 1994 založil firmu na prodej knih přes internet, měl jasnou vizi. O rok později prodejní portál spustil a krátce na to jej přejmenoval na Amazon. Toto logo se šipkou mezi písmeny A a Z dnes znají miliony lidí po celém světě, a ačkoliv Jeff změnil portálu název, jeho vize zůstala jasná. Začít s knihami a cédéčky a stát se největším on-line obchodem na světě.


Po splasknutí internetové bubliny se pročistil trh, ale díky šikovnému managementu a trochu štěstí Amazon dál rostl. Firma přečkala mnoho žalob od konkurence, prodávala čím dál víc zboží a brzy bylo jasné, že IT oddělení Amazonu musí řešit výzvy ještě neznámé. Vždyť dnes v době svátků a výprodejů roste vytížení serverů prodejního portálu ne o stovky, ale o tisíce procent. Vrchol loňské sezony byl tři sta prodaných položek každou vteřinu.

A tak se zrodil infrastrukturní cloud (IaaS), který byl veřejnosti představen v roce 2006. Amazon chytře využil know-how a začal prodávat strojový čas zákazníkům. Aby bylo jasno, termín cloud Jeff nevymyslel a dohledat autora tohoto pojmu je dnes již nemožné, nicméně i přes to, že způsoby poskytování výpočetních zdrojů byly popsány i vyzkoušeny, v době představení služby Amazon EC2 to byla z praktického pohledu stále věc neznámá. I proto se ze služby EC2 stal velmi rychle prodejní hit. Prostě stačila kreditka, a do hodiny jste startovali operační systém Linux, Solaris a FreeBSD v internetu. Později Amazon nabídku operačních systémů pochopitelně rozšířil.

Tajemství zkratek XaaS

Infrastructure as a service je způsob poskytování potřebné hardwarové infrastruktury tak, aby koncoví zákazníci mohli snadno spouštět operační systémy na dálku. Služba vyhovuje standardu cloud, což například z pohledu amerického úřadu NIST znamená dostupnost na dálku a na požádání, samoobslužné ovládání a předem připravené zdroje s možností rychlého doplnění. Zjednodušeně řešeno, v IaaSu jde o to, spustit si operační systém v cloudu, připojit se na něj a dělat si v něm, co je libo.

Kromě infrastrukturního cloudu existuje několik dalších variant, které jsou o úroveň výš. Především je to PaaS (platform as a service), kde má uživatel nad operačním systémem připravenou určitou platformu (například programovací knihovny Ruby nebo .NET). To se používá zejména při nasazování aplikací a IT systémů v cloudu. A nejvyšší úrovní je SaaS (software as a service), kdy uživatel používá přímo aplikaci v cloudu (dejme tomu Gmail.com).

Existuje mnoho dalších XaaS zkratek, na které různí dodavatelé roubují právě ty svoje produkty a služby, nicméně zmíněná trojice tvoří základní pilíře cloudu a my se ve článku budeme věnovat čistě té první – IaaS. Jen pro pořádek, OpenStack podporuje také holé železo, takže se dá zaškatulkovat také pod pojem MaaS (od slova metal).

Byl to právě Linux, který umožnil firmě Amazon dostat IaaS k masám. Přesněji řešeno Linux a virtualizační technologie Xen. Díky komoditnímu hardwaru (procesory Xeon i Opteron) a zmíněným technologiím mohl Amazon dostat cenu za hodinu provozu na takovou úroveň, aby byl cloud zajímavý pro každého. Pro zajímavost technologie Xen v poslední době trošku ustupuje virtualizaci KVM, která je obsažena přímo v jádře Linuxu, nicméně Amazon ji používá z historických důvodů.

Obchodní model – způsob účtování

U infrastrukturních cloudů se obvykle platí za hodinu provozu instance. Ty se rozdělují do různých kategorií podle procesoru a velikosti dostupné paměti. Typicky se označují jako small, medium, large a extra large. Firma Amazon dále dodává několik dalších variant, které se hodí na různé aplikace (databáze, HPC) například s velkou porcí paměti, nebo naopak s velmi malou pamětí, ale velmi silným CPU.

Disk, na kterém je instalován operační systém (image) se neúčtuje a lze jej rozšířit až na určitou rozumnou velikost stejně jako existuje možnost připojit si několik (tři až čtyři) dalších diskových oddílů přímo na hypervizoru (hostitelském serveru). Všechen tento prostor ale se zrušením instance zaniká, proto je obvykle možné doplatit si prostor na sdíleném blokovém zařízení (diskové pole). Platí se za gigabyte a také je omezen počet diskových operací. Symbolicky se také účtují datové přenosy do internetu, v rámci sítě cloud providera je vše obvykle zdarma. Pokud však plánujete přenášet terabyty dat, je nutné datové ceníky prostudovat.

Amazon poskytuje flexibilní účtování od hodiny i možnost „závazku“ na rok nebo tři roky, kde poskytuje výrazné slevy. Také nabízí zajímavou možnost virtuální burzy infrastruktury – zákazníci si nastaví, za jakou částku jsou ochotni instance platit, a ty se spustí jen tehdy, když tato cena klesne pod nastavený práh. Poté je možné instance ručně vypnout, případně se vypnou opět samy – jakmile cena (tzv. spot price) stoupne. S určitou šikovností a integrací lze takto provádět „levné“ výpočty.

Stokrát zmíněný Amazon EC2 také nabízí licenční poplatky od hodiny. Lze si tedy jak nainstalovat vlastní systém (s vlastní licencí), tak pronajmout RHEL, SLES nebo Windows Server jen na několik hodin, což může být zajímavé ve chvíli, kdy je třeba provést například testování na desítkách licencovaných operačních systémů.

V případě OpenStacku lze flexibilně nastavovat typy instancí a kvóty uživatelům i projektům, nicméně v základní instalaci nelze provádět žádné počítání cen. Existují však projekty plnící daný účel, takže OpenStack lze integrovat s účetnictvím a fakturovat jak koncovým zákazníkům, tak i uvnitř firmy.

Od představení služby Amazon EC2 uplynulo mnoho vody a na trhu se objevilo mnoho dalších poskytovatelů infrastrukturního cloudu. Někteří se snaží Amazon více či méně kopírovat, jiní vymýšlejí odlišné způsoby prodeje serverového času a úložného prostoru. Logicky vzniklo spoustu opensource IaaS projektů, z nichž jasně vyčnívá jeden – OpenStack.

Tento projekt byl založen americkým poskytovatelem internetových služeb Rackspace ve spolupráci s agenturou NASA (nikoliv NSA), později byl předán pod vedení nově vzniklé nadaci OpenStack Foundation, kde jsou klíčovými členy v době psaní článku (v abecedním pořadí): AT&T, Canonical, HP, IBM, Nebula, Rackspace, Red Hat a Suse. Způsob práce s OpenStackem je velmi podobný EC2, což je velká výhoda. Znáte-li alespoň trochu pracovní prostředí a pravidla EC2, rychle se zorientujete v OpenStacku.

Teorie

Existuje několik možností, jak OpenStack získat a vyzkoušet. V první řadě je možné stáhnout a nainstalovat „čistou” verzi OpenStacku přímo ze stránek nadace, což bych pro začátek nedoporučil. U této varianty probíhá bouřlivý vývoj a distribuce vychází každého půl roku. Není také optimalizována na žádný Linux, takže instalace je náročnější. Na druhou stranu poskytuje asi největší variabilitu a různé možnosti instalace.

Druhou možností je pořídit OpenStack distribuci přímo optimalizovanou pro konkrétní Linux, například RHEL, Fedora, Debian, Suse nebo Ubuntu. Zde bych vyzdvihnul projekt RDO (Red Hat Distribution of OpenStack), který je přímo optimalizován pro systémy Red Hat Enterprise Linux 6. Základní instalace spočívá (doslova) ve třech jednoduchých krocích. Získat funkční instalaci „vše v jednom” na jednom serveru lze spuštěním pouhých třech příkazů, avšak dostupný instalátor je dostatečně flexibilní i na produkční nasazení.

Jakkoli může být instalace pomocí komfortního instalátoru zjednodušená, je třeba podotknout náročnost produkční instalace, kdy je vhodné jednotlivé komponenty instalovat na samostatné servery tak, aby byla připravena možnost dalšího škálování (nové výpočetní uzly a místo pro obrazy či data). K těmto účelům distributoři volí různé přístupy. Například RDO využívá pro provisioning OpenStack uzlů opensource projekt Foreman, jenž je schopný na holé železo snadno instalovat a konfigurovat linuxové systémy. Také existuje projekt OOO (OpenStack on OpenStack), který se snaží o totéž, ale je teprve v ranné fázi vývoje. Proto se nabízí třetí možnost – svěřit produkční instalaci odborníkům. Existuje mnoho firem, které nabízejí vlastní produktové řady a služby postavené na OpenStacku, a již dnes je z čeho vybírat.

Architektura

Koncového uživatele architektura celého systému vůbec nemusí zajímat. Přes webové uživatelské rozhraní párkrát klikne a během okamžiku už se startuje operační systém. Stejně snadné je připojit požadovaný diskový prostor nebo nastavit novou (virtuální) síť s load balancerem. Je ovšem dobré vědět, s čím máme tu čest, a co nám OpenStack může nabídnout.

Architektura technologie OpenStack (zdroj: Red Hat 2012, 2013)
Architektura technologie OpenStack (zdroj: Red Hat 2012, 2013)


Architektura OpenStacku sestává z několika komponent: compute, image service, object and block storage, networking, identity service a dashboard. Všeříkající názvy a paralely Amazonu jsou sice zřejmé, ale všechny komponenty si postupně projdeme.

Komponenta s názvem Nova (compute) zajišťuje samotné spouštění virtuálních strojů na hypervizorech různých technologií, jako jsou KVM, Xen nebo Hyper-V na platformách x86 a ARM. Nova se ovšem neomezuje jen na virtualizaci, k dispozici je také provoz systémů na holém železe nebo spouštění úloh v linuxových kontejnerech. Komponenta Nova ukazuje vysokou variabilitu řešení, která se uplatní od obecných nasazení k HPC. Klíčovým prvkem je vysoká škálovatelnost, které se podřídila celá architektura OpenStacku. Nova je klíčovou součástí OpenStacku a nejen pro tuto komponentu je nesmírně důležitá správná komunikace. Z toho důvodu se většina komunikace mezi komponentami posílá přes messagingový protokol AMQP. Podporované implementace jsou dvě, Qpid a RabbitMQ. V několika případech, kdy messaging není vhodný (například přenos obrazu disku), mezi sebou komponenty integrují jiným způsobem.

Aby bylo možné nastartovat operační systém v cloudu, uživatel musí nejprve vytvořit, případně stáhnout z internetu, a následně nahrát obraz (image) operačního systému, který chce spustit. K tomu slouží Glance (image service). Služba zajišťující registr obrazů, jejich úschovu a dodávku pro uzly Nova, které je následně spouští. Ukládat data na bloková zařízení lze pomocí komponenty Cinder (block storage). Ta nabízí kromě tradičních linuxových zařízení pro ukládání dat (SATA, ISCSI SAN) také širokou podporu storage systémů mnoha hardwarových (EMC, IBM, HP) a softwarových (Red Hat GlusterFS, Ceph) firem. Do této komponenty se tedy připojují disky operačních systémů, které chtějí uživatelé zachovat i po zastavení instance.

Jelikož blokové zařízení nelze paralelně sdílet, data je možné ukládat také pomocí komponenty Swift (object storage). Poskytuje distribuovanou, škálovatelnou a redundantní úschovu souborů a dat za pomoci levného, běžného hardwaru. Programové rozhraní je do jisté míry kompatibilní s Amazon S3. Toto úložiště je velmi populární, protože jej lze exportovat jako virtuální diskový prostor a lze jej používat jako „falešné“ CDN. Data lze ovšem ukládat i do jednotlivých instancí, respektive blokových zařízení, pomocí tradičních technologií, jako je SQL, případně NoSQL.

Moderní datacentrum nelze provozovat bez flexibilní správy sítě, o což se stará komponenta Neutron (networking). Koncový uživatel cloudu tedy může snadno vytvářet vlastní (virtuální) sítě, routovat, nastavovat IP adresy a DHCP. Neutron poskytuje kompletní SDN (softwarově definovanou síť). Správu idendit má na starosti komponenta s názvem Keystone (identity service). Jedná se o klasickou službu poskytující autentifikaci a autorizaci, včetně podpory přístupu k API přes tokeny a správy organizací a skupin. A konečně posledním střípkem mozaiky je Horizon (dashboard), která vše spojuje do snadno ovladatelného uživatelského prostředí ne nepodobného službě Amazon EC2.

Celý systém je poskytován pod licencí Apache License, což zaručuje možnost vlastních úprav a následného přeprodeje a poskytování služeb. A s opensource licencováním je spojena řada dalších výhod, zejména mám na mysli možnost měnit dodavatele řešení podobně snadno jako například operátora mobilních služeb.

Praxe

Samotná práce s OpenStackem se v mnohém podobá webovému portálu služby Amazon EC2 a dá se rozdělit do dvou samostatných částí. Ta první, se kterou přijde do kontaktu koncový uživatel cloudu, se nazývá Projekt. Druhou část uvidí jen uživatelé s přidělenými právy a má název Administrace. OpenStack lze využít jak uvnitř firmy, tak se s ním dají stavět veřejné (nebo hybridní) cloudy. V následujícím textu se budeme blíže věnovat projektové části portálu, kde lze najít správu samotných instancí (instances), datových oddílů (volumes), obrazů operačních systémů (images and snapshots), bezpečnosti (access and security), správu sítí (networks, routers, topology) a objektových dat (object storage).

Seznam obrazů a snapshotů
Seznam obrazů a snapshotů


Ze všeho nejdříve je potřeba do cloudu dostat obraz operačního systému, který se bude spouštět. To lze provést několika způsoby, z nichž nejjednodušší je nahrání přímo přes web (upload), případně uvedení odkazu URL, odkud si OpenStack obraz stáhne. Proces inicializace obrazů při startování je stejný jako u EC2 a nejpopulárnější technologií pro linuxové hosty je cloud-init.

Instalace

Workflow instalace operačního systému v cloudu je trošku odlišná než v tradičním datacentru. Operační systémy se do cloudu přímo neinstalují, ale vybírají se předem připravené obrazy, které lze spouštět. Ty lze v dnešní době s minimem úsilí stáhnout z internetu a po několika málo krocích (nastavení hesla na root, aktivace licence Windows a podobně) lze systém začít používat. Přímo ve službě EC2 lze vybírat ze stovek připravených a odladěných obrazů systémů, stejně tak lze podobnou sbírku nahrát do OpenStacku. Po prvním spuštění je ovšem potřeba provést určité úpravy. Aby bylo možné proces inicializace automatizovat a měnit dle libosti, Amazon EC2 (tedy i OpenStack) dokáže z předem známé IP adresy předat soubor přes HTTP. Tomuto se říká prvotní data (seed data nebo customization script). Obrazy tedy musejí být předkonfigurovány tak, aby z dané (známé a nikdy se neměnící) adresy stáhly soubor a předaly jej programu, který provede konfiguraci. Formát souboru je volný, takže si každý dodavatel či zákazník vymyslel vlastní způsob konfigurace systému při prvním startu. U linuxových systémů se uchytil jednoduchý skript s názvem cloud-init, který dle dané (textové) konfigurace dokáže provést při prvním startu mnoho věcí: roztáhnout diskový oddíl na maximální možnou velikost, nastavit heslo rootu, doinstalovat zadané balíčky, nastavit časovou zónu a další věci. Tímto způsobem lze například vytvořit obraz systému Fedora, který je sice malý, ale pokud jej spustíte na instanci se čtyřicetigigabytovým svazkem, instalace se „roztáhne“ a podle dodané konfigurace prostředí nastaví. O obrazu říkáme, že je cloud-init ready, když je schopen takovéto konfigurace rovnou po startu. Cloud-init se obvykle pouze použije pro spuštění (bootstrap) konfiguračního systému typu DevOps, jako je například Puppet nebo Chef, který provádí rozsáhlejší změny, instalace a konfigurace aplikací i přes více strojů.

Dále je nutné vytvořit skupinu zabezpečení (security group) a definovat bezpečností politiku pro danou skupinu (otevřené porty pro firewall). Také je obvyklé nadefinovat si vlastní SSH klíče, které se do obrazů vkládají při nastartování pomocí cloud-initu. Tedy pokud již obrazy nejsou připraveny předem. S rostoucím počtem systémů se situace v síti stává nepřehledná, proto je vhodné již na začátku projektu definovat síť (networks). K tomu lze využít jak fyzických, tak virtuálních sítí. Přímo ve webovém uživatelském rozhraní OpenStacku je k dispozici interaktivní komponenta pro přehledné modelování sítí. Instancím lze také dynamicky přiřazovat tzv. floating IP adresy a nadefinované sítě lze snadno integrovat s load balancery, firewally a VPN. Uživatele EC2 jistě nepřekvapí, že instance je možné vytvářet s lokálním diskem uloženým přímo na hypervizoru (Nova), nebo s rootem na dedikovaných oddílech (Cinder). V prvním případě zastavení instance znamená konec života daného systému a data z těchto oddílů jsou ztracena, v případě druhém lze instanci libovolně vypínat a zapínat bez ztráty dat. Pro instanci s databází SQL tedy typicky připojíte extra datový oddíl, kde budou data, kdežto webová aplikace poběží na několika instancích bez speciálního datového oddílu. Samotný proces spuštění je triviální a formulář vyžaduje jen pár vstupů: název instance, velikost hlavního (root, C:) disku, obraz se systémem, typ (flavor), počet instancí, SSH klíč, bezpečnostní skupinu, datové oddíly a vstupní data pro cloud-init. Jednotlivé typy instancí jsou předem nadefinovány administrátorem (small, big, large) stejně jako limity a kvóty pro dané projekty a uživatele. Po stisku tlačítka se instance do minuty ohlásí a lze se k ní přímo z uživatelského prostředí připojit přes webovou javascriptovou VNC konzoli, případně přes SSH či Remote Desktop.

Spuštění vytvořené instance
Spuštění vytvořené instance


Závěr

Možnost rychlého nasazování aplikací třetích stran a vlastního kódu pomocí infrastrukturního cloudu je bezesporu atraktivní. Práce je rychlá, flexibilní a šetří peníze. Na prvotní ohodnocení bohatě stačí jeden jediný den a provede jej vlastní IT tým, dokumentace projektu je bohatá a dostatečně detailní. Ovšem OpenStack je typickým příkladem opensource softwaru, kde se na produkční instalaci vyplatí vybrat si kvalitního dodavatele.

Lukáš Zapletal
Autor pracuje v cloudové divizi společnosti Red Hat.

Chcete získat časopis IT Systems s tímto a mnoha dalšími články z oblasti informačních systémů a řízení podnikové informatiky? Objednejte si předplatné nebo konkrétní vydání časopisu IT Systems z našeho archivu.

Inzerce

Mají pevné disky budoucnost?

Western Digital nastavuje nové standardy pro kapacitu a hustotu úložišť

Digitalizace neustále roste a rozvíjí se nové technologie, jako je umělá inteligence (AI) a strojové učení (ML). Všichni, kdo zajišťují hyperškálování úložišť, poskytují cloudové služby a obsluhují datová centra vyžadují obrovské množství úložné kapacity pro stále rostoucí pracovní zátěž.