Z´apadoˇcesk´a univerzita v Plzni Fakulta aplikovan´ych vˇed Katedra informatiky a v´ypoˇcetn´ı techniky
Diplomov´ a pr´ ace Automatizace proces˚ u firmy v oblasti spr´ avy a u ´ drˇ zby server˚ u
Plzeˇn, 2010
Michal Bryx´ı
Abstrakt ´ Uvodn´ ı pov´ıd´an´ı o diplomov´e pr´aci.
1
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady (literaturu, projekty, SW atd.) uveden´e v pˇriloˇzen´em seznamu.
V Plzni dne podpis
2
3
Obsah 1 Z´ akladn´ı rozbor 1.1 C´ıl pr´ace a sezn´amen´ı s produktem . . . . . . . 1.1.1 Port´al . . . . . . . . . . . . . . . . . . . 1.2 Dosavadn´ı ˇreˇsen´ı produkˇcn´ıch server˚ u . . . . . . 1.3 V´ ybˇer vhodn´eho operaˇcn´ıho syst´emu . . . . . . 1.3.1 Porovn´an´ı v´ yhod jednotliv´ ych operaˇcn´ıch 1.3.2 Z´avˇer . . . . . . . . . . . . . . . . . . . 1.4 Virtualizace . . . . . . . . . . . . . . . . . . . . 1.4.1 V´ yhody virtualizace . . . . . . . . . . . 1.4.2 Nev´ yhody virtualizace . . . . . . . . . . 1.4.3 Typy virtualizace . . . . . . . . . . . . . 1.4.4 Z´avˇer . . . . . . . . . . . . . . . . . . . 1.5 Load balancing . . . . . . . . . . . . . . . . . . 1.5.1 Z´avˇer . . . . . . . . . . . . . . . . . . . 1.6 Failover . . . . . . . . . . . . . . . . . . . . . . 1.6.1 Failover pevn´eho disku . . . . . . . . . . 1.6.2 Failover v´ ypoˇcetn´ıho serveru . . . . . . . 1.6.3 Failover uˇzivatelsk´ ych dat . . . . . . . . 1.6.4 Failover datab´az´ı . . . . . . . . . . . . . 1.6.5 Failover server˚ u . . . . . . . . . . . . . . 1.6.6 Z´avˇer . . . . . . . . . . . . . . . . . . . 1.7 Zabezpeˇcen´ı . . . . . . . . . . . . . . . . . . . . 2 Vylepˇ sen´ı produkce 2.1 N´ahodn´e s´ıt’ov´e v´ ypadky . . . . . . . . . . . . 2.1.1 Probl´em . . . . . . . . . . . . . . . . . 2.1.2 Prvotn´ı pˇr´ıˇcina . . . . . . . . . . . . . ˇ sen´ı . . . . . . . . . . . . . . . . . . 2.1.3 Reˇ 2.2 D˚ uvˇeryhodn´ y a uˇziteˇcn´ y monitorovac´ı n´astroj 2.2.1 Probl´em . . . . . . . . . . . . . . . . . ˇ sen´ı . . . . . . . . . . . . . . . . . . 2.2.2 Reˇ
. . . . . . .
. . . . . . . . . . . . . . . . . . . . syst´em˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . .
1 1 1 1 3 4 7 7 7 8 8 10 10 11 11 11 13 13 14 15 15 15
. . . . . . .
17 17 17 18 19 19 19 20
Slovn´ık
22
A Obr´ azky
25
B Zdrojov´ e k´ ody 31 B.1 IP SNMP scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
0
Kapitola 1 Z´ akladn´ı rozbor 1.1
C´ıl pr´ ace a sezn´ amen´ı s produktem
Tato pr´ace byla vytvoˇrena s c´ılem restrukturalizace produkˇcn´ıho prostˇred´ı firmy, jeˇz se zab´ yv´a v´ yvojem a bˇehem softwaru soci´aln´ıch s´ıt´ı. Hlavn´ımi body z´ajmu z pohledu serverov´e infrastruktury jsou: stabilita, v´ ykonnost, failover. Z pohledu spr´avy konfigurac´ı jde prim´arnˇe o: robustnost, jednoduchost, rozˇsiˇritelnost. Firma mˇela v dobˇe zapoˇcet´ı t´eto pr´ace nastaveny jen minim´aln´ı procesy pro spr´avu a konfiguraci server˚ u. Z tohoto d˚ uvodu bylo rozhodnuto ˇze prim´arn´ım prvkem t´eto pr´ace m´a b´ yt zaveden´ı procesu pro konfiguraci 1 server˚ u.
1.1.1
Port´ al
Hlavn´ı pˇredmˇet podnik´an´ı firmy je soci´aln´ı aplikace na kterou se v t´eto pr´aci budu odkazovat jako na port´ al. Uk´azkovou tituln´ı str´anku port´alu lze vidˇet na obr´azku 1.12 . Port´al je prod´av´an jako sluˇzba a z tohoto vypl´ yv´a nˇekolik d˚ usledk˚ u fungov´an´ı cel´e firmy. Spoleˇcnost mus´ı vlastnit serverovou infrastrukturu nutnou pro bˇeh t´eto aplikace. Firma sama si mus´ı zajistit zabezpeˇcen´ı server˚ u, jejich z´alohov´an´ı, stabilitu, instalaci aplikace a jej´ı aktualizace. Jiˇz ze samotn´e povahy soci´aln´ıch s´ıt´ı vypl´ yv´a vysok´ y poˇcet pˇr´ıstupu uˇzivatel˚ u s obˇcasn´ ymi ˇspiˇckami v n´avˇstˇevnosti port´alu. D´ale je zˇrejm´e ˇze odstaven´ı produkce nen´ı u uˇzivatel˚ u port´alu v´ıtan´ y jev, a proto je dobr´e se mu vyhnout. Uˇzivatel´e dnes oˇcek´avaj´ı vysok´ y standard od webov´ ych sluˇzeb, a proto je potˇreba ˇreˇsit i ot´azku rychlosti aplikace. V t´eto pr´aci bude rozebr´ana v´ ykonnost aplikace z pohledu server˚ u. Port´al nab´ız´ı velk´e mnoˇzstv´ı sluˇzeb, nam´atkou: psan´ı ˇcl´ank˚ u, seskupov´an´ı do komunit, hromadn´e rozes´ıl´an´ı e-mail˚ u skupin´am uˇzivatel˚ u, chat, diskuzn´ı f´ora, fotogalerie, videa, statistiky uˇzivatelsk´ ych aktivit, a mnoho dalˇs´ıch. Z ˇsirok´e nab´ıdky sluˇzeb vypl´ yv´a velk´a mnoˇzina odpovˇednost´ı kdy je potˇreba dopˇredu promyslet d˚ usledky jak´ekoliv zmˇeny na cel´ y syst´em jako takov´ y. Nikoliv jen na jeho souˇc´asti.
1.2
Dosavadn´ı ˇ reˇ sen´ı produkˇ cn´ıch server˚ u
Firma pro n´ıˇz je tato pr´ace vytv´aˇrena je jiˇz nˇekolik let na trhu a dod´av´a sv´e produkty nˇekolika stovk´am z´akazn´ık˚ u. Za tuto dobu bylo jiˇz za potˇreb´ı ˇreˇsit ot´azky kolem infrastruktury server˚ u a probl´emu s t´ımto t´ematem spojen´ ych. Pro stanoven´ı c´ıl˚ u t´eto pr´ace 1
Zjednoduˇsenˇe ˇreˇceno jde o vyvinut´ı softwaru, jenˇz by se dok´azal postarat o konfiguraci server˚ u a vˇsech sluˇzeb potˇrebn´ ych pro bˇeh aplikace jenˇz firma vyv´ıj´ı. 2 Port´ al je upraven do stovek visu´ aln´ıch variant. N´ahled je pˇriloˇzen pouze pro pˇribl´ıˇzen´ı aplikace ˇcten´ aˇri.
1
Obr´azek 1.1: Uk´azkov´a tituln´ı obrazovka port´alu
tedy pˇredch´azela dlouh´a doba seznamov´an´ı se s aktu´aln´ım produkˇcn´ım ˇreˇsen´ım firmy. Pochopen´ı vˇsech proces˚ u firmy je pro takovouto pr´aci velice d˚ uleˇzit´e. Na prvn´ı pohled ned˚ uleˇzit´ y detail m˚ uˇze zniˇcit i velice dobˇre a peˇclivˇe pˇripravovan´ y pl´an reorganizace. Pˇri implementaci jsme vytvoˇrili velk´e mnoˇzstv´ı test˚ u a simulac´ı, abychom pochopili jak bude pouˇz´ıvan´ y hardware reagovat na extr´emn´ı podm´ınky ˇci jen zmˇenu z´atˇeˇze. Aˇckoliv se na prvn´ı pohled m˚ uˇze jevit vytvoˇren´ı z´atˇeˇzov´ ych test˚ u jako trivi´aln´ı z´aleˇzitost, opak se v praxi uk´azal pravdou. Pˇrekvapivˇe velmi ˇcastou chybou bylo ˇspatn´e pochopen´ı c´ıle test˚ ua interpretace v´ ysledk˚ u testu. Takov´eto chyby pak zp˚ usobovaly nelogick´e chov´an´ı syst´emu pˇri implementaci nˇejak´eho ˇreˇsen´ı. Z´ıskan´e postˇrehy a zkuˇsenosti budou rozebr´any d´ale. Na obr´azku 1.2 lze vidˇet zjednoduˇsen´e sch´ema produkce firmy. Servery nepotˇrebn´e pro t´ema t´eto pr´ace jsou z obr´azku vynech´any. Tento obr´azek bude postupnˇe doplˇ nov´an o dalˇs´ı body jeˇz budou diskutov´any v dalˇs´ıch ˇca´stech pr´ace. xen02 Vstupn´ı server pro poˇzadavky z internetu. Firewall a Virtual Private Network (VPN) server bˇeˇz´ı zde. Um´ıstˇen´ı firewallu do takto pˇredsunut´eho“ stroje m´a v´ yhodu ” v nezatˇeˇzov´an´ı load-balanceru. lb01 Load balancer - veˇsker´e poˇzadavky na webov´e sluˇzby jdou pˇres tento server. On rozhodne do jak´e ˇca´sti infrastruktury m´a poˇzadavek smˇeˇrovat. web0x V´ ypoˇcetn´ı servery3 , obsluha HTTP poˇzadavk˚ u. Kaˇzd´ y tento stroj m´a pˇripojen NFS svazek z file01. db0x Datab´azov´e servery, obsulah SQL dotaz˚ u. dev01 Sestavov´an´ı a distribuce zdrojov´ ych k´od˚ u aplikace na v´ ypoˇcetn´ı servery. Takzvan´ y deploy. 3
Jin´e servery v produkci samozˇrejmˇe tak´e prov´adˇej´ı v´ ypoˇcty“. Poku ale bude d´ale v dokumentu ” odkazov´ ano na v´ ypoˇcetn´ı server, vˇzdy budou myˇsleny servery web0x.
2
Obr´azek 1.2: Diagram p˚ uvodn´ıho produkˇcn´ıho sch´ematu firmy
process01 Server zpracov´avaj´ıc´ı dlouho bˇeˇz´ıc´ı u ´koly. Hromadn´e pos´ıl´an´ı e-mail˚ u, konverze dokument˚ u, . . . file01 Sd´ılen´ y prostor pro data jeˇz mus´ı b´ yt dostupn´a na vˇsech serverech. Pouˇz´ıv´a protokol NFS ext01 Server pro podp˚ urn´e webov´e str´anky jeˇz pˇr´ımo nesouvis´ı s produktem spoleˇcnosti. D´ıky viditelnosti z venku m´a tak´e vlastn´ı firewall. mail01 Mail server zajiˇst’uj´ıc´ı jeden odchoz´ı uzel pro poˇstu.
1.3
V´ ybˇ er vhodn´ eho operaˇ cn´ıho syst´ emu
V´ ybˇer operaˇcn´ıho syst´emu z velk´e ˇca´sti definuje v´ yslednou podobu cel´eho produkˇcn´ıho prostˇred´ı. To kter´ y z existuj´ıc´ıch Operaˇcn´ı syst´em (OS) zvol´ıme n´am vymezuje aplikace jeˇz bude moˇzn´e pouˇz´ıt. Nˇekter´e aplikace totiˇz dok´aˇz´ı bˇeˇzet jen na urˇcit´em typu operaˇcn´ıch syst´em˚ u. Naˇstˇest´ı n´ami vybran´ y seznam potˇrebn´ ych aplikac´ı, respektive technologi´ı nen´ı 3
nijak omezuj´ıc´ı, protoˇze aplikace podporuj´ıc´ı potˇrebn´e technologie existuj´ı na vˇsech bˇeˇznˇe pouˇz´ıvan´ ych platform´ach. Jedno z prvn´ıch omezen´ı, kter´e padne na kteroukoli skupinu rozhoduj´ıc´ı se pro ten ˇci onen produkt jsou pˇredchoz´ı zkuˇsenosti. To jak dan´a technologie dok´azala b´ yt n´apomoc´ı ˇci pˇrek´aˇzkou pˇredchoz´ıch projekt˚ u jasnˇe urˇcuje nasazen´ı t´eto v projektu dalˇs´ım. Pokud si dok´aˇzeme pˇriznat ˇze nˇejak´ y ne´ uspˇech nen´ı vinou operaˇcn´ıho syst´emu, n´ ybrˇz naˇs´ı neznalosti, pak je toto krit´erium pˇri rozhodov´an´ı urˇcitˇe spr´avn´e. N´aˇs v´ ybˇer bude d´ale zuˇzovat rozpoˇcet projektu. Cena za operaˇcn´ı syst´em m˚ uˇze b´ yt kdekoliv od nuly aˇz po tis´ıce korun za instalaci. Do finanˇcn´ı str´anky mus´ıme zan´est i n´aklady na administraci a udrˇzov´an´ı operaˇcn´ıho syst´emu, pˇr´ıpadn´e n´aroky na speci´aln´ı hardware potˇrebn´ y pro bˇeh OS, omezen´ı na pˇr´ıpadn´ y dalˇs´ı software kter´ y je nutn´ y pro bˇeh dan´eho operaˇcn´ıho syst´emu a dalˇs´ı. Vˇsechny tyto hodnoty shrnuje ukazatel Total cost of ownership (TCO). Masovˇejˇs´ı rozˇs´ıˇren´ı tohoto ukazatele se datuje k roku 1987 a od t´eto doby bylo vyd´ano mnoho studi´ı porovn´avaj´ıc´ıch TCO jednotliv´ ych operaˇcn´ıch syst´em˚ u. Naneˇstˇest´ı r˚ uzn´e studie doch´az´ı k naprosto odliˇsn´ ym z´avˇer˚ um. Napˇr´ıklad studie R Cybersource - Linux vs. Windows - Total Cost of Ownership - Comparison[13] jednoznaˇcnˇe mluv´ı pro ˇreˇsen´ı postaven´a na z´akladˇe linuxov´ ych operaˇcn´ıch syst´em˚ u. Oproti R
tomu porovn´an´ı spoleˇcnosti Microsoft - Compare Windows to Red Hat[6] z roku 2003 ukazuje na TCO jednoznaˇcnˇe niˇzˇs´ı u ˇreˇsen´ı zaloˇzen´ ych na platformˇe Windows server. Existuj´ı i dalˇs´ı studie s opˇet naprosto odliˇsn´ ymi v´ ysledky. Vzhledem k osobn´ı zkuˇsenosti, politice firmy a st´avaj´ıc´ımu ˇreˇsen´ı jsme se rozhodli zaˇradit na seznam pˇrijateln´ ych OS pouze ty jeˇz jsou zaloˇzeny na linuxu. Dalˇs´ım zaj´ımav´ ym rozhodovac´ım prvkem m˚ uˇze b´ yt spolehlivost syst´emu. Spolehlivost n´am ud´av´a jak dlouho dok´aˇze dan´ y server bez odst´avky bˇeˇzet. V roce 2008 provedl Institute for Advanced Professional Studies v´ yzkum t´eto hodnoty u nejbˇeˇznˇeji pouˇz´ıvan´ ych operaˇcn´ı syst´em˚ u a vydal zpr´avu 2008 Server OS Reliability Survey[1]. V´ yn ˇatek z t´eto zpr´avy je vidˇet na obr´azku 1.3. Ve zpr´avˇe jsou uvedeny opravdu n´ızk´e ˇcasy odst´avek koncov´ ych klient˚ u. Roˇcnˇe to dˇel´a jednotky hodin. Z pˇredchoz´ıch projekt˚ u v´ıme, ˇze si vˇcasn´ ym nahl´aˇsen´ım odst´avky sluˇzeb a napl´anov´an´ım odst´avky do noˇcn´ıch hodin m˚ uˇzeme dovolit celkovou roˇcn´ı odst´avku sluˇzeb v daleko delˇs´ıch ˇcasech. Tento u ´daj n´am tedy pouze poslouˇz´ı jako identifik´ator pˇredpokl´adan´ ych odst´avek dan´ ych volbou operaˇcn´ıho syst´emu. Jelikoˇz v tomto projektu pˇredpokl´ad´ame nasazen´ı vˇetˇs´ıho poˇctu server˚ u, bude pro n´as hr´at d˚ uleˇzitou roli schopnost hromadn´e administrace v´ıce stroj˚ u. schopnost administrace OS v pˇr´ıpadˇe nouze, podpora monitorov´an´ı a hromadn´ ych report˚ u sluˇzeb serveru, kvalita a rozsah zdroj˚ u pro popis nestandardn´ıch stav˚ u. Naˇstˇest´ı v dneˇsn´ı dobˇe existuje velk´e mnoˇzstv´ı takov´ ychto n´astroj˚ u pro vˇsecny bˇeˇznˇe pouˇz´ıvan´e operaˇcn´ı syst´emy, takˇze se nemus´ıme moc omezovat. Spoleˇcnˇe s schopnost´ı administrovat serverov´e instalace n´as tak´e bude zaj´ımat moˇznost aktualizac´ı operaˇcn´ıho syst´emu a vˇsech d´ılˇc´ıch program˚ u. Tato vlastnost se uk´aˇze jako kriticka vˇzdy v nejnevhodnˇejˇs´ı okamˇzik. A to ve chv´ıli, kdy nˇekdo nalezne bezpeˇcnostn´ı chybu v softwaru nainstalovan´em na naˇsich serverech. Tehdy se uk´aˇze v´ yhoda pravideln´ ych aktualizac´ı stejnˇe jako nev´ yhoda zastaralosti softwaru pro nˇekter´e druhy OS.
1.3.1
Porovn´ an´ı v´ yhod jednotliv´ ych operaˇ cn´ıch syst´ em˚ u
Pros´ım berte na vˇedom´ı, ˇze v´ yhody a nev´ yhody zde uveden´e jsou v´az´any na naˇ s´ı situaci a naˇ sim znalostem. V jin´ ych situac´ıch se v´ yhody mohou st´at nev´ yhodami a naopak. Windows Server 2008 • Nezn´am´e technologie na poli server˚ u a virtualizace 4
Obr´azek 1.3: 2008 Server OS Reliability Survey
• Komerˇcn´ı, vysok´e pˇr´ım´e poˇca´teˇcn´ı n´aklady ˇ • Sirok´ a moˇznost podpory • Rozs´ahl´a dokumentace na jednom m´ıstˇe - MSDN Tento operaˇcn´ı syst´em je pro n´as velkou nezn´amou a nem´ame jeho moˇznosti dobˇre prozkˇ potˇrebn´ ouman´e. Cas y k jeho prozkoum´an´ı by tedy byl opravdu vysok´ y. Jedn´a se o komerˇcnˇe prod´avan´ y OS u kter´eho pˇredpokl´ad´ame nutnost dokoupen´ı velk´eho mnoˇzstv´ı dalˇs´ıch aplikac´ı, abychom mohli tento sys´em efektivnˇe provozovat. Tento operaˇcn´ı syst´em jsme kv˚ uli v´ yˇse uveden´ ym d˚ uvod˚ um vyˇskrtli z naˇseho seznamu jiˇz na zaˇca´tku. Community enterprise operating system - CentOS • Syst´em zaloˇzen´ y na linuxu • Kv˚ uli stabilitˇe pouˇz´ıv´a starˇs´ı software • Velmi slab´a komunitn´ı podpora • Bal´ıˇcky zaloˇzen´e na RPM Tento operaˇcn´ı syst´em vych´az´ı z distribude Red Hat. Zkuˇsenost s n´ım m´ame z jin´ ych projekt˚ u. Bohuˇzel tato zkuˇsenost je naprosto odrazuj´ıc´ı. Jedn´a se konkr´etnˇe o zastaralost vˇetˇsiny pouˇzit´eho softwaru, chybˇej´ıc´ı z´akladn´ı bal´ıˇcky v repozit´aˇr´ıch, amat´ersk´a komunita s nedostateˇcnou dokumentac´ı, nepˇr´ıvˇetiv´e chov´an´ı bal´ıˇckovac´ıho syst´emu yum. Bohuˇzel ani tento OS se n´am nejevil jako vhodn´a volba.
5
OpenSUSE • Komunitn´ı distribuce se siln´ ym partnerem - firmou Novell • Rozs´ahl´a dokumentace na pˇrijateln´e u ´rovni • Bal´ıˇcky zaloˇzen´e na RPM Red Hat Enterprise Linux for Servers • K jak´emukoliv pouˇzit´ı zdarma, placen´a pouze podpora • Kv˚ uli stabilitˇe pouˇz´ıv´a starˇs´ı software • Nezn´am´a komunitn´ı podpora • Bal´ıˇcky zaloˇzen´e na RPM Zde plat´ı vˇetˇsina toho, co bylo naps´ano v odstavci pro CentOS. Gentoo • Velmi kvalitn´ı, aktu´aln´ı a rozs´ahl´a dokumentace • Aktivn´ı, vysoce vzdˇelan´a komunita • Aktu´aln´ı bal´ıˇcky, kter´e obˇcas trp´ı nedostateˇcn´ ym testov´an´ım • Hardened profil, kter´ y zakazuje verze softwaru u kter´ ych nen´ı jistota stability a bezpeˇcnosti • Bal´ıˇckovac´ı syst´em umoˇzn ˇuj´ıc´ı u nˇekter´ ych bal´ıˇck˚ u paraleln´ı existenci r˚ uzn´ ych verz´ı • Rolling updates • N´aroˇcn´a distribuce, nevhodn´a pro zaˇc´ateˇcn´ıky • V pˇr´ıpadˇe ˇspatn´e pˇr´ıpravy dlouh´a doba pro opraven´ı probl´emu Gentoo je z m´eho pohledu velice kvalitn´ı distribuc´ı se ˇspiˇckov´ ym bal´ıˇckovac´ım syst´emem. Bohuˇzel v´ ymˇenou za jeho flexibilitu je i n´aroˇcnost na znalosti, kter´e mus´ı syst´emov´ y administr´ator m´ıt pro jeho bezprobl´emovou u ´drˇzbu. Pˇres mnoho v´ yhod kter´e tato distribuce nab´ız´ı jsme se rozhodli od pouˇzit´ı t´eto distribuce opustit. Zastupitelnost administr´ator˚ u v projektu, jednoduch´e pˇred´an´ı know-how pro n´as byly pˇrednˇejˇs´ı. Debian • Projekt s velmi dlouhou tradic´ı, ˇsiroce rozˇs´ıˇren • Rozumn´ y bal´ıˇckovac´ı syst´em s dostateˇcnˇe aktualizovan´ ym software • Pˇrijateln´a dokumentace, aktivn´ı komunita • Jednoduch´a distribuce • Bal´ıˇcky zaloˇzen´e na DEB D´ıky sv´emu rozˇs´ıˇren´ı a ˇsirok´e uˇzivatelsk´e z´akladnˇe je Debian dobˇre funguj´ıc´ı distribuce. Obˇcas bohuˇzel naraz´ıme na komunitn´ı n´avody kter´e jsou bud’ neaktu´aln´ı, nebo velice amat´ersk´e. Tento jev je dan´ı za velk´e rozˇs´ıˇren´ı distribuce. 6
BSD, Solaris, unix Ostatn´ı zde nejmenovan´e distribuce jsme vyˇradili na z´akladˇe jednoduch´eho principu naˇs´ı neznalosti. To, ˇze jsme si vybrali k bliˇzˇs´ımu zkoum´an´ı nˇekterou z v´ yˇse uveden´ ych distribuc´ı je d´ano jistou zkuˇsenost´ı a historick´ ym v´ yvojem. Jin´ y ˇclovˇek m˚ uˇze m´ıt na vˇec jin´ y pohled. Nen´ı v sil´ach ˇz´adn´eho ˇclovˇeka do detail˚ u prozkoumat vˇsechny operaˇcn´ı syst´emy kter´e existuj´ı.
1.3.2
Z´ avˇ er
Firma pro n´ıˇz je tento projekt vytv´aˇren zpoˇc´atku pouˇz´ıvala OpenSUSE - 10.3. Postupnˇe upgradovala potˇrebn´e servery aˇz do OpenSUSE 11.1. A v posledn´ıch letech jsou vˇsechny servery postupnˇe migrov´any na Debian Lenny. Situace rozloˇzen´ı jednotliv´ ych distribuc´ı pˇred zapoˇcet´ım prac´ı je vidˇet na obr´azku A.1. Stanoven´ ym c´ılem je tedy vˇsechny budouc´ı servery postavit na OS Debian. Jako dlouhodob´ y c´ıl je pak stanoveno postupnˇe nahradit vˇsechny OpenSUSE servery distribuc´ı Debian.
1.4
Virtualizace
V posledn´ıch nˇekolika letech je v IT firm´ach m´odou propagovat a implementovat takzvan´e virtualizovan´e servery. Virtu´aln´ı server (nˇekdy t´eˇz naz´ yvan´ y jako domU, kontejner ˇci hostovan´ y syst´em je takov´ y, jenˇz nebˇeˇz´ı pˇr´ımo na hardwaru dan´eho poˇc´ıtaˇce. Pˇr´ımo na hardwaru pak bˇeˇz´ı takzvan´ y hardwarov´y stroj. Nˇekdy se mu tak´e ˇr´ık´a hostovac´ı OS, dom0 ˇci Hardware Node (HN). Virtu´aln´ı server si lze velice zjednoduˇsenˇe pˇredstavit jako bˇeˇzn´ y program jenˇz bˇeˇz´ı v poˇc´ıtaˇci. T´ımto programem je ale cel´ y operaˇcn´ı syst´em. Takˇze pak bˇeˇz´ı jeden operaˇcn´ı syst´em v jin´em. Virtualizace obecnˇe m´a nˇekolik jiˇz zn´am´ ych v´ yhod a nˇekolik nev´ yhod s nimiˇz je dobr´e se sezn´amit pˇred jej´ım pouˇzit´ım.
1.4.1
V´ yhody virtualizace
ˇ ren´ı prostˇ Setˇ redky Jelikoˇz bˇeˇz´ı v´ıce operaˇcn´ıch syst´em˚ u na jednom serveru z´aroveˇ n velmi ˇcasto je zapotˇreb´ı menˇs´ı mnoˇzstv´ı server˚ u neˇz to, kter´e bychom potˇrebovali bez pouˇzit´ı virtualizace. Tato v´ yhoda nab´ yv´a na v´ yznamu pokud je napˇr´ıklad potˇreba vysok´ y v´ ykon pro jeden server ve dne a pro jin´ y v noci. V´ ypoˇcetn´ı prostˇredky se mohou pˇrerozdˇelit podle aktu´aln´ı potˇreby. Nˇekter´e servery ze sv´e podstaty nemaj´ı vysok´e n´aroky na CPU/RAM. Webhousingov´e spoleˇcnosti ale obvykle nenab´ızej´ı mal´e“ konfigurace. Pokud se v´ıce tˇechto mal´ ych virtu´aln´ıch stroj˚ u um´ıst´ı na jeden ” silnˇejˇs´ı HN, pak se m˚ uˇze jednat o u ´sporu v ˇra´du aˇz des´ıtek server˚ u. Flexibilita V pˇr´ıpadˇe ˇze chcete pˇridat v´ ypoˇcetn´ı prostˇredky do serveru kter´ y nen´ı virtualizovan´ y, obvykle se neobejdete bez fyzick´e pˇr´ıtomnosti technika v serverovnˇe a vypnut´ı serveru. V pˇr´ıpadˇe serveru virtualizovan´eho je pˇrid´an´ı napˇr´ıklad v´ıce pamˇeti ot´azkou nˇekolika m´alo pˇr´ıkaz˚ u. Obvykle ani nen´ı potˇreba vyp´ınat virtu´aln´ı server. Jednoduˇ sˇ s´ı spr´ ava Kaˇzd´ y spr´avce server˚ u se dˇr´ıve ˇci pozdˇeji setk´a s probl´emem kdy si zruˇs´ı pˇr´ıstup k serveru a jedin´a moˇznost jak probl´em opravit je fyzick´a pˇr´ıtomnost kohosi v serverovnˇe. Samozˇrejmˇe sluˇsn´e server housingov´e spoleˇcnosti nab´ız´ı moˇznost vzd´alen´e spr´avy napˇr´ıklad v podobˇe zpˇr´ıstupnˇen´ı kl´avesnice a monitoru serveru pˇres
7
internet. Jenˇze vˇsechny tyto ˇreˇsen´ı maj´ı urˇcitou prodlevu neˇz je vzd´alen´a spr´ava instalov´ana. Pokud pouˇz´ıv´ate virtu´aln´ı servery, pak m´ate pˇr´ım´ y pˇr´ıstup k jejich disku a k tlaˇc´ıtku“ restart. ” Moˇ znost omezen´ı V nˇekter´ ych prostˇred´ıch je v´ yhodn´e m´ıt moˇznost omezit zdroje serveru. Opˇet v pˇr´ıpadˇe fyzick´eho serveru jde o komplikovanou proceduru. V pˇr´ıpadˇe serveru virtu´aln´ıho pak o nˇekolik pˇr´ıkaz˚ u. Migrace Jelikoˇz i poˇc´ıtaˇce st´arnou a jelikoˇz je pˇredpoklad ˇze Moore˚ uv z´akon bude jeˇstˇe nˇekolik let platit je moˇznost jednoduch´eho pˇresunu OS i se vˇsemi daty velice d˚ uleˇzit´a.
1.4.2
Nev´ yhody virtualizace
Administrace Virtualizace sebou pˇrin´aˇs´ı spoustu nov´ ych vlastnost´ı a obvykle i technologi´ı s kter´ ymi mus´ı b´ yt administr´ator obezn´amen. Pouˇzit´ı kaˇzd´e dalˇs´ı technologie samozˇrejmˇe pˇrin´aˇs´ı potenci´aln´ı riziko chyb a probl´em˚ u. V´ ykon V´ yrobci virtualizaˇcn´ıch ˇreˇsen´ı se snaˇz´ı uˇzivatele jejich produkt˚ u pˇresvˇedˇcit ˇze n´akaldy na provoz virtualizace jako takov´e jsou nulov´e. Osobnˇe jsem ze zkuˇsenosti pˇresvˇedˇcen ˇze toto nen´ı pravda a ˇze v jist´ ych specifick´ ych situac´ıch m˚ uˇze b´ yt overhead virtualizace probl´em. Chybovost Jak jiˇz bylo ˇreˇceno v´ yˇse pouˇzit´ı virtualizace nutnˇe zesloˇzit’uje cel´ y proces spr´avy server˚ u. Administr´ator se pak m˚ uˇze omylem dopustit chyb kter´e by u nevirtualizovan´eho syst´emu ˇreˇsit nemusel. Druh´ ym typem chyb, kter´e jsou bohuˇzel dle m´e zkuˇsenosti relativnˇe ˇcast´e jsou chyby v samotn´e virtualizaˇcn´ı technologii. Chyby tohoto charakteru se obvykle velmi ˇspatnˇe odhaluj´ı a obvykle vedou k p´adu cel´eho virtualizovan´eho serveru.
1.4.3
Typy virtualizace
V´ ybˇer vhodn´e virtualizaˇcn´ı technologie je velmi d˚ uleˇzit´ y krok pˇri stavbˇe serverov´e infrastruktury. Pro bezprobl´emov´ y bˇeh je dobr´e, aby vˇsechny virtualizovan´e stroje pouˇz´ıvaly stejnou technologii. Napˇr´ıklad migrace virtu´aln´ıch stroj˚ u mezi stroji fyzick´ ymi se tak velmi zjednoduˇs´ı. Samozˇrejmˇe kaˇzd´a z dnes nab´ızen´ ych technologi´ı pˇrin´aˇs´ı jist´e klady a jist´e z´apory. Nelze ˇr´ıci ˇze by v t´eto oblasti existovala technologie jeˇz by pro vˇsechny pˇr´ıpady pˇredbˇehla technologie ostatn´ı. V n´asleduj´ıc´ım srovn´an´ı uvaˇzujeme pouze open source n´astroje kter´e jsou schopn´e bˇeˇzet pod a hostovat unixov´e OS a bˇeˇz´ı na platformˇe amd644 . Dnes bˇeˇznˇe pouˇz´ıvan´e technologie v t´eto oblasti jsou: XEN, KVM, OpenVZ. Velmi pravdˇepodobnˇe existuj´ı i dalˇs´ı projekty kter´e by splˇ novaly podm´ınky definovan´e v´ yˇse. Autor tohoto dokumentu je bud’ povaˇzoval za nevyhovuj´ıc´ı, nebo je v˚ ubec neznal. KVM V IT je Kernel-based Virtual Machine (KVM) implementac´ı virtu´aln´ıho stroje ” vyuˇz´ıvaj´ıc´ı j´adro operaˇcn´ıho syst´emu. Tento pˇr´ıstup obvykle pˇrin´aˇs´ı v´ yˇsˇs´ı v´ ykon neˇz ˇreˇsen´ı zaloˇzen´e na virtu´aln´ıch stroj´ıch jenˇz z´avis´ı na ovladaˇc´ıch v uˇzivatelsk´em prostoru. KVM se nejˇcastˇeji vztahuje k infrastruktuˇre v Linuxov´em kernelu. KVM nab´ız´ı nativn´ı virtualizaci na x86 procesorech jenˇz poskytuj´ı rozˇs´ıˇren´ı Intel VT-x ˇci AMD-V. Linuxov´e j´adro 2.6.20 jako prvn´ı obsahovalo implementaci KVM. V´ yhodou KVM je moˇznost bˇehu jak´ehokoliv druhu OS nez´avisle na OS v HN.“[10] 4
jinak tak´e zn´ am´ y jako x86 64
8
OpenVZ OpenVZ je virtualizace zaloˇzen´a na principu kontejner˚ u[4]. Umoˇzn ˇuje vytvoˇrit velk´e mnoˇzstv´ı izolovan´ ych kontejner˚ u na jednom fyzick´em serveru pˇriˇcemˇz zajist´ı izolaci proces˚ u. Kaˇzd´ y kontejner se chov´a jako samostatn´ y server. M˚ uˇze b´ yt samostatnˇe restartov´an, m´ıt vlastn´ı uˇzivatele, pamˇet’, procesy, i aplikace. Velkou v´ yhodou OpenVZ je ˇsirok´a podpora uˇzivatelsk´ ych skript˚ u a vyuˇz´ıv´an´ı dalˇs´ıch technologi´ı. Ot´azka vytvoˇren´ı diskov´eho odd´ılu pro um´ıstˇen´ı kontejneru je tak vyˇreˇsena pouh´ ym pˇrid´an´ım pˇrep´ınaˇce do pˇr´ıkazu pro vytvoˇren´ı kontejneru. Dalˇs´ı velkou v´ yhodou OpenVZ je lehkost s jakou se s danou technologi´ı pracuje. Administr´ator HN m´a automaticky k dispozici administr´atorsk´ y u ´ˇcet vˇsech virtu´aln´ıch stroj˚ u. Pˇrerozdˇelov´an´ı v´ ypoˇcetn´ıho v´ ykonu se dˇeje za bˇehu virtu´aln´ıch stroj˚ u a to vˇcetnˇe obvykle komplikovan´eho pˇrerozdˇelov´an´ı diskov´eho prostoru. XEN XEN je jednou z nejstarˇs´ıch a nejzn´amˇejˇs´ıch technologi´ı na poli virtualizaˇcn´ıch n´astroj˚ u. Pro bˇeh XENu je zapotˇreb´ı takzvan´ y hypervizor jenˇz se star´a o zaveden´ı a chod dom0. Jelikoˇz se XEN zat´ım nedostal do ofici´aln´ı vˇetve linuxov´eho kernelu je nev´ yhodou t´eto technologie nutnost speci´aln´ıho j´adra. Naˇstˇest´ı tento probl´em je d´ıky adopci t´eto technologie vˇetˇsinou hlavn´ıch distribuc´ı zanedbateln´ y. XEN m´a s´am o sobˇe z´akladn´ı n´astroje pro spr´avu virtu´aln´ıch stroj˚ u. Umoˇzn ˇuj´ı hl´ıdat aktu´aln´ı vyuˇzit´ı syst´emu jednotliv´ ymi kontejnery, prov´adˇet migrace i automaticky nainstalovat OS na virtu´aln´ı server. V´ ybˇer virtualizaˇcn´ı technologie by nemˇel b´ yt ponech´an n´ahodˇe. Snadno se m˚ uˇze st´at ˇze aˇz po implementaci zjist´ıme ˇze bychom potˇrebovali vlastnost kterou n´ami adoptovan´a technologie nenab´ız´ı. V pˇr´ıpadˇe tohoto projektu ale musel v´ ybˇer nejvhodnˇ ejˇ s´ıho ustoupit daleko d˚ uleˇzitˇejˇs´ımu krit´eriu a to zachov´ an´ı homogenity prostˇ red´ı. Homogenita je v takov´ ychto projektech velmi d˚ uleˇzit´a. Administrace v´ıce druh˚ u je vˇzdy daleko sloˇzitˇejˇs´ı a pˇrin´aˇs´ı vˇetˇs´ı mnoˇzstv´ı chyb. Jelikoˇz firma m´a zabˇehnuto nemal´e mnoˇzstv´ı stroj˚ u vyuˇz´ıvaj´ıc´ıch technologii XEN, zvolili jsme pro budouc´ı rozˇsiˇrov´an´ı infrastruktury pr´avˇe tuto technologii. Nutno podotknout ˇze XEN se v t´eto firmˇe osvˇedˇcil a tud´ıˇz nen´ı probl´em s jeho dalˇs´ım nasazov´an´ım. Na obr´azku 1.2 jsou zn´azornˇeny dom0 stroje p´ıskovou barvou a domU stroje barvou ˇsedou. Vazba mezi dom0 a domU je pak zn´azornˇena ˇsedou pˇreruˇsovanou ˇca´rou. Na sch´ematu si lze povˇsimnout jedn´e zvl´aˇstnosti. A to sice virtualizace 1:1. Neboli nasazen´ı jednoho virtu´aln´ıho stroje na jednom stroji fyzick´em. Zkuˇsenost z tohoto nasazen´ı je n´asleduj´ıc´ı: • M´ırnˇe vzrostla komplikovanost administrace. M´ısto aktualizace a konfigurace jednoho mus´ı sysadmin spravovat dva operaˇcn´ı syst´emy. • Obˇcasnˇe vznikaj´ı p´ady syst´emu zp˚ usoben´e pˇr´ımo XENem. • Za dobu existence produkˇcn´ıho prostˇred´ı popsan´eho v´ yˇse nebylo zapotˇreb´ı prov´adˇet migraci stroje. K potˇrebˇe prov´est migraci nedoˇslo z r˚ uzn´ ych d˚ uvod˚ u. Jednak pˇrechodem 5 na jinou distribuci OS. Pak tak´e d´ıky potˇrebˇe r˚ ustu do ˇs´ıˇrky souˇcasnˇe s upgradem 6 serveru do v´ yˇsky . A v neposledn´ı ˇradˇe d´ıky zastar´an´ı dan´eho ˇreˇsen´ı, jenˇz vedlo k manaˇzersk´emu rozhodnut´ı postavit dan´ y server znovu. Ukazuje se, ˇze v nˇekter´ ych pˇr´ıpadech tento postup uˇsetˇr´ı spoustu ˇcasu. • Dle studie A Performance Comparison of Hypervisors[8] m´a pouˇzit´ı XENu za n´asledek jistou v´ ykonostn´ı penalizaci. Firma nikdy nedˇelala test propadu v´ ykonosti d´ıky 5 6
R˚ ust do ˇs´ıˇrky - Rozdˇelen´ı sluˇzby mezi v´ıce server˚ u. Obvykle spojeno se zmˇenami v topologii. R˚ ust do v´ yˇsky - v´ ymˇena serveru za v´ ykonˇejˇs´ı.
9
pouˇzit´ı virtualizace, ale dle zkuˇsenost´ı z extern´ıch referenc´ı pˇredpokl´ad´ame ˇze bude ˇcinit cca 5 − 10% v z´avislosti na typu pouˇzit´e virtualizaˇcn´ı technologie.
1.4.4
Z´ avˇ er
D´ıky v´ yˇse uveden´ ym d˚ uvod˚ um doˇslo k n´asleduj´ıc´ım zmˇen´am v pˇr´ıstupu k administraci a spr´avˇe server˚ u: Postupn´a eliminace virtualizace 1:1 v m´ıstech kde evidentnˇe nen´ı potˇreba. Napˇr´ıklad v´ ypoˇcetn´ı servery (web02, web03) a datab´azov´e servery (db01, db02, db03) pro n´as jsou jasn´ ym pˇr´ıkladem ˇspatnˇe uˇzit´e virtualizace 1:1. Tyto virtu´aln´ı servery totiˇz jiˇz naplno vyuˇz´ıvaj´ı vˇsech v´ ypoˇcetn´ıch prostˇredk˚ u server˚ u fyzick´ych na kter´ ych bˇeˇz´ı. Pravdˇepodobnost ˇze tento fyzick´ y server by hostoval nˇejak´ y dalˇs´ı domU je tedy naprosto minim´aln´ı. Souˇcasnˇe je minim´aln´ı pravdˇepodobnost komplikac´ı pˇri pˇresunu dan´e instance OS na nov´ y (v´ ykonˇejˇs´ı) hardware. Z povahy pouˇzit´eho server-housingu jde totiˇz pouze o sekvenci u ´kon˚ u: vypnut´ı serveru, vynd´an´ı pevn´ ych disk˚ u, namontov´an´ı pevn´ ych disk˚ u do nov´eho serveru, zapojen´ı nov´eho serveru. D´ale je pravdˇepodobnost nutnosti migrace dan´e instance OS k jin´emu poskytovateli server-housingu velmi mal´a. A to z d˚ uvodu nutnosti udrˇzen´ı minim´aln´ı odezvy mezi jednotliv´ ymi servery. Odezva na m´ıstn´ı 100Mbit lince je obvykle okolo 0.5ms, odezva na 1Gbit lince pak b´ yv´a 0.1ms a doba odezvy mezi jednotliv´ ymi server-housingov´ ymi spoleˇcnostmi nab´ yv´a aˇz 30ms. Takov´eto zpoˇzedˇen´ı je pro hladk´ y bˇeh aplikace naprosto nepˇr´ıpustn´e a je tedy nutn´e hostovat vˇsechny servery pˇr´ımo zodpovˇedn´e za bˇeh produkce udrˇzet co nejbl´ıˇze“ u sebe. ”
1.5
Load balancing
V poˇc´atku v´ yvoje vˇetˇsiny webov´ ych projekt˚ u je pravdˇepodobn´e ˇze se aplikace vejde na jeden server. K´ody aplikace, datab´aze, HTTP server, i uˇzivatelsk´a data. Ve chv´ıli kdy aplikace pˇreroste v´ ykon hardwaru serveru obvykle se zakoup´ı server vˇetˇs´ı (v´ ykonnˇejˇs´ı). Pokud aplikace pˇreroste i tento server, zakoup´ı se jeˇstˇe v´ ykonnˇejˇs´ı. A tak d´ale. Toto koleˇcko bohuˇzel nelze opakovat donekoneˇcna. V´ ykon jednoho serveru je shora omezen´ y a v jednu chv´ıli se dostaneme do bodu kdy jiˇz dostupn´e Hardware (HW) technologie nestaˇc´ı. Tento typ ˇsk´alov´an´ı je obecnˇe zn´am´ y jako ˇsk´alov´an´ı do v´ yˇsky, nebo-li ”scale up”. Proto se obvykle pˇristupuje k ˇsk´alov´an´ı do ˇs´ıˇrky nebo-li ”scale out”. Pˇri tomto typu ˇsk´alov´an´ı jsou pˇrid´av´any do syst´emu dalˇs´ı servery a z´atˇeˇz je rovnomˇernˇe rozdistribuov´ana mezi tyto servery. V´ yhodou tohoto ˇreˇsen´ı je ˇze m´a obecnˇe daleko vˇetˇs´ı ˇsk´alovatelnost7 . Nav´ıc nav´ yˇsen´ı v´ ykonu touto metodou v zabˇehnut´em syst´emu nevyˇzaduje ˇz´adnou, nebo pouze minim´aln´ı odst´avku. Stav infrastruktury jenˇz byl pˇred zapoˇcet´ım prac´ı na tomto projektu lze vidˇet na obr´azku A.2. Jedn´a se o postupnou pˇrirozenou evoluci kdy zvˇetˇsuj´ıc´ı se sluˇzby jsou postupnˇe odsouv´any na vlastn´ı servery (process01, mail01 ). Tento krok je logick´ y a velmi odlehˇcil jak pˇret´ıˇzen´ ym v´ ypoˇcetn´ım server˚ um, tak administr´ator˚ um jenˇz mohou tyto ’ sluˇzby obsluhovat zvl´aˇst . HTTP nebo HTTPS poˇzadavek do infrastruktury firmy vch´az´ı pˇres hraniˇcn´ı stroj xen02. Jelikoˇz internet nen´ı ani zdaleka poklidn´e m´ısto s uˇzivateli kteˇr´ı by mˇeli dobr´e u ´mysly je nutn´e pˇredsunout pˇred jak´ekoliv zpracov´an´ı dat z vnˇejˇsku infrastruktury firewall. xen02 pak d´ale pˇred´a poˇzadavek na lb01, kter´ y slouˇz´ı k rozdistribuov´an´ı z´atˇeˇze rovnomˇernˇe mezi v´ ypoˇcetn´ı servery (load balancing). Za povˇsimnut´ı stoj´ı fakt ˇze d´ale 7
Schopnost dan´e technologie pˇr´ır˚ ustkov´ ym zp˚ usobem zvyˇsovat sledovan´e parametry v pˇr´ıpadˇe, ˇze nastane takov´ a potˇreba.
10
jiˇz putuje pouze HTTP poˇzadavek. Krom v´ yhody znaˇcnˇe zjednoduˇsen´e konfigurace je v tomto ˇreˇsen´ı v´ yhoda spr´avn´eho rozm´ıstˇen´ı z´atˇeˇze. lb01 pouze pˇreb´ır´a HTTPS poˇzadavky, rozbal´ı je, urˇc´ı c´ılov´ y v´ ypoˇcetn´ı server a poˇsle d´al jako HTTP poˇzadavek. C´ılov´ y v´ ypoˇcetn´ı server se tak nemus´ı starat o odstraˇ nov´an´ı SSL/TLS vrstvy. Dalˇs´ı v´ yhodou tohoto ˇreˇsen´ı je failover, kter´ y pˇrin´aˇs´ı existence v´ıce v´ ypoˇcetn´ıch server˚ u. Pokud je napˇr´ıklad web02 vyˇrazen z provozu, pak jeho pr´aci automaticky pˇrevezme web03. V´ ypoˇcetn´ı servery d´ale poˇzaduj´ı data od datab´azov´ ych server˚ u. Jelikoˇz velikost jedn´e datab´aze zat´ım nepˇres´ahla velikost jednoho datab´azov´eho stroje, nebylo zat´ım zapotˇreb´ı load balancing8 na u ´rovni datab´az´ı ˇreˇsit. Webov´ y server se rozhodne pro spr´avnou datab´azi na z´akladˇe konfigurace. Tyto konfigurace se nach´az´ı na sd´ılen´em diskov´em prostoru jenˇz je mountov´an pomoc´ı protokolu NFS. Tento fakt zachycuje obr´azek A.3. Z´akaznick´e konfigurace samozˇrejmˇe nen´ı nezbytnˇe nutn´e distribuovat pomoc´ı sd´ılen´eho filesyst´emu, ale toto ˇreˇsen´ı znaˇcnˇe zjednoduˇs´ı jejich spr´avu kdy zmˇenou na jednom m´ıstˇe dojde k okamˇzit´e zmˇenˇe na vˇsech m´ıstech.
1.5.1
Z´ avˇ er
Schopnost aplikace ˇsk´alov´an´ı do ˇs´ıˇrky je pro tento projekt velmi d˚ uleˇzit´a a z obecn´eho pohledu velmi v´ yhodn´a. D´av´a n´am relativnˇe jednoduchou cestu zvyˇsov´an´ı v´ ykonu. Nelze ale oˇcek´avat line´arn´ı n´ar˚ ust v´ ykonu spoleˇcnˇe s poˇctem zapojen´ ych v´ ypoˇcetn´ıch server˚ u. Brzy se totiˇz objev´ı dalˇs´ı u ´zk´a hrdla v podobˇe propustnosti s´ıtˇe, schopnost´ı datab´az´ı ˇci sd´ılen´eho diskov´eho prostoru. Probl´emy na kter´e jsme narazili pˇri rozˇsiˇrov´an´ı infrastruktury budou rozebr´any d´ale.
1.6
Failover V IT se pod pojmem failover rozum´ı schopnost syst´emu automaticky pˇrepnout na redundantn´ı server, syst´em ˇci poˇc´ıtaˇcovou s´ıt’ pˇri poruˇse nebo abnorm´aln´ım vypnut´ı dˇr´ıve bˇeˇz´ıc´ı aktivn´ı aplikace, serveru, syst´emu ˇci s´ıtˇe. Failover nast´av´a bez lidsk´eho z´asahu a obvykle bez varov´an´ı.[9]
Nad syst´emem jenˇz by jako celek beze zbytku splˇ noval v´ yˇse uvedenou definici by jistˇe zaj´asal kaˇzd´ y syst´emov´ y administr´ator. Bohuˇzel vybudov´an´ı takov´eto infrastruktury stoj´ı ´ velk´e mnoˇzstv´ı ˇcasu a u ´sil´ı. Uprava jiˇz existuj´ıc´ıho produkˇcn´ıho syst´emu, jenˇz nebyl takto od zaˇca´tku budovan´ y, je pak jeˇstˇe mnohem n´aroˇcnˇejˇs´ı. Je proto velmi dobr´e si na zaˇca´tku budov´an´ı rozdˇelit produkci na ˇca´sti jenˇz mohou potenci´alnˇe selhat a u tˇechto pak urˇcit zda je nutn´ y failover ˇci ne. Pˇr´ıkladem kdy je dobr´e m´ıt failover je v´ ypoˇcetn´ı server webov´ ych str´anek. Nedostupnost webov´ ych str´anek je pro firmu, vydˇel´avaj´ıc´ı na webov´e platformˇe velk´ y probl´em. Naopak celkem zbyteˇcn´e je z´alohovat server prov´adˇej´ıc´ı zpracov´an´ı d´avkov´ ych operac´ı. Pozdrˇzen´ı odesl´an´ı hromadn´ ych e-mail˚ u, ˇci vytvoˇren´ı n´ahled˚ u u vide´ı, je velmi dobˇre tolerovateln´e. Nyn´ı by bylo dobr´e si probrat nˇekolik pˇr´ıpad˚ u ve kter´ ych se bˇeˇznˇe vyuˇz´ıv´a failover.
1.6.1
Failover pevn´ eho disku
Pokud selˇze syst´emov´ y disk serveru, m˚ uˇze se doba obnovy hav´arie pohybovat kdekoliv od nˇekolika m´alo minut aˇz po nˇekolik hodin. V nˇekter´ ych pˇr´ıpadech dlouh´a obnova nevad´ı, ale ˇcas ˇclovˇeka na tento u ´kon vynaloˇzen´ y je zbyteˇcnˇe ztracen´ y. Nejbˇeˇznˇejˇs´ım ˇreˇsen´ım failoveru 8
Spr´ avnˇejˇs´ı pojem by zde byl clustering“. ”
11
Obr´azek 1.4: RAID 1
pevn´eho disku je Redundant Array of Independent Disks (RAID). RAID zjednoduˇsenˇe ˇreˇceno vezme data jenˇz by mˇela b´ yt zaps´ana na disk a urˇcit´ ym zp˚ usobem je zap´ıˇse na v´ıce disk˚ u. Podle zp˚ usobu z´apisu je pak RAID dˇelen na podkategorie. N´as bude zaj´ımat RAID 1 jenˇz je dle definice z wikipedie[12]: Nejjednoduˇsˇs´ı ale pomˇernˇe efektivn´ı ochrana dat. Prov´ad´ı se zrcadlen´ı (mirroring) obsahu disk˚ u. Obsah se souˇcasnˇe zaznamen´av´a na dva disky. V pˇr´ıpadˇe v´ ypadku jednoho disku se pracuje s kopi´ı, kter´a je ihned k dispozici. Uk´azku RAID 1 lze vidˇet na obr´azku 1.4. RAID 1 n´as zaj´ım´a pˇredevˇs´ım proto, ˇze zajiˇst’uje pro n´aˇs pˇr´ıpad potˇrebn´ y failover. Souˇcasnˇe je d´ıky automatick´e dod´avce server˚ u se dvˇema totoˇzn´ ymi disky u n´ami pouˇzit´eho server-housingu RAID 1 nejjednoduˇsˇs´ım a finanˇcnˇe nejm´enˇe n´aroˇcn´ ym ˇreˇsen´ım. Ohlednˇe souboje softwarov´ y RAID vs hardwarov´ y RAID toho bylo jiˇz naps´ano mnoho. Kdyˇz pomineme ˇcl´anky spoleˇcnost´ı vyv´ıjej´ıc´ı moduly hardwarov´eho RAIDu a ˇcl´anky v´ yvoj´aˇr˚ u komerˇcn´ıch linuxov´ ych distribuc´ı, jde obvykle o osobn´ı zkuˇsenost t´ ymu kter´ y danou implementaci pˇripravuje. A na z´akladˇe t´eto zkuˇsenosti je pak vyd´ano rozhodnut´ı. Pomˇernˇe pˇekn´ y nestrann´ y ˇcl´anek k t´eto t´ematice byl v roce 2008 vyd´an na serveru http://linux.com [5]. Osobn´ı zkuˇsenosti autora by pak bylo moˇzno shrnout takto: • HW RAID vyˇzaduje rozs´ahl´e studov´an´ı dokumentace a ovl´ad´an´ı obsluˇzn´eho softwaru. • Ani relativnˇe drah´ y modul HW RAIDu od renomovan´e firmy nemus´ı znamenat jistotu bezpeˇc´ı dat. • Komplexita pˇridan´a SW RAIDem je minim´aln´ı. • Jednotnost pˇr´ıstupu k diagnostice SW RAIDu a jednotnost jeho administrace velmi zjednoduˇsuje u ´drˇzbu vˇetˇs´ıho mnoˇzstv´ı stroj˚ u. • Oproti server˚ um bez RAIDu nebylo pozorov´ano ˇz´adn´e kritick´e zpomalen´ı na serverech s RAIDem. D´ıky tˇemto vyjmenovan´ ym a nˇekolika dalˇs´ım zkuˇsenostem jsme se rozhodli pro nasazen´ı SW RAIDu na vˇsech produkˇcn´ıch serverech. Jin´a skupina by d´ıky jin´ ym argument˚ um mohla doj´ıt k zcela odliˇsn´emu z´avˇeru.
12
Velmi zaj´ımavou studii na t´ema ˇzivotnosti rotaˇcn´ıch mechanick´ ych pevn´ ych disk˚ u vydala v roce 2007 spoleˇcnost Google pod n´azvem Failure Trends in a Large Disk Drive Population[2]. V t´eto studii stoj´ı za povˇsimnut´ı dva body: 1. Disk selˇze s relativnˇe vysokou pravdˇepodobnost´ı v prvn´ıch tˇrech mˇes´ıc´ıch fungov´an´ı. Pokud neselˇze v tomto ˇcase je velk´a pravdˇepodobnost ˇze bude fungovat aˇz do doby v´ ymˇeny za novˇejˇs´ı model, ˇci kompletn´ı v´ ymˇeny serveru. 2. M´ırnˇe zv´ yˇsen´a provozn´ı teplota pevn´emu disku t´emˇeˇr nevad´ı. Ba naopak n´ızk´e provozn´ı teploty pˇrinesly kratˇs´ı ˇzivotnost mechanick´ ych pevn´ ych disk˚ u.
1.6.2
Failover v´ ypoˇ cetn´ıho serveru
Jak jiˇz bylo probr´ano v kapitole 1.2 a 1.5 je pro naˇse v´ ypoˇcetn´ı prostˇred´ı velmi d˚ uleˇzit´a schopnost nepˇreruˇsen´eho bˇehu s v´ ypadkem jak´ehokoliv v´ ypoˇcetn´ıho stroje. V´ ypadky server˚ u se st´avaj´ı a nelze jim nikdy stoprocentnˇe zabr´anit. V´ ypadek m˚ uˇze nastat d´ıky poruˇse 9 ’ hardwaru, selh´an´ı disku , v´ ypadku na s´ıt ov´em segmentu, selh´an´ı ze strany aplikac´ı ˇci operaˇcn´ıho syst´emu, nebo jen o pouhou“ chybu v konfiguraci serveru. ” V pˇr´ıpadˇe ˇze bychom byli odk´az´ani pouze na jeden v´ ypoˇcetn´ı stroj a doˇslo by k jeho selh´an´ı, pak se aplikace jako celek jevila jako nedostupn´a. Tomuto nepˇr´ıjemn´emu jevu bylo zabr´anˇeno pˇredsunut´ım load balanceru pˇred vˇsechny v´ ypoˇcetn´ı servery. Tuto situaci zn´azorˇ nuje obr´azek 1.5. Vlastnosti tohoto ˇreˇsen´ı jsou n´asleduj´ıc´ı: • V pˇr´ıpadˇe v´ ypadku kter´ehokoliv v´ ypoˇcetn´ıho serveru, pˇrevezme automaticky jeho pr´aci jin´ y. • Z´atˇeˇz je rovnomˇernˇe rozdˇelena mezi v´ ypoˇcetn´ı servery a nedoch´az´ı tak k jevu pˇret´ıˇzen´ı jednoho, zat´ımco ostatn´ı nemaj´ı co na pr´aci. • Nam´ısto nˇekolika m´ıst jejichˇz v´ ypadkem by byla aplikace nedostupn´a vznikl Single Point Of Failure (SPOF) v podobˇe load balanceru. Tato situace samozˇrejmˇe nen´ı ide´aln´ı, ale je rozhodnˇe l´epe kontrolovateln´a. • Odst´avky v´ ypoˇcetn´ıch server˚ u nejsou v tomto prostˇred´ı probl´em. Toto je velmi d˚ uleˇzit´ y fakt z d˚ uvodu aktualizace j´adra, pov´ yˇsen´ı distribuce, ˇci v´ ymˇeny disku. Administr´atoˇri budou m´ıt nav´ıc volnˇejˇs´ı ruce k experimentov´an´ı pro r˚ uzn´e nastaven´ı syst´emu, softwaru, ˇci aplikace samotn´e. Nemus´ı se totiˇz b´at ˇze by chybn´ ym z´asahem do syst´emu ohrozili produkci.
1.6.3
Failover uˇ zivatelsk´ ych dat
Nainstalovat aplikaci na kaˇzd´ y v´ ypoˇcetn´ı server je relativnˇe snadn´a z´aleˇzitost. Instalace aplikace lok´alnˇe na kaˇzd´ y server je v´ yhodn´a hned z nˇekolika d˚ uvod˚ u. Je zrychleno naˇc´ıt´an´ı aplikace do pamˇeti dan´eho v´ ypoˇcetn´ıho serveru. Provoz tohoto serveru nen´ı pak nijak z´avisl´ y na jin´ ych serverech. A v neposledn´ı ˇradˇe tak vznik´a moˇznost doˇcasn´ ych experi10 ment´aln´ıch u ´prav pˇr´ımo na produkci. 9
Teoreticky jde jen o speci´ aln´ı pˇr´ıpad poruchy hardwaru“, ale v IT jde o tak specifick´ y jev, ˇze jsem ” ho radˇeji zd˚ uraznil. 10 Posledn´ı jmenovan´ y bod nen´ı sice tak ˇcast´ y a ani nen´ı pˇr´ıliˇs popul´arn´ı, ale pro nalezen´ı chyb simulovateln´ ych pouze na produkˇcn´ıch serverech b´ yv´a obˇcas jedin´ ym ˇreˇsen´ım.
13
Obr´azek 1.5: Load balancer
Pokud jde ale o distribuci uˇzivatelsk´ ych dat, nen´ı situace tak jednoduch´a. Uˇzivatelsk´ ymi daty jsou myˇsleny dokumenty, obr´azky, ˇsablony, kask´adov´e styly a podobn´e jenˇz do syst´emu nahraj´ı sami uˇzivatel´e, ˇci z´akazn´ıci jenˇz si aplikaci objednali. Nejv´ yhodnˇejˇs´ı by samozˇrejmˇe bylo m´ıt data uloˇzena na dan´em v´ ypoˇcetn´ım serveru jenˇz se o dan´eho z´akazn´ıka star´a. Toto bohuˇzel z principu popsan´em v kapitole 1.6.2 nen´ı moˇzn´e. Kter´ehokoliv z´akazn´ıka m˚ uˇze obsluhovat kter´ ykoliv v´ ypoˇcetn´ı server, a proto nen´ı moˇzn´e data ukl´adat lok´alnˇe. V p˚ uvodn´ım produkˇcn´ım ˇreˇsen´ı byla data distribuov´ana pˇres protokol NFS. Network File System (NFS) je internetov´ y protokol pro vzd´alen´ y pˇr´ıstup k ’ soubor˚ um pˇres poˇc´ıtaˇcovou s´ıt . Protokol byl p˚ uvodnˇe vyvinut spoleˇcnost´ı Sun Microsystems v roce 1984, v souˇcasn´e dobˇe m´a jeho dalˇs´ı v´ yvoj na starosti organizace Internet Engineering Task Force (IETF). Funguje pˇredevˇs´ım nad transportn´ım protokolem UDP, avˇsak od verze 3 je moˇzn´e ho provozovat tak´e nad protokolem TCP. V praxi si m˚ uˇzete prostˇrednictv´ım NFS klienta pˇripojit disk ze vzd´alen´eho serveru a pracovat s n´ım jako s lok´aln´ım. V prostˇred´ı Linuxu se jedn´a asi o nejpouˇz´ıvanˇejˇs´ı protokol pro tyto u ´ˇcely.[11] V p˚ uvodn´ım ˇreˇsen´ı byl jako server pro uˇzivatelsk´a data pouˇzit file01 jak je vidˇet na obr´azku A.3. Pouˇzit´ı NFS pro file01 ˇreˇs´ı pouze ot´azku distribuce, ale nijak neˇreˇs´ı probl´em failoveru uˇzivatelsk´ ych dat. Nav´ıc je dobr´e, si uvˇedomit ˇze d´ıky faktu, ˇze jsme si o p´ar ˇra´dk˚ u v´ yˇse dok´azali nutnost“ pouˇzit´ı load balanceru, jsme fakticky vytvoˇrili dalˇs´ı SPOF ” v podobˇe file01. Pokud nep˚ ujde file01, pak budou ovlivnˇeni vˇsichni z´akazn´ıci. Pokud bychom mˇeli ˇreˇsen´ı bez load balanceru (zmiˇ novan´e v´ yˇse), pak bychom se do takov´eto situace v˚ ubec nedostali. Failover uˇzivatelsk´ ych dat je tedy jeden z bod˚ u, jenˇz je souˇc´ast´ı praktick´e ˇc´asti t´eto pr´ace a bude tedy do detail˚ u rozebr´ano d´ale.
1.6.4
Failover datab´ az´ı
Firma pouˇz´ıv´a pro ukl´ad´an´ı dat prim´arnˇe datab´azov´e servery ”MySQL”. Jedn´a se pˇredevˇs´ım o historick´e rozhodnut´ı, podpoˇren´e pˇredchoz´ımi zkuˇsenostmi. D´ıky vysok´e stabilitˇe datab´az´ı ”MySQL” firma nemusela failover datab´az´ı ˇreˇsit. Na obr´azku 1.2 je naznaˇceno rozm´ıstˇen´ı datab´azov´ ych server˚ u. Nejedn´a se o clusterovan´e ˇreˇsen´ı. Jde tedy pouze o situaci n z´akazn´ık˚ u na m stroj´ıch, kde n > m. Jak uˇz bylo v´ yˇse ˇreˇseno, ˇz´adn´ y z´akazn´ık svoj´ı datab´az´ı zat´ım nepˇres´ahl v´ ykon jednoho datab´azov´eho serveru. Nen´ı tedy nutn´e ˇreˇsit clustering, ale pouze failover. Ten bude rozebr´an v dalˇs´ıch kapitol´ach. 14
1.6.5
Failover server˚ u
K selh´an´ı hardwaru doch´az´ı v IT naprosto bˇeˇznˇe a nemus´ı se jednat jen o pevn´e disky. Zaˇzili jsme vyhoˇren´ı“ s´ıt’ov´e karty, procesoru, z´akladn´ı desky, ale i routeru a RAID ˇradiˇce. ” Jelikoˇz pˇredmˇetem podnik´an´ı t´eto firmy nen´ı spr´ava a u ´drˇzba hardwaru a s´ıt’ov´e infrastruktury, byl uˇcinˇen logick´ y krok pˇrenech´an´ı spr´avy HW infrastruktury jin´e firmˇe. Jedn´a se o obyˇcejn´ y server-housing u kter´eho jsou pronajaty jejich vlastn´ı servery. Toto ˇreˇsen´ı m´a mnoho v´ yhod: • Firma nemus´ı vyd´avat vysok´e ˇca´stky pˇri poˇr´ızen´ı nov´eho serveru. • Firma si pronaj´ım´a server jako celek, takˇze provozovatel server housingu je odpovˇedn´ y za jeho bezvadnost. Tud´ıˇz odpadnou starosti a n´aklady na v´ ymˇenu komponent server˚ u. • N´aroky na v´ ykon server˚ u se postupnˇe zvyˇsuj´ı a dnes zakoupen´ y v´ ykonn´ y server je za rok povaˇzov´an sv´ ym v´ ykonem za pr˚ umˇern´ y. Serverhousingov´a firma samozˇrejmˇe ˇcasem zakoup´ı v´ ykonnˇejˇs´ı servery jeˇz za vynaloˇzen´ı minim´aln´ıch n´aklad˚ u nahrad´ı ty st´avaj´ıc´ı. • Vzhledem k obvykle nemal´e dojezdov´e vzd´alenosti k serverovnˇe je v´ yhodn´ y fakt ˇze veˇsker´e servisn´ı z´asahy budou ˇreˇsit technici tˇret´ı strany.
1.6.6
Z´ avˇ er
Nelze ˇr´ıci, ˇze by bylo moˇzn´e nal´ezt ˇreˇsen´ı pro failover obecnˇe. Dokonce nelze ani ˇr´ıci jak obecnˇe vyˇreˇsit failover t´e ˇci on´e sluˇzby. Vˇzdy z´aleˇz´ı na konkr´etn´ım produktu, pouˇzit´em hardwaru, ˇci vyuˇz´ıvan´ ych technologi´ıch. Nˇekde se prax´ı uk´aˇze ˇze okrajov´a sluˇzba m˚ uˇze znefunkˇcnit syst´em jako celek, a proto mus´ı b´ yt z´alohovan´a. Jinde naopak m˚ uˇze doj´ıt k situaci, ˇze v´ ypadek sluˇzby jenˇz se zd´a kl´ıˇcovou pro bˇeh cel´eho syst´emu, vlastnˇe v˚ ubec 11 nevad´ı a nijak neohroz´ı produkci . V textu v´ yˇse jsou tedy rozebr´any hlavn´ı prvky serverov´eho prostˇred´ı, jenˇz pro bezv´ ypadkov´e fungov´an´ı aplikace firmy potˇrebuj´ı failover. V textu d´ale pak bude rozebr´ano, jak jsme dan´a ˇreˇsen´ı aplikovali v praxi.
1.7
Zabezpeˇ cen´ı
U rychle se vyv´ıjej´ıc´ıch projekt˚ u autoˇri ˇcasto v˚ ubec, nebo jen velmi povrchnˇe dbaj´ı na zabezpeˇcen´ı. Je to chyba a obvykle se autor˚ um dˇr´ıve ˇci pozdˇeji vymst´ı. Zabezpeˇcen´ı opˇet m˚ uˇze prob´ıhat na nˇekolika u ´rovn´ıch. Velmi dobr´ y postup pro definov´an´ı potˇrebn´ ych prvk˚ u zabezpeˇcen´ı je metoda ot´azek. Lid´e jenˇz vytv´aˇr´ı prostˇred´ı pro bˇeh projektu, se navz´ajem ptaj´ı na jak´ekoliv ot´azky jenˇz je k zabezpeˇcen´ı napadnou. Sep´ıˇs´ı je na pap´ır. Seˇrad´ı do skupin podle t´ematicky podobn´ ych a pokus´ı se navrhnout nejl´epe jedno opatˇren´ı jenˇz pokryje celou skupinu. Takov´ ymi ot´azkami m˚ uˇze b´ yt napˇr´ıklad: • Jak zajist´ıme ˇze se do datab´aze nebude moci nabourat neopr´avnˇen´ y uˇzivatel pˇres ”brute force” u ´tok? • Jak zajist´ıme ˇze uˇzivatel jenˇz zciz´ı heslo k datab´azi nebude moci tohoto hesla vyuˇz´ıt k stahov´an´ı citliv´ ych dat? 11
Toto tvrzen´ı se zd´ a celkem paradoxn´ı, ale na pˇr´ıkladu d´ale bude vysvˇetleno.
15
• Jak doc´ıl´ıme toho, aby u ´toˇcn´ık jenˇz z´ıskal pˇr´ıstup k sluˇzb´am serveru nemohl pole sv´eho vlivu rozˇsiˇrovat? • Jak zjist´ıme ˇze se nˇekdo pokouˇs´ı sluˇzby serveru kompromitovat? • Jak odhal´ıme bezpeˇcnostn´ı chyby v naˇs´ı aplikaci? • Jak odhal´ıme bezpeˇcnostn´ı chyby v aplikac´ıch pouˇz´ıvan´ ych na serverech? • Jak zabr´an´ıme zneuˇzit´ı bezpeˇcnostn´ıch chyb bˇeˇznˇe pouˇz´ıvan´ ych Open Source Software (OSS) aplikac´ı? Toto je samozˇrejmˇe pouze ilustraˇcn´ı seznam ot´azek. Ve skuteˇcnosti b´ yv´a daleko delˇs´ı a vytv´aˇren´ y za pochodu“. N´ami nalezen´e skupiny ot´azek stran zabezpeˇcen´ı a jejich ˇreˇsen´ı ” budou probr´any v dalˇs´ıch kapitol´ach. Samostatnou kapitolou jenˇz u ´zce souvis´ı se zabezpeˇcen´ım je pak monitoring. Mnoho lid´ı tyto dva pojmy velmi snadno spoj´ı v jedin´ y bod. Dle m´eho n´azoru jde ale o dvˇe velmi odliˇsn´e discipl´ıny. Osobnˇe bych tyto prvky definoval jako: Zabezpeˇ cen´ı Slouˇz´ı k ochranˇe syst´emu, aplikace ˇci dat pˇred zn´am´ymi vlivy ˇci u ´toky. Slouˇz´ı jako prevence pˇred n´ahodn´ ymi ˇci c´ılen´ ymi pokusy o infiltrov´an´ı infrastruktury produkce. Monitoring Slouˇz´ı k sledov´an´ı hodnot syst´emu a jeho log˚ u pro odhalen´ı zn´am´ ych i nezn´am´ych nebezpeˇc´ı. Monitoring zn´am´ ych probl´em˚ u lze obvykle definovat jednoduchou sadou pravidel. Monitoring nezn´am´ych probl´em˚ u je pak obvykle zaloˇzen na sledov´an´ı a anal´ yze odchylek v standardn´ıch hodnot´ach syst´emu. Parsov´an´ı a anal´ yze syst´emov´ ych a aplikaˇcn´ıch log˚ u. Jednotliv´e prvky a ˇreˇsen´ı monitorov´an´ı pouˇzit´e pˇri ˇreˇsen´ı t´eto pr´ace budou probr´any v dalˇs´ıch kapitol´ach.
16
Kapitola 2 Vylepˇ sen´ı produkce Hlavn´ı motivac´ı pro vznik t´eto pr´ace, bylo rozˇsiˇrov´an´ı aplikace, jenˇz mˇelo za n´asledek rozˇsiˇrov´an´ı serverov´e infrastruktury za u ´roveˇ n, jeˇz by bylo moˇzn´e zvl´adnout dˇelat jen tak na kolenˇe“. Tato situace si vyˇza´dala vznik specializovan´e pracovn´ı pozice takzvan´eho ” konfiguraˇcn´ıho manaˇzera, jenˇz m´a za u ´kol dohl´ıˇzet na veˇsker´e prvky produkce od instalace aplikace, pˇres softwarovou v´ ybavu aˇz po smˇerov´an´ı paket˚ u na s´ıti. Ve chv´ıli, kdy konfiguraˇcn´ı manaˇzer nastoup´ı do sv´e pr´ace jako prvn´ı by se mˇel sezn´amit s kaˇzd´ ym detailem produkce jenˇz by ho mohl pˇri pr´aci jen trochu zaj´ımat. Nastaven´ı routovac´ıch tabulek, konfigurace firewallu, pouˇzit´e distribuce OS, verze distribuc´ı OS, zp˚ usob instalace aplikace, software nainstalovan´ y na jednotliv´ ych serverech, software instalovan´ y mimo bal´ıˇckovac´ı syst´em, nastaven´ı virtu´aln´ıch stroj˚ u, speci´aln´ı z´aznamy v /etc/hosts, nastaven´ı Domain Name Server (DNS) server˚ u, konfigurace a u ´ˇcel proxy server˚ u, zp˚ usob spr´avy konfigurac´ı, proces aktualizace server˚ u, proces vzd´alen´e administrace server˚ u, nastaven´ı monitorov´an´ı prostˇred´ı, rozloˇzen´ı know-how o produkci mezi zamˇestnanci firmy, spolehlivost jednotliv´ ych sluˇzeb a server˚ u, zn´am´e a nezn´am´e probl´emy produkce, kritick´e servery a sluˇzby pro bˇeh produkce, krizov´e kontakty. . . V´ yˇcet by mohl pokraˇcovat jeˇstˇe mnohem d´ale. Pro jinou firmu by byl tento seznam odliˇsn´ y, ale velmi pravdˇepodobnˇe by nˇekter´e body sd´ılel se seznamem uveden´ ym v´ yˇse. Je d˚ uleˇzit´e si tedy uvˇedomit ˇze objem znalost´ı potˇrebn´ y pro rozumn´e zapracov´an´ı do pozice konfiguraˇcn´ıho manaˇzera je obrovsk´ y a odv´ıj´ı se od potˇreb dan´e firmy. Abychom pronikli do prostˇred´ı n´ami zkouman´e firmy a do koresponduj´ıc´ıch potˇreb po pozici konfiguraˇcn´ıho manaˇzera, uvedeme si nˇekolik zaj´ımav´ ych probl´em˚ u na neˇz jsem pˇri ˇ sen´ı zde uveden´a se za dan´e situace s dan´ pr´aci narazil a na jejich ˇreˇsen´ı. Reˇ ymi prostˇredky jevila vˇzdy jako nejvhodnˇejˇs´ı. Pokus´ım se vˇzdy i vysvˇetlit jak´a byla motivace pr´avˇe toho ˇci onoho ˇreˇsen´ı.
2.1 2.1.1
N´ ahodn´ e s´ıt’ov´ e v´ ypadky Probl´ em
Firma pouˇz´ıv´a jako monitorovac´ı syst´em ”nagios”, kter´ y jednoho dne zaˇcal zobrazovat rozporupln´a hl´aˇsen´ı ohlednˇe stavu produkce. Obˇcas nahl´asil nedostupnost jednoho konkr´etn´ıho serveru. Pˇri manu´aln´ı kontrole doch´azelo k r˚ uznorod´ ym v´ ysledk˚ um. V jednu chv´ıli se dan´ y server jevil jako dostupn´ y, pˇri dalˇs´ı kontrole o p´ar minut pozdˇeji jako nedostupn´ y, obˇcas vznikaly stavy kdy server sice odpov´ıdal na pokusy o spojen´ı, ale vykazoval velk´ y packet loss. Produkce bˇeˇzela v poˇra´dku d´al bez viditeln´ ych probl´em˚ u.
17
2.1.2
Prvotn´ı pˇ r´ıˇ cina
Jelikoˇz byla produkce v dobˇe vzniku tohoto probl´emu ˇreˇsena ad hoc, mˇeli zamˇestnanci staraj´ıc´ı se o instalaci nov´ ych z´akazn´ık˚ u nauˇcen mechanick´ y postup pro instalaci a zprovoznˇen´ı Secure Sockets Layer (SSL) certifik´at˚ u. Kaˇzd´ y SSL certifik´at potˇrebuje vlastn´ı Internet Protocol (IP) adresu1 . Tento probl´em je velmi pˇeknˇe vysvˇetlen v manu´alov´ ych str´ank´ach Apache[3]: D˚ uvod je velmi technick´ y, a ponˇekud pˇripom´ın´a zn´am´ y probl´em slepice a ve” jce“. Protocol SSL vrstvy je pod a obaluje HTTP protokol. Kdyˇz je zah´ajeno ´kol vyjednat parameSSL spojen´ı (HTTPS) modul Apache/mod ssl m´a za u try SSL komunikace s klientem. Pro toto mod ssl mus´ı konzultovat konfiguraci virtu´aln´ıho serveru (napˇr´ıklad mus´ı vyhledat ˇsifrovac´ı sadu, certifik´at serveru, atp. . . ). Ale k tomu, aby mohl nal´ezt spr´avn´ y virtu´aln´ı server Apache mus´ı zn´at poloˇzku Host hlaviˇcky HTTP protokolu. K tomu aby toto vykonal mus´ı pˇreˇc´ıst hlaviˇcku HTTP poˇzadavku. Toto nelze prov´est pˇred t´ım, neˇz je dokonˇcena f´aze takzvan´eho SSL handshake, ale tato informace je potˇreba k dokonˇcen´ı SSL handshake. Bingo! Na vstupu do naˇs´ı infrastruktury (xen02 2 ) je tedy nastaveno velk´e mnoˇzstv´ı IP adres. Tyto IP adresy se pˇrekl´adaj´ı na IP vnitˇrn´ı s´ıtˇe jak je vidˇet na obr´azku A.43 . Z historick´ ych d˚ uvod˚ u jsou tyto IP adresy ze stejn´eho rozsahu jako pouˇz´ıvaj´ı produkˇcn´ı servery pro komunikaci mezi sebou. Bylo tedy jen ot´azkou n´ahody, neˇz se t´ımto zp˚ usobem pˇriˇrad´ı IP adresa jiˇz bˇeˇz´ıc´ıho serveru nˇekter´emu z novˇe pˇr´ıchoz´ıch z´akazn´ık˚ u. Probl´em takov´eto situace je ten, ˇze pˇri spr´avn´e souhˇre n´ahod se i pˇri opakovan´e kontrole m˚ uˇze server jevit jako dostupn´ y. Administr´ator syst´emu m´a tak myln´ y pocit, ˇze v nepoˇra´dku je monitorovac´ı software (nagios). Toto je vlastnˇe velmi pˇekn´ y pˇr´ıklad soubˇehu. Soubˇeh je dle wikipedie [7] definovan´ y jako: Soubˇeh (anglicky race condition) je chyba v syst´emu nebo procesu, ve kter´em jsou v´ ysledky nepˇredv´ıdateln´e a z´avisl´e na poˇrad´ı nebo naˇcasov´an´ı jednotliv´ ych operac´ı. Soubˇeh m˚ uˇze nastat v elektronick´ ych syst´emech (zvl´aˇstˇe u logick´ ych ˇclen˚ u) a v poˇc´ıtaˇcov´ ych programech (zejm´ena ve v´ıce´ ulohov´ ych a v´ıceprocesorov´ ych syst´emech). V naˇsem pˇr´ıpadˇe doˇslo k soubˇehu na u ´rovni ARP protokolu. Uvaˇzujme pˇr´ıklad kdy v jedn´e pods´ıti existuj´ı dva poˇc´ıtaˇce se stejnou IP adresou. Jelikoˇz na jednom segmentu s´ıtˇe neexistuje mechanismus jenˇz by takov´emu stavu zabr´anil, m˚ uˇze se na dan´e pods´ıti vyskytovat hned nˇekolik variant ARP odpovˇed´ı proti jednomu ARP dotazu. Toto jednoduˇse ˇreˇceno povede k nepˇredv´ıdateln´ ym z´aznam˚ um v ARP tabulk´ach r˚ uzn´ ych zaˇr´ızen´ı. Pro 4 pˇr´ıklad: lb01:~ # arp -n Address 10.0.0.11
HWtype ether
HWaddress 00:14:3e:a4:86:4d
1
Flags Mask C
Iface eth0
Toto tvrzen´ı nen´ı zcela pˇresn´e. Pˇri pouˇzit´ı technologie Server Name Indication (SNI) je moˇzn´e m´ıt IP adresu jedinou. Z business d˚ uvod˚ u ale nebylo moˇzn´e v dobˇe ˇreˇsen´ı tohoto probl´emu SNI pouˇz´ıt. 2 Viz obr´ azek A.2 3 IP adresy jsou pouze ilustraˇcn´ı. 4 Pˇr´ıklad je opˇet pouze ilustraˇcn´ı.
18
watch01:~ # arp -n Address HWtype 10.0.0.11 ether
HWaddress 00:27:4b:c4:16:49
Flags Mask C
Iface eth0
V koneˇcn´em d˚ usledku se tak jeden stroj m˚ uˇze jevit z jednoho m´ısta jako dostupn´ ya z m´ısta jin´eho jako nedostupn´ y.
2.1.3
ˇ sen´ı Reˇ
Business poˇzadavkem pro tento projekt bylo nal´ezt ˇreˇsen´ı rychle i s rizikem toho, ˇze bude jen doˇcasn´e. Rozdˇelen´ı adresn´ıho prostoru klient˚ u a server˚ u tedy nepˇripadalo v u ´vahu. Takov´a akce by zabrala mnoho ˇcasu. Vytvoˇren´ı statick´e mapy IP adres pouˇz´ıvan´ ych na produkci zase nemuselo pˇrin´est ani doˇcasn´e v´ ysledky, nebot’ by lidskou chybou v takov´emto seznamu mohly vzniknout nepˇresnosti. Jedinou rozumnou moˇznost´ı se tedy jevilo vytvoˇren´ı dynamick´eho seznamu IP adres. Zamˇestnanci instaluj´ıc´ı nov´e SSL certifik´aty tak mohou v jak´ ykoliv okamˇzik zkontrolovat zda nepouˇzij´ı jiˇz zabranou IP adresu. Nav´ıc se v´ ystup tohoto projektu bude hodit pro dokumentaci produkce. V´ ystup skenov´an´ı s´ıt’ˇe mus´ı b´ yt importov´an do firemn´ıch wiki str´anek. Pro tento projekt jsme bohuˇzel nenalezli ˇz´adn´ y hotov´ y software. Museli jsme tedy naimplementovat vlastn´ı ˇreˇsen´ı. Jako programovac´ı jazyk byl zvolen Python. Pro sb´ır´an´ı dat o aktu´alnˇe pˇriˇrazen´ ych IP adres´ach byl zvolen protokol Simple Network Management Protocol (SNMP), jenˇz je na produkci jiˇz zabˇehnut a vyuˇz´ıv´a se k nˇekolika dalˇs´ım u ´ˇcel˚ um. ’ SNMP je v principu jednoduch´ y s´ıt ov´ y protokol umoˇzn ˇuj´ıc´ı sbˇer dat z router˚ u, server˚ u a jin´ ych zaˇr´ızen´ı. SNMP je dnes implementov´ano ve valn´e vˇetˇsinˇe zaˇr´ızen´ı a je k dispozic ve vˇetˇsinˇe distribuc´ı. Protokol na z´akladˇe standardizovan´ ych identifik´ator˚ u takzvan´ ych Object Identifier (OID) exportuje r˚ uzn´e hodnoty o stavu serveru. Napˇr´ıklad o: Vyuˇzit´ı CPU, voln´em m´ıstˇe na disku, teplotˇe procesoru, atp. . . Protokol SNMP je snadno rozˇsiˇriteln´ yo vlastn´ı funkce. Nemus´ı slouˇzit pouze k ˇcten´ı, ale nab´ız´ı i moˇznost ovlivˇ novat stav a bˇeh dan´eho zaˇr´ızen´ı. Tato vlastnost je ale vyuˇz´ıv´ana jen zˇr´ıdka. Ve v´ ysledku byl vytvoˇren jedno´ uˇcelov´ y script proch´azej´ıc´ı seznam zn´am´ ych server˚ u5 a na kaˇzd´ y server poˇsle dva SNMP dotazy. Jeden zjiˇst’uje seznam vˇsech ethernetov´ych rozhran´ı serveru a druh´ y k tˇemto rozhran´ım dohled´av´a pˇr´ısluˇsn´e IP adresy. Pro pohodl´ı uˇzivatel˚ u je pak jeˇstˇe proveden dotaz na reverzn´ı DNS z´aznam6 . V´ ysledek je vr´acen jako tabulka ve wiki syntaxi. Script je k nahl´ednut´ı v kapitole B.1. Vol´an je pak z cronu a pˇres cli rozhran´ı tracu je jeho v´ ystup importov´an do wiki. Uk´azka v´ ystupu je pak k nahl´ednut´ı na obr´azku 2.1.
2.2 2.2.1
D˚ uvˇ eryhodn´ y a uˇ ziteˇ cn´ y monitorovac´ı n´ astroj Probl´ em
Jak jiˇz bylo ˇreˇceno v´ yˇse, firma pouˇz´ıv´a k monitorov´an´ı server˚ u a sluˇzeb ”nagios”. Takov´ yto monitorovac´ı n´astroj je neodmyslitelnou souˇca´st´ı kaˇzd´e produkce. Nen´ı v sil´ach ˇz´adn´eho ˇclovˇeka m´ıt neust´al´ y a dokonal´ y pˇrehled o zdrav´ı kaˇzd´eho serveru a kaˇzd´e jeho sluˇzbˇe jeˇz je souˇca´st´ı produkce. Monitorovac´ı server dok´aˇze zavˇcasu upozornit na pˇr´ıpadn´e budouc´ı, ˇci pr´avˇe vznikl´e probl´emy. Z´akladn´ı pˇredpoklady kaˇzd´eho monitorovac´ıho syst´emu jsou: 5 6
Tento seznam se mˇen´ı relativnˇe zˇr´ıdka. Reverzn´ı DNS z´ aznam pˇriˇrazuje IP adrese dom´enov´e jm´eno
19
Obr´azek 2.1: IP SNMP scanner
1. Monitorovac´ı server mus´ı leˇzet mimo monitorovan´ y syst´em. Pokud by totiˇz doˇslo k v´ ypadku s´ıt’ov´e konektivity, jen tˇeˇzko by monitorovac´ı n´astroj ohl´asil probl´emy, pokud by byl na postiˇzen´e s´ıti. 2. Monitorovac´ı server nesm´ı b´ yt ovlivˇ nov´an ˇz´adn´ ymi vnˇejˇs´ımi vlivy jako je napˇr´ıklad zat´ıˇzen´ı s´ıtˇe na kter´e bˇeˇz´ı, ˇci vyt´ıˇzen´ı serveru ze kter´eho je spuˇstˇen. 3. Mus´ı sledovat vˇsechny zn´am´e kritick´e sluˇzby a servery, jenˇz mohou ovlivnit dostupnost produkce. Probl´em existuj´ıc´ıho monitorovac´ıho serveru byl ve vˇsech tˇrech v´ yˇse zm´ınˇen´ ych bodech. Fyzicky byl um´ıstˇen v kancel´aˇri firmy, jej´ıˇz servery souˇcasnˇe monitoroval. Jelikoˇz v kancel´aˇr´ıch firmy prob´ıh´a ˇcil´ y s´ıt’ov´ y provoz, bylo vyvol´av´ano relativnˇe velk´e mnoˇzstv´ı faleˇsnˇe pozitivn´ıch poplach˚ u d´ıky s´ıt’ov´ ym probl´em˚ um na stranˇe nagiosu. A v neposledn´ı ˇradˇe d´ıky delˇs´ı dobˇe od posledn´ı u ´pravy konfigurac´ı nagiosu, nesledoval tento vˇsechny potˇrebn´e sluˇzby.
2.2.2
ˇ sen´ı Reˇ
Za velmi zaj´ımav´e zjiˇstˇen´ı bˇehem realizace tohoto projektu osobnˇe povaˇzuji souvislost mezi vyt´ıˇzen´ım serveru na kter´em bˇeˇz´ı nagios a poˇctem faleˇsnˇe pozitivn´ıch hl´aˇsen´ı. P˚ uvodn´ı idea byla pˇren´est spoleˇcnˇe s nagiosem na nov´ y server i cacti7 . Toto se ale v praxi uk´azalo jako nepouˇziteln´e ˇreˇsen´ı. Cacti svoj´ı pˇr´ıtomnost´ı vytˇeˇzovalo monitorovac´ı server velmi v´ yznamn´ ym zp˚ usobem. Po jeho odsunut´ı na jin´ y server byl zredukov´an poˇcet faleˇsnˇe pozitivn´ıch hl´aˇsen´ı na cca 1/3. Po prostudov´an´ı moˇzn´ ych ˇreˇsen´ı bylo rozhodnuto ˇze se nagios pˇrestˇehuje na cloud 8 spoleˇcnosti Amazon . D˚ uvody pro tuto volbu byly n´asleduj´ıc´ı: • D´ıky elasticitˇe cloudu je zv´ yˇsen´ı v´ ypoˇcetn´ı s´ıly serveru velmi jednoduch´e. D˚ uleˇzit´a vlastnost d´ıky v´ yˇse zm´ınˇen´ ym faleˇsnˇe pozitivn´ım hl´aˇsen´ım. • Zn´am´a vysok´a spolehlivost t´eto sluˇzby pˇrin´aˇs´ı jistotu dostupnosti a bˇehu nagiosu. • D´ıky oddˇelen´ ym z´on´am by v´ ypadek jedn´e nemˇel ovlivnit jin´e. Navzdory um´ıstˇen´ı ve stejn´e geografick´e lokaci. 7
Software pro sbˇer statistik o hodnot´ach serveru a jejich zobrazen´ı do grafu. Pˇresnˇeji Amazon Elastic Compute Cloud (Amazon EC2). Tato sluˇzba bude rozebr´ana v dalˇs´ıch kapitol´ ach t´eto pr´ ace. 8
20
• EC2 byla pl´anov´ana k bliˇzˇs´ımu prozkoum´an´ı. Takˇze byl v´ yhodn´ y fakt ˇze v´ ystup t´eto elaborace poslouˇz´ı jako z´aklad pro dalˇs´ı pr´aci.
21
Slovn´ık ”MySQL” MySQL je datab´azov´ y syst´em, vytvoˇren´ y ˇsv´edskou firmou MySQL AB, nyn´ı vlastnˇen´ y spoleˇcnost´ı Sun Microsystems, dceˇrinou spoleˇcnost´ı Oracle Corporation. Jeho hlavn´ımi autory jsou Michael Monty“ Widenius a David Axmark. Je povaˇzov´an ” za u ´spˇeˇsn´eho pr˚ ukopn´ıka dvoj´ıho licencov´an´ı – je k dispozici jak pod bezplatnou licenc´ı GPL, tak pod komerˇcn´ı placenou licenc´ı.. 14 ´ ”brute force” Utok hrubou silou (anglicky brute force attack) je vˇetˇsinou pokus o rozluˇstˇen´ı ˇsifry bez znalosti jej´ıho kl´ıˇce k deˇsifrov´an´ı. V praxi se jedn´a o systematick´e testov´an´ı vˇsech moˇzn´ ych kombinac´ı nebo omezen´e podmnoˇziny vˇsech kombinac´ı.. 15 ”nagios” Nagios je popul´arn´ı open source syst´em pro automatizovan´e sledov´an´ı stavu poˇc´ıtaˇcov´ ych s´ıt´ı a jimi poskytovan´ ych sluˇzeb. Je vyv´ıjen prim´arnˇe pro Linux, ale je moˇzn´e ho provozovat i na jin´ ych unixov´ ych syst´emech. Je vyd´av´an pod GPL licenc´ı. Je vyv´ıjen a udrˇzov´an Ethanem Galstadtem a mnoha dalˇs´ımi v´ yvoj´aˇri plugin˚ u.. 17 ˇ alov´an´ı do ˇs´ıˇrky je obvykle ˇreˇseno pˇrid´an´ım server˚ ”scale out” Sk´ u a rozdistribuov´an´ım z´atˇeˇze mezi tyto jednotliv´e servery. 10 ˇ alov´an´ı do v´ ˇ alov´an´ı pˇri kter´em jsou do serveru pˇrid´any v´ ”scale up” Sk´ yˇsky. Sk´ ypoˇcetn´ı zdroje (CPU, RAM) pro zv´ yˇsen´ı v´ ykonu. 10 ARP Address Resolution Protocol (ARP) se v poˇc´ıtaˇcov´ ych s´ıt´ıch s IP protokolem pouˇz´ıv´a k z´ısk´an´ı ethernetov´e MAC adresy sousedn´ıho stroje z jeho IP adresy. Pouˇz´ıv´a se v situaci, kdy je tˇreba odeslat IP datagram na adresu leˇz´ıc´ı ve stejn´e pods´ıti jako odesilatel. Data se tedy maj´ı poslat pˇr´ımo adres´atovi, u nˇehoˇz vˇsak odesilatel zn´a pouze IP adresu. Pro odesl´an´ı prostˇrednictv´ım napˇr. Ethernetu ale potˇrebuje zn´at c´ılovou ethernetovou adresu.. 18 DNS Domain Name Server. 17 dom0 Dom0, nebo domain zero je prvn´ı server jenˇz je spuˇstˇen hypervizorem XENu pˇri bootu. 7, 9 domU DomU, nebo domain U je kaˇzd´ y dalˇs´ı server jenˇz je spuˇstˇen nad“ dom0. 7, 9, 10 ” failover Schopnost prostˇred´ı bezchybn´eho bˇehu i za situace selh´an´ı nˇekter´ ych server˚ u. 1, 11, 15 HN Hardware Node. 7–9 HTTP Hypertext transfer protocol je dnes nejrozˇs´ıˇrenˇejˇs´ı protokol pro distribuci obsahu webov´ ych str´anek. 2, 10, 11, 18 22
HTTPS Hypertext transfer protocol secure je nadstavba nad klasick´ y HTTP protokol o zabezpeˇcen´ı v podobˇe protokolu SSL/TLS . 10, 11, 18 HW Hardware. 10, 15 IP Internet Protocol. 18, 19 kontejner Kontejner, anglicky container je pojem zn´am´ y pˇredevˇs´ım z prostˇred´ı OpenVZ . 7 KVM Kernel-based Virtual Machine. 8 Load balancer Server jeˇz zajiˇst’uje rovnomˇern´e rozm´ıstˇen´ı z´atˇeˇze na v´ ypoˇcetn´ıch stroj´ıch. 2 Moore˚ uv z´ akon Sloˇzitost souˇca´stek se kaˇzd´ y rok zdvojn´asob´ı pˇri zachov´an´ı stejn´e ceny http://en.wikipedia.org/wiki/Moore%27s_law. 8 mount Mountov´an´ı“, je v IT pojem pro oznaˇcen´ı procesu pˇripraven´ı diskov´eho odd´ılu ” pro pouˇzit´ı operaˇcn´ım syst´emem. 11 NFS Network File Storage - protokol pro pˇripojov´an´ı s´ıt’ov´ ych disk˚ u. 2, 3, 11, 14 open source Software s volnˇe dostupn´ ymi zdrojov´ ymi k´ody. 8 OS Operaˇcn´ı syst´em. 3–5, 7–10, 17 OSS Open Source Software. 16 overhead Zdroje jeˇz mus´ı b´ yt vyd´any nav´ıc a nesouvis´ı pˇr´ımo s poˇzadovan´ ym c´ılem. 8 packet loss Packet loss je jev pˇri kter´em jeden, nebo v´ıce paket˚ u v poˇc´ıtaˇcov´e s´ıti nedos´ahne sv´eho urˇcen´eho c´ıle.. 17 RAID Redundant Array of Independent Disks. 12 Rolling updates Aktualizace se uskuteˇcn ˇuje pomoc´ı bal´ıˇckovac´ıho syst´emu pr˚ ubˇeˇznˇe, dennˇe jsou do zdroj˚ u doplˇ nov´any nejnovˇejˇs´ı stabiln´ı verze softwaru. 6 SNI Server Name Indication. 18 SPOF Single Point Of Failure. 13, 14 SQL Structured Query Language je standardizovan´ y dotazovac´ı jazyk pouˇz´ıvan´ y pro pr´aci s daty v relaˇcn´ıch datab´az´ıch. 2 SSL Secure Sockets Layer. 18, 19 VPN Virtual Private Network. 2 XEN V IT se pod pojmem XEN rozum´ı virtualizaˇcn´ı technologie. 9
23
Literatura [1] Laura DiDio. Yankee Group 2007-2008 Server OS Reliability Survey. http: //www.iaps.com/exc/yankee-group-2007-2008-server-reliability.pdf, 2008. [Online; pˇr´ıstupn´e 12.12.2010]. [2] edpin,wolf,
[email protected]. Failure trends in a large disk drive population. http://labs.google.com/papers/disk_failures.html, 2007. [Online; pˇr´ıstupn´e 22.3.2011]. [3] The Apache Software Foundation. http://httpd.apache.org/docs/2.0/ssl/ssl_ faq.html, 2011. [Online; pˇr´ıstupn´e 29.3.2011]. [4] Kirill Kolyshkin. Virtualization in Linux. http://download.openvz.org/doc/ openvz-intro.pdf, 2006. [Online; pˇr´ıstupn´e 9.2.2011]. [5] linux.com. Benchmarking hardware raid vs. linux kernel software raid. http://www.linux.com/news/hardware/servers/ 8222-benchmarking-hardware-raid-vs-linux-kernel-software-raid, 2008. [Online; pˇr´ıstupn´e 20.3.2011]. [6] Microsoft. Compare Windows to Red Hat. http://www.microsoft.com/ windowsserver/compare/windows-server-vs-red-hat-linux.mspx, 2003. [Online; pˇr´ıstupn´e 13.12.2010]. [7] Soubˇeh. http://cs.wikipedia.org/wiki/Soub%C4%9Bh, 2011. [Online; pˇr´ıstupn´e 05.4.2011]. [8] VMware, Inc. A Performance Comparison of Hypervisors . http://www.cc.iitd. ernet.in/misc/cloud/hypervisor_performance.pdf, 2007. [Online; pˇr´ıstupn´e 10.1.2011]. [9] Wikipedia. Failover. http://en.wikipedia.org/wiki/Failover, 2011. [Online; pˇr´ıstupn´e 22.2.2011]. [10] Wikipedia. Kernel-based Virtual Machine. http://en.wikipedia.org/wiki/ Kernel-based_Virtual_Machine, 2011. [Online; pˇr´ıstupn´e 2.2.2011]. [11] Wikipedia. Network file system. http://cs.wikipedia.org/wiki/Network_File_ System, 2011. [Online; pˇr´ıstupn´e 27.3.2011]. [12] Wikipedia. RAID. http://cs.wikipedia.org/wiki/RAID#RAID_1_.28zrcadlen. C3.AD.29, 2011. [Online; pˇr´ıstupn´e 20.3.2011]. [13] Cybersource XXX. n. http://www.cyber.com.au/about/linux_vs_windows_ tco_comparison.pdf&ei=SyYVTcPQPMWa8QOK_vTfDw&usg=AFQjCNGNPQMsfTKO_ AU5gBC6gIOsjGxxIA&sig2=f8P3b0FOgaM-DnCdQq_eRQ, 2002. [Online; pˇr´ıstupn´e 13.12.2010]. 24
Pˇ r´ıloha A Obr´ azky
25
Obr´azek A.1: P˚ uvodn´ı produkce s vyznaˇcen´ ymi verzemi Operaˇcn´ıch Syst´em˚ u
26
Obr´azek A.2: Sch´ema zpracov´an´ı HTTP/HTTPS poˇzadavku
27
Obr´azek A.3: Pˇripojen´ı sd´ılen´ ych NFS odd´ıl˚ u
28
Obr´azek A.4: Pˇreklad vnˇejˇs´ı IP adresy na vnitˇrn´ı
Obr´azek A.5: Vyt´ıˇzen´ı serveru (nagios + cacti)
29
Obr´azek A.6: Vyt´ıˇzen´ı serveru (pouze nagios)
30
Pˇ r´ıloha B Zdrojov´ e k´ ody B.1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
IP SNMP scanner
#! / u s r / b i n / python import os , sys , g e t p a s s , s u b p r o c e s s , re , s o c k e t , d a t e t i m e SERVERS = [ ’ xen02 ’ , ’ db01 ’ , ’ db02 ’ , ] # Vycet s e r v e r u j e j e n u k a z k o v y TMP FILE = ’ /tmp/ t r a c i p . t x t ’ TRAC ROOT = ’ / var / l i b / t r a c / t e s t ’ COMMUNITY = ’XXX ’ data=d i c t ( ) c l a s s SnmpScanner : data = d i c t ( ) INTERFACE NAME = ’ i n t e r f a c e n a m e ’ IP = ’ i p s ’ DNS = ’ dns ’ def f i n d i n t e r f a c e s ( s e l f ) : f o r s e r v e r in SERVERS: s e l f . data [ s e r v e r ] = d i c t ( ) s h e l l = s u b p r o c e s s . Popen ( ”snmpwalk −c ”+COMMUNITY+” −v 2 c ”+ s e r v e r+” ifName ” , s h e l l=True , s t d o u t=s u b p r o c e s s . PIPE ) m i b t a b l e = s h e l l . communicate ( ) [ 0 ] . s p l i t ( ”\n” ) f o r m i b r e c o r d in m i b t a b l e : m a t c h o b j e c t = r e . s e a r c h ( ’ ifName . ( \ d ∗ ) = STRING : ( \ S ∗ ) $ ’ , m i b r e c o r d , r e . MULTILINE) i f m a t c h o b j e c t != None : i n t e r f a c e i d = m a t c h o b j e c t . group ( 1 ) i n t e r f a c e n a m e = m a t c h o b j e c t . group ( 2 ) s e l f . data [ s e r v e r ] [ i n t e r f a c e i d ] = d i c t ( ) s e l f . data [ s e r v e r ] [ i n t e r f a c e i d ] [ s e l f .INTERFACE NAME] = interface name def f i n d d n s ( s e l f ) : f o r s e r v e r in SERVERS: f o r i n t e r f a c e i d , i n t e r f a c e in s e l f . data [ s e r v e r ] . i t e m s ( ) : try : f o r i p in i n t e r f a c e [ s e l f . IP ] : try : hostname = s o c k e t . g e t h o s t b y a d d r ( i p ) s e l f . data [ s e r v e r ] [ i n t e r f a c e i d ] [ s e l f . IP ] [ i p ] = hostname [ 0 ] except :
31
39 40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
pass #s e l f . d a t a [ s e r v e r ] [ i n t e r f a c e i d ] [ s e l f .DNS] = ”−−−” except : i n t e r f a c e [ s e l f . IP ] = d i c t ( )
def f i n d i p s ( s e l f ) : f o r s e r v e r in SERVERS: i f s e r v e r not in s e l f . data : # TODO: u g l y , make b e t t e r s e l f . data [ s e r v e r ] = d i c t ( ) s h e l l = s u b p r o c e s s . Popen ( ”snmpwalk −c ” + COMMUNITY + ” −v 2 c ” + s e r v e r + ” i p A d d r e s s I f I n d e x . i p v 4 ” , s h e l l=True , s t d o u t= s u b p r o c e s s . PIPE ) m i b t a b l e = s h e l l . communicate ( ) [ 0 ] . s p l i t ( ”\n” ) f o r m i b r e c o r d in m i b t a b l e : #r e . f i n d i t e r ( ’ \ S∗ $ ’ , tmp2 , r e . MULTILINE) : m a t c h o b j e c t = r e . s e a r c h ( ’ i p v 4 . ” ( [ ˆ ” ] ∗ ) ” = INTEGER: ( \ d ∗ ) $ ’ , m i b r e c o r d , r e . MULTILINE) i f m a t c h o b j e c t != None : i = m a t c h o b j e c t . group ( 2 ) i f s t r ( i ) not in s e l f . data [ s e r v e r ] : # TODO: u g l y , make better s e l f . data [ s e r v e r ] [ s t r ( i ) ] = d i c t ( ) i f s e l f . IP not in s e l f . data [ s e r v e r ] [ s t r ( i ) ] : # TODO: r e a l l y u g l y , make b e t t e r s e l f . data [ s e r v e r ] [ s t r ( i ) ] [ s e l f . IP ] = d i c t ( ) s e l f . data [ s e r v e r ] [ s t r ( i ) ] [ s e l f . IP ] [ m a t c h o b j e c t . group ( 1 ) ] = ”” def p r i n t i n f o ( s e l f ) : print ( ”= E x p e r i m e n t a l IP l i s t =” ) print ( ” This page i s g e n e r a t e d ’ ’ ’ a u t o m a t i c a l l y ’ ’ ’ . Do not modify i t . Your c h a n g e s w i l l be o v e r w r i t t e n . ” ) print ( ”The ’ ’ l o c a l h o s t ’ ’ r e c o r d r e f e r s t o ’ ’ xen02 ’ ’ . ” ) print ( ” L i s t i s g e n e r a t e d by a t i v e IP s c a n n e r . So i t maps ’ ’ a c t u a l ’ ’ s t a t e o f s e r v e r s . Not t h e one i n c o n f i g u r a t i o n s . ” ) print ( ” This page r e f e r s t o s t a t e a t ” + s t r ( d a t e t i m e . d a t e t i m e . now ( ) )) wiki page = ”” f o r s e r v e r n a m e , s e r v e r in s e l f . data . i t e m s ( ) : w i k i p a g e += ”== ”+s e r v e r n a m e+” ==\n” f o r i n t e r f a c e i d , i n t e r f a c e in s e r v e r . i t e m s ( ) : w i k i p a g e += ” | | ’ ’ ’ ”+ ( i n t e r f a c e [ s e l f .INTERFACE NAME] i f s e l f .INTERFACE NAME in i n t e r f a c e e l s e ”−−−” ) + ” ’ ’ ’ | | ” f o r ip , dns in i n t e r f a c e [ s e l f . IP ] . i t e m s ( ) : #i f s e l f . d a t a [ s e r v e r ] [ s e l f .INTERFACE NAME] != ”” and i n t e r f a c e != ” l o ” : w i k i p a g e += ” ’ ’ ’ ” + i p + ” ’ ’ ’ ” i f dns != ” ” : w i k i p a g e += ” = ” + dns w i k i p a g e += ” , ” #w i k i p a g e += s t r ( s e l f . d a t a [ s e r v e r ] [ i n t e r f a c e ] [ ’ h o s t ’ ] [ 0 ] ) +” | | \ n” w i k i p a g e += ” | | \ n” print w i k i p a g e
32
85 86 87 88 89
o b j = SnmpScanner ( ) obj . f i n d i n t e r f a c e s () obj . f i n d i p s () obj . find dns () obj . p r i n t i n f o ()
Listing B.1: IP SNMP scanner
33