Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Diplomov´ a pr´ ace N´ avrh a integrace priv´ atn´ıho cloudu ˇ do prostˇ red´ı ZCU
Plzeˇ n 2014
V´aclav Martinovsk´ y
Origin´ al zad´ an´ı pr´ ace
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem diplomovou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u.
V Plzni dne 14. kvˇetna 2014 V´aclav Martinovsk´ y
Podˇ ekov´ an´ı T´ımto bych chtˇel podˇekovat vedouc´ımu pr´ace, Ing. Jiˇr´ımu Siterovi, za poskytnut´e odborn´e rady, vl´ıdn´ y pˇr´ıstup a vˇenovan´ y ˇcas. D´ale dˇekuji zamˇestnanc˚ um ˇ Centra informatizace a v´ ypoˇcetn´ı techniky, Ing. Michalovi Svambergovi a Ing. Petru Grolmusovi, za pomoc pˇri realizaci vybran´ ych technick´ ych aspekt˚ u, Ing. Luboˇsi Matˇejkovi z Katedry informatiky a v´ ypoˇcetn´ı techniky za uˇziteˇcn´e koment´aˇre a v neposledn´ı ˇradˇe tak´e Bc. Miriam Sovov´e za podporu a pˇripom´ınky vedouc´ı k vylepˇsen´ı t´eto pr´ace.
Abstract Design and integration of private cloud into the UWB environment The aim of this work is to prepare a design for the implementation of a private cloud into the environment of University of West Bohemia. In order to achieve this objective is in the theoretical part an overview of current virtualization and cloud computing technologies. Follows an overview of software platforms that meet the requirements and it is selected one, that is used for implementation. The practical part deals with the design and description of the architecture of chosen solution. On the basis of this concept is prepared and launched a test run to confirm the feasibility of the concept. Keywords: virtualization, cloud computing, IaaS, OpenStack, KVM
Abstrakt ˇ N´ avrh a integrace priv´ atn´ıho cloudu do prostˇ red´ı ZCU C´ılem t´eto pr´ace je pˇripravit n´avrh implementace priv´atn´ıho cloudu do prostˇred´ı Z´apadoˇcesk´e univerzity v Plzni. Za u ´ˇcelem dosaˇzen´ı tohoto c´ıle je v teoretick´e ˇca´sti pr´ace provedeno sezn´amen´ı s technologi´ı virtualizace a s oborem cloud computingu. N´aslednˇe je zpracov´an pˇrehled softwarov´ ych platforem, kter´e vyhovuj´ı poˇzadavk˚ um a z nich je vybr´ana jedna, kter´a je pouˇzita k realizaci. Praktick´a ˇca´st se zab´ yv´a n´avrhem a popisem architektury zvolen´eho ˇreˇsen´ı. Na z´akladˇe tohoto n´avrhu je pak pˇripraven a spuˇstˇen pilotn´ı provoz, kter´ y m´a za c´ıl potvrdit realizovatelnost konceptu. Kl´ıˇ cov´ a slova: virtualizace, cloud computing, IaaS, OpenStack, KVM
Obsah ´ 1 Uvod 1.1 Specifikace poˇzadavk˚ u . . . . . . . . . . . . . . . . . . . . . . 2 Virtualizace 2.1 Rozˇs´ıˇren´ı, pˇr´ınosy . . . . . . . . . 2.2 Pˇr´ıstupy k virtualizaci . . . . . . 2.2.1 Emulace . . . . . . . . . . 2.2.2 Pln´a virtualizace . . . . . 2.2.3 Paravirtualizace . . . . . . 2.2.4 Virtualizace na u ´rovni OS 2.3 Virtualizaˇcn´ı syst´emy . . . . . . . 2.3.1 KVM . . . . . . . . . . . . 2.3.2 XEN . . . . . . . . . . . . 2.3.3 VMware . . . . . . . . . . 2.3.4 Hyper-V . . . . . . . . . . 2.4 Porovn´an´ı a v´ ybˇer . . . . . . . . 3 Cloud computing 3.1 Historie . . . . . . . . . . . . . . 3.2 Definice a charakteristika . . . . . 3.3 Dˇelen´ı podle modelu nasazen´ı . . 3.3.1 Public cloud . . . . . . . . 3.3.2 Private cloud . . . . . . . 3.3.3 Hybrid cloud . . . . . . . 3.3.4 Community cloud . . . . . 3.4 Dˇelen´ı podle typu sluˇzby . . . . . 3.4.1 Infrastructure as a Service 3.4.2 Platform as a Service . . . 3.4.3 Software as a Service . . . 3.5 V´ yhody . . . . . . . . . . . . . . 3.6 Obavy, pˇrek´aˇzky . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
1 1
. . . . . . . . . . . .
3 4 5 6 6 6 7 7 7 8 9 10 10
. . . . . . . . . . . . .
12 12 13 14 15 16 17 17 18 18 19 19 20 21
3.7
Softwarov´e platformy pro IaaS 3.7.1 Apache CloudStack . . 3.7.2 Eucalyptus . . . . . . 3.7.3 OpenNebula . . . . . . 3.7.4 OpenStack . . . . . . . 3.7.5 Zhodnocen´ı a v´ ybˇer . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
4 Popis a n´ avrh architektury 4.1 Datab´aze . . . . . . . . . . . . . . . . . . . . . 4.1.1 N´avrh a zd˚ uvodnˇen´ı . . . . . . . . . . . 4.2 Keystone: spr´avce identity . . . . . . . . . . . . 4.2.1 N´avrh a zd˚ uvodnˇen´ı . . . . . . . . . . . 4.3 Horizon: webov´ y port´al . . . . . . . . . . . . . . 4.3.1 N´avrh a zd˚ uvodnˇen´ı . . . . . . . . . . . 4.4 Nova: v´ ypoˇcetn´ı uzel . . . . . . . . . . . . . . . 4.4.1 N´avrh a zd˚ uvodnˇen´ı . . . . . . . . . . . 4.5 Neutron: s´ıt’ov´an´ı . . . . . . . . . . . . . . . . . 4.5.1 N´avrh a zd˚ uvodnˇen´ı . . . . . . . . . . . 4.6 Cinder: u ´loˇziˇstˇe dat . . . . . . . . . . . . . . . . 4.6.1 N´avrh a zd˚ uvodnˇen´ı . . . . . . . . . . . 4.6.2 Tok poˇzadavk˚ u pˇri pˇripojov´an´ı jednotky 4.7 Glance: katalog obraz˚ u . . . . . . . . . . . . . . 4.7.1 N´avrh a zd˚ uvodnˇen´ı . . . . . . . . . . . 4.8 Tok poˇzadavk˚ u pˇri zakl´ad´an´ı instance . . . . . . 4.9 Ceilometer: mˇeˇren´ı zdroj˚ u . . . . . . . . . . . . 4.10 Ostatn´ı komponenty . . . . . . . . . . . . . . . 4.10.1 Swift . . . . . . . . . . . . . . . . . . . . 4.10.2 Heat . . . . . . . . . . . . . . . . . . . . ˇ alovatelnost a High Availability . . . . . . . . 4.11 Sk´ 4.11.1 HA pro datab´azi . . . . . . . . . . . . . 4.11.2 HA pro frontu zpr´av . . . . . . . . . . . 4.11.3 HA pro ostatn´ı sluˇzby . . . . . . . . . . 4.11.4 Sch´ema n´avrhu kompletn´ıho HA . . . . . 4.12 Z´alohovac´ı sch´ema . . . . . . . . . . . . . . . . 4.12.1 Obnova . . . . . . . . . . . . . . . . . . 4.13 Logov´an´ı . . . . . . . . . . . . . . . . . . . . . . 4.13.1 Historie IP adres . . . . . . . . . . . . . 4.14 Monitoring . . . . . . . . . . . . . . . . . . . . . 4.14.1 Procesy . . . . . . . . . . . . . . . . . . 4.14.2 Provozn´ı veliˇciny . . . . . . . . . . . . . 4.15 Bezpeˇcnost, hesla . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
22 22 22 23 24 27
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30 31 31 31 32 32 32 33 33 33 35 36 37 39 39 40 41 44 45 45 45 46 47 48 49 49 51 52 53 53 54 54 55 56
4.16 Aktualizace syst´emu . . . . . . . . . . . . . . . . . . . . . . . 57 4.17 Moˇznosti pˇr´ıstupu . . . . . . . . . . . . . . . . . . . . . . . . . 58 5 Realizace pilotn´ıho nasazen´ı 5.1 Testovac´ı hardware . . . . . . . . . . . . . . . 5.2 Software . . . . . . . . . . . . . . . . . . . . . 5.2.1 Z´akladn´ı konfigurace . . . . . . . . . . 5.3 Rozloˇzen´ı komponent . . . . . . . . . . . . . . 5.4 Controller node . . . . . . . . . . . . . . . . . 5.4.1 Obrazy server˚ u . . . . . . . . . . . . . 5.5 Storage node . . . . . . . . . . . . . . . . . . 5.6 Networking node . . . . . . . . . . . . . . . . 5.7 Compute node . . . . . . . . . . . . . . . . . . 5.8 Ceilometer . . . . . . . . . . . . . . . . . . . . ´ 5.8.1 Upravy v komponentˇe Cinder . . . . . ´ 5.8.2 Upravy v komponentˇe Glance . . . . . ´ 5.8.3 Upravy v komponentˇe Nova . . . . . . ˇ 5.9 Integrace do prostˇred´ı ZCU . . . . . . . . . . 5.9.1 Digit´aln´ı certifik´at . . . . . . . . . . . 5.9.2 Kerberos a WebAuth . . . . . . . . . . 5.9.3 Uˇzivatelsk´e u ´ˇcty . . . . . . . . . . . . . 5.10 Ovˇeˇren´ı . . . . . . . . . . . . . . . . . . . . . 5.10.1 Sc´en´aˇr: zaloˇzen´ı a pˇrihl´aˇsen´ı uˇzivatele . 5.10.2 Sc´en´aˇr: zaloˇzen´ı a spuˇstˇen´ı serveru . . 5.10.3 Sc´en´aˇr: ovˇeˇren´ı funkˇcnosti kv´ot . . . . 5.10.4 Sc´en´aˇr: spuˇstˇen´ı v´ıce server˚ u najednou 5.10.5 Naplnˇen´ı poˇzadavk˚ u . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
59 59 60 60 61 62 64 65 66 68 68 70 71 71 72 73 74 76 81 81 82 84 84 86
6 Z´ avˇ er
88
Seznam tabulek
89
Seznam obr´ azk˚ u
90
Literatura
92
A Obsah CD
98
´ 1 Uvod Cloud je pravdˇepodobnˇe jedno z nejv´ıce skloˇ novan´ ych slov dneˇsn´ıho svˇeta informaˇcn´ıch technologi´ı. At’ uˇz chceme nebo nechceme, obklopuje naˇse okol´ı a st´ale v´ıce organizac´ı, firem i jednotlivc˚ u vyuˇz´ıv´a v nˇejak´e podobˇe cloudov´ ych sluˇzeb. Tato pr´ace si klade za c´ıl pˇripravit n´avrh infrastruktury priv´atn´ıho cloudu pro potˇreby Z´apadoˇcesk´e univerzity v Plzni, kter´a chce umoˇznit student˚ um i zamˇestnanc˚ um spouˇstˇet virtu´aln´ı stroje pro v´ yukov´e a v´ yzkumn´e u ´ˇcely. Prostˇredkem k dosaˇzen´ı tohoto c´ıle je nejprve sezn´amen´ı s histori´ı a aktua´ln´ım stavem odvˇetv´ı cloud computingu. Nem´enˇe d˚ uleˇzitou ˇc´ast´ı je pˇrehled virtualizaˇcn´ıch technologi´ı, na kter´ ych je odvˇetv´ı postaveno a bez kter´eho si lze tˇeˇzko pˇredstavit tak obrovsk´ y rozmach. Samostatn´a kapitola je vˇenov´ana porovn´an´ı softwaru, kter´ ym lze realizovat priv´atn´ı cloud. Z t´eto kapitoly vzejde jeden produkt, kter´ y pak bude pouˇzit v n´avrhu i praktick´e realizaci. Ned´ılnou souˇc´ast´ı je i pilotn´ı provoz (Proof of Concept), kter´ ym je prakticky otestov´ana a pˇredvedena realizovatelnost zvolen´eho ˇreˇsen´ı.
1.1
Specifikace poˇ zadavk˚ u
Tato diplomov´a pr´ace je zpracov´av´ana ve spolupr´aci s Centrem informatizace a v´ ypoˇcetn´ı techniky (d´ale jen CIV“ nebo zadavatel“). Souˇc´ast´ı je soupis ” ” poˇzadavk˚ u od zadavatele, kter´e by mˇelo v´ ysledn´e ˇreˇsen´ı splnit. Prim´arn´ım c´ılem ˇreˇsen´ı je vytvoˇren´ı nov´e sluˇzby, kterou lze popsat jako samoobsluˇzn´e zˇrizov´an´ı virtu´aln´ıch server˚ u pro potˇreby v´ yuky a v´ yzkumu. Jako typick´e pouˇzit´ı oˇcek´av´ame virtu´aln´ı laboratoˇr, kde si uˇzivatel (student) spust´ı kr´atkodobˇe (hodiny) nˇekolik virtu´aln´ıch poˇc´ıtaˇc˚ u propojen´ ych s´ıt´ı. • Uzly budou plnˇe v jeho spr´avˇe a typicky nastartovan´e z pˇripraven´eho obrazu (napˇr´ıklad klient-server architektura pro laboratorn´ı cviˇcen´ı konfigurace ˇci debugov´an´ı s´ıt’ov´eho protokolu). ˇ sen´ı mus´ı splˇ • Reˇ novat provozn´ı poˇzadavky v´ ypoˇcetn´ıho prostˇred´ı Orion 1
´ Uvod
Specifikace poˇzadavk˚ u (monitoring, bezpeˇcnost, z´alohov´an´ı) a b´ yt pˇrimˇeˇrenˇe napojen´e do existuj´ıc´ı infrastruktury (zejm´ena AAI1 , diskov´ y syst´em, s´ıt’). Konkr´etnˇe je tˇreba napojen´ı na b´azi uˇzivatel˚ u a pˇr´ıstup vˇsech uˇzivatel˚ u k nov´e sluˇzbˇe.
• Realizovan´e ˇreˇsen´ı mus´ı umoˇzn ˇovat stanoven´ı limit˚ u na vyuˇzit´ı zdroj˚ u a mˇeˇren´ı vyuˇz´ıv´an´ı tˇechto zdroj˚ u. • Souˇca´st´ı zad´an´ı nen´ı pˇr´ıprava obraz˚ u virtu´aln´ıch server˚ u, ale zvolen´e ˇreˇsen´ı mus´ı podporovat pr´aci s obrazy (import z jin´ ych prostˇred´ı, podpora kontextualizace, podpora r˚ uzn´ ych operaˇcn´ıch syst´em˚ u). • Preferujeme otevˇren´e ˇreˇsen´ı bez licenˇcn´ıch omezen´ı a poplatk˚ u, modul´arn´ı a zaloˇzen´e na standardech. D˚ uleˇzit´ ym parametrem je mal´a provozn´ı n´aroˇcnost a moˇznost rozˇsiˇrov´an´ı (kapacita, vlastnosti). • V´ yhodou je pouˇzit´ı v souˇcasnosti uˇz´ıvan´ ych ˇreˇsen´ı a technologi´ı.
1
Authentication and Authorisation Infrastructure
2
2 Virtualizace Virtualizace pˇredstavuje mezivrstvu mezi hostitelsk´ ym syst´emem a hostovan´ ym syst´emem. Fyzick´e zdroje, mezi kter´e patˇr´ı zejm´ena pamˇet’, procesor, disk, s´ıt’ov´a karta jsou virtualizov´any a d´ale poskytnuty hostovan´emu syst´emu (obr. 2.1), na kter´em bˇeˇz´ı samostatn´ y operaˇcn´ı syst´em (d´ale jen OS). Ten takto pˇridˇelen´e zdroje vn´ım´a, jako by byly fyzick´e a vyhrazen´e. O spr´avu se star´a tzv. virtualizaˇcn´ı manager, ˇcasto tak´e oznaˇcovan´ y jako hypervizor.
Obr´azek 2.1: Zn´azornˇen´ı virtualizace hardware Zdroj: vlastn´ı zpracov´ an´ı
V roce 1974 publikovali Popel a Goldberg ˇcl´anek, ve kter´em rozdˇelili hypervizory na 2 z´akladn´ı typy, coˇz ilustruje obr. 2.2: [42] • Typ 1 (nativn´ı, bare-metal) – hypervizor je spuˇstˇen pˇr´ımo na hardware, kde tvoˇr´ı mezivrstvu mezi hostovan´ ymi operaˇcn´ımi syst´emy a fyzick´ ymi prostˇredky. • Typ 2 (hostovan´ y, hosted) – na hardware je spuˇstˇen klasick´ y operaˇcn´ı syst´em a hypervizor je nainstalov´an jako souˇc´ast tohoto OS. Oproti prvn´ımu typu je zde tedy nav´ıc jedna vrstva. 3
Virtualizace
Rozˇs´ıˇren´ı, pˇr´ınosy
Obr´azek 2.2: Ilustrace hypervizor˚ u typu 1 a 2 Zdroj: vlastn´ı zpracov´ an´ı
Pˇr´ıkladem prvn´ıho typu je napˇr. VMware ESX, Microsoft Hyper-V ˇci Citrix XenServer. Do druh´eho typu ˇrad´ıme VMware Workstation a VirtualBox. Ne vˇzdy je ale klasifikace typu jasn´a. Napˇr´ıklad KVM i XEN potˇrebuj´ı pro sv˚ uj bˇeh operaˇcn´ı syst´em (coˇz by naznaˇcovalo, ˇze jsou typu 2), ale jsou povaˇzov´any za hypervizory typu 1, protoˇze jejich k´od pracuje s hardwarem na stejn´e u ´rovni jako j´adro (kernel).
2.1
Rozˇ s´ıˇ ren´ı, pˇ r´ınosy
Aˇckoliv koncept virtualizace sah´a do 60. let 20. stolet´ı k IBM a jeho operaˇcn´ımu syst´emu CP-40, opravdov´ y rozmach a ˇsirˇs´ıho produkˇcn´ıho nasazen´ı se virtualizace doˇckala aˇz v nov´em tis´ıcilet´ı. Letoˇsn´ı rozs´ahl´a studie firmy Kapsch [47] s n´azvem Trendy a v´yzvy ICT ve stˇredn´ı a v´ychodn´ı Evropˇe uk´azala, ˇze nˇejakou formu virtualizace vyuˇz´ıv´a 58 % ˇcesk´ ych firem, pˇriˇcemˇz z t´eto ˇc´asti se jedn´a z 90 % o virtualizaci server˚ u a datov´ ych center. D˚ uvody rozˇs´ıˇren´ı jsou zejm´ena:
4
Virtualizace
Pˇr´ıstupy k virtualizaci
• Konsolidace, pˇri kter´e doch´az´ı ke sluˇcov´an´ı v´ıce fyzick´ ych server˚ u do virtu´aln´ıho prostˇred´ı. C´ılem je zejm´ena u ´spora, protoˇze zkuˇsenosti z praxe ukazuj´ı, ˇze v nevirtualizovan´em prostˇred´ı jsou servery zat´ıˇzeny pouze na zlomek sv´e kapacity. Pˇr´ıkladem je Amazon, kter´ y namˇeˇril pouze 10% pr˚ umˇernou z´atˇeˇz. [25] Konsolidace vede k lepˇs´ımu vyuˇzit´ı zdroj˚ u a tedy u ´spor´am jak pˇri n´akupu hardware, tak pˇri provozu (servis, elektˇrina, chlazen´ı, . . . ). • Zv´ yˇ sen´ı dostupnosti pomoc´ı High Availability ˇreˇsen´ı, kter´a vytv´aˇr´ı virtu´aln´ı clustery s vyvaˇzov´an´ım z´atˇeˇze. Vˇetˇsina virtualizaˇcn´ıch technologi´ı umoˇzn ˇuje prov´adˇet ˇzivou migraci1 , d´ıky ˇcemuˇz lze bezprobl´emovˇe stˇehovat servery po dostupn´e fyzick´e architektuˇre (napˇr. kv˚ uli pl´anovan´e u ´drˇzbˇe hardware). • Izolace, d´ıky kter´e lze provozovat na jednom fyzick´em serveru i vz´ajemnˇe nekompatibiln´ı sluˇzby nebo sluˇzby vyˇzaduj´ıc´ı specifick´e prostˇred´ı, kter´e by jinak ovlivnilo ostatn´ı aplikace. D´ale pˇrisp´ıv´a k vyˇsˇs´ı bezpeˇcnosti dat d´ıky d˚ usledn´emu oddˇelen´ı jednotliv´ ych prostˇred´ı. • Testov´ an´ı nov´ ych verz´ı aplikac´ı nebo sluˇzeb lze realizovat velmi snadno d´ıky moˇznosti naklonovat virtu´aln´ı server a na nˇem naneˇcisto“ vy” zkouˇset, jak se bude chovat po aktualizaci. Dalˇs´ım sc´en´aˇrem m˚ uˇze b´ yt situace, kdy potˇrebujeme otestovat aplikaci na velk´e ˇsk´ale r˚ uzn´ ych operaˇcn´ıch syst´em˚ u, k ˇcemuˇz bychom jinak potˇrebovali velk´e mnoˇzstv´ı fyzick´ ych server˚ u. • Z´ alohov´ an´ı lze velmi snadno prov´adˇet pomoc´ı tzv. snapshot˚ u (bin´arn´ıch obraz˚ u souborov´eho syst´emu), d´ıky kter´ ym m˚ uˇzeme velmi rychle obnovit stav serveru k urˇcit´emu okamˇziku.
2.2
Pˇ r´ıstupy k virtualizaci
Tato podkapitola pˇredstav´ı z´akladn´ı virtualizaˇcn´ı techniky od emulace aˇz po virtualizaci na u ´rovni operaˇcn´ıho syst´emu. U kaˇzd´eho pˇr´ıstupu bude proveden kr´atk´ y popis a zm´ınˇen pˇr´ıklad konkr´etn´ı technologie, kter´ y reprezentuje nasazen´ı dan´e techniky v praxi. 1ˇ
Ziv´ a migrace virtu´ aln´ıch server˚ u je z´akladn´ı vlastnost virtualizace, kter´a umoˇzn ˇuje pˇresun spuˇstˇen´eho virtu´ aln´ıho serveru z jednoho fyzick´eho serveru na druh´ y bez pˇreruˇsen´ı. [9]
5
Virtualizace
2.2.1
Pˇr´ıstupy k virtualizaci
Emulace
Emulace umoˇzn ˇuje provozovat virtu´aln´ı syst´em jin´e architektury, neˇz je hostitelsk´ y syst´em (lze tak provozovat napˇr. Windows na PowerPC2 ). Je vˇsak nutn´e veˇsker´e operace interpretovat, coˇz m´a velmi negativn´ı vliv na v´ ykon. I vzhledem k tomuto faktu je vyuˇz´ıv´ana sp´ıˇse okrajovˇe pro velmi specifick´e pˇr´ıpady. Pˇr´ıkladem je emul´ator QEMU3 .
2.2.2
Pln´ a virtualizace
V pˇr´ıpadˇe pln´e virtualizace m˚ uˇzeme provozovat na hostiteli operaˇcn´ı syst´emy bez nutnosti je jakkoliv upravovat. Pro bˇeh je nutn´a hardwarov´a podpora procesoru, v pˇr´ıpadˇe Intelu se jedn´a o technologii Intel VT a u AMD jde o AMD-V. Ovˇeˇren´ı jestli procesor hardwarovˇe podporuje virtualizaci provedeme (pod Linuxem) pˇr´ıkazem: egrep ’(vmx|svm)’ /proc/cpuinfo Pokud je virtualizace podporov´ana, v´ ystupem bude VMX (pro Intel) nebo SVM (pro AMD). Do t´eto skupiny ˇrad´ıme vˇetˇsinu nejpouˇz´ıvanˇejˇs´ıch syst´em˚ u, zejm´ena VMware, Hyper-V, KVM a tak´e XEN (bliˇzˇs´ı popis v kap. 2.3).
2.2.3
Paravirtualizace
Pˇri paravirtualizaci je hostovan´emu syst´emu poskytnuto jen ˇc´asteˇcnˇe virtualizovan´e prostˇred´ı. Je nezbytnˇe nutn´e, aby toto podporoval virtualizovan´ y OS. V´ yhodou je vyˇsˇs´ı rychlost neˇz u pln´e virtualizace (testovac´ı benchmark4 uv´ad´ı rozd´ıl cca. 3 %). Typick´ ym z´astupcem je XEN5 , kter´ y umoˇzn ˇuje bud’ plnou virtualizaci nebo paravirtualizaci – proto je uveden v obou kategori´ıch. 2
Detaily na: http://www.microsoft.com/australia/office/mac/virtualpc7/ V´ıce informac´ı o emul´ atoru na: http://www.qemu.org/ 4 http://shortrecipes.blogspot.cz/2009/03/xen-performance-of-full-virtualization. html 5 V´ıce v samostatn´e kap. 2.3.2. 3
6
Virtualizace
2.2.4
Virtualizaˇcn´ı syst´emy
Virtualizace na u ´ rovni OS
Technika je postavena na sd´ılen´ı modifikovan´eho linuxov´eho j´adra mezi hostovan´ ym a hostitelsk´ ym syst´emem. Virtu´aln´ı servery jsou oznaˇcov´any jako kontejnery a nedoch´az´ı k virtualizaci hardware – nen´ı k dispozici vlastn´ı s´ıt’ov´a karta ani samostatn´a diskov´a jednotka (souborov´ y syst´em je sd´ılen s hostitelsk´ ym syst´emem a ohraniˇcen kv´otami), procesy vˇsech hostovan´ ych syst´em˚ u jsou vidˇet z hostitelsk´eho OS. Jednotliv´e virtu´aln´ı servery jsou ale od sebe oddˇeleny a nen´ı moˇzno se navz´ajem ovlivˇ novat. V´ yhodou je velmi n´ızk´a reˇzie a moˇznost server˚ um pˇridˇelit v´ıce zdroj˚ u, neˇz je fyzicky k dispozici. Nev´ yhodou je moˇznost takto provozovat pouze linuxov´e distribuce. Mezi z´astupce patˇr´ı zejm´ena OpenVZ6 a Linux-VServer.
2.3
Virtualizaˇ cn´ı syst´ emy
Tato kapitola se zab´ yv´a pˇrehledem nejv´ yznamnˇejˇs´ıch virtualizaˇcn´ıch syst´em˚ u dneˇska – KVM, XEN, VMware a Hyper-V. Tyto syst´emy budou podrobnˇeji pˇredstaveny a v z´avˇereˇcn´e podkapitole bude zvolen jeden syst´em, kter´ y bude pouˇzit pro praktickou ˇca´st.
2.3.1
KVM
KVM (Kernel-based Virtual Machine) je open-source7 virtualizaˇcn´ı ˇreˇsen´ı pro platformu Linux na architektuˇre x86, kter´e poskytuje plnou virtualizaci (pomoc´ı modifikovan´eho emul´atoru QEMU) a pracuje s rozˇs´ıˇren´ımi Intel VT a AMD-V. Ke sv´emu bˇehu tedy potˇrebuje kromˇe Linuxu tak´e procesor s danou instrukˇcn´ı sadou. [30] Pˇr´ımo linuxov´e j´adro zajiˇst’uje sluˇzbu hypervizora, kter´ y poskytuje virtualizovan´ y hardware spuˇstˇen´ ym virtu´aln´ım server˚ um. M˚ uˇzeme tak mluvit o hypervizoru typu 1 (bare-metal). 6 7
Detaily na: http://openvz.org/ Poˇc´ıtaˇcov´ y software s otevˇren´ ym zdrojov´ ym k´odem.
7
Virtualizace
Virtualizaˇcn´ı syst´emy
Nen´ı tˇreba modifikovat hostovan´ y operaˇcn´ı syst´em a d´ıky tomu lze spouˇstˇet r˚ uzn´e operaˇcn´ı syst´emy (Linux, Windows, ...), je podporov´ana ˇziv´a migrace virtu´aln´ıch server˚ u. P˚ uvodnˇe byl vyv´ıjen firmou Qumranet, kterou n´a8 slednˇe koupil Red Hat a na KVM postavil sv˚ uj produkt Red Hat Enterprise Virtualization9 . Vznikl v roce 2006 a je standardn´ı souˇca´st´ı linuxov´eho j´adra od roku 2007 (verze 2.6.20). V souˇcasn´e dobˇe se jedn´a o vyspˇelou technologii a je ˇcasto nasazovan´ ym open-source hypervizorem. D´ıky sv´emu pozdn´ımu uveden´ı, kdy jiˇz byly dostupn´e instrukˇcn´ı sady procesor˚ u pro podporu virtualizace, je KVM koncepˇcnˇe velmi prost´ y. Zat´ımco hypervizor VMware obsahuje pˇres 6 milion˚ u ˇra´dk˚ u k´odu a Xen okolo 500 tis´ıc, prvn´ı stabiln´ı verze KVM obsahovala jen nˇeco m´alo pˇres 10 000 r´adk˚ u k´odu. [17] Pr´avˇe d´ıky t´eto historii a velmi rychl´emu zaˇrazen´ı do linuxov´eho j´adra se ˇrada v´ yvoj´aˇr˚ u domn´ıv´a, ˇze KVM pˇredstavuje budoucnost open-source virtualizace. Spoleˇcnosti jako Red Hat a SuSE daly pˇrednost KVM pˇred XENem.
2.3.2
XEN
P˚ uvodnˇe vznikl jako projekt na univeritˇe v Cambridge a v roce 2003 byla vyd´ana prvn´ı veˇrejn´a verze. Dnes je vyv´ıjen jako open-source pod licenc´ı GPL2. Bˇehem roku 2011, tedy po v´ıce neˇz 8 letech, se s n´astupem kernelu 3.0 doˇckal zaˇrazen´ı do linuxov´eho j´adra. Spr´avu procesoru a pamˇeti zajiˇst’uje hypervizor, ostatn´ı zaˇr´ızen´ı spravuje prigilegovan´ y virtu´aln´ı syst´em, kter´ y oznaˇcujeme jako Dom0. Podporuje ˇzivou migraci virtu´aln´ıch server˚ u a um´ı pracovat ve dvou reˇzimech: • Paravirtualizace (PV) – pˇri paravirtualizaci nen´ı nutn´a podpora CPU, avˇsak virtualizovan´ y syst´em vyˇzaduje m´ıt j´adro a ovladaˇce podporuj´ıc´ı PV. V praxi je jako hostovan´ y syst´em podporov´an kaˇzd´ y Linux s j´adrem 2.6.24 a novˇejˇs´ım. • Pln´ a virtualizace (HVM) – dostupn´a od verze 3.0, vyˇzaduje podporu CPU, vyuˇz´ıv´a QEMU (podobnˇe jako KVM) na emulaci hardware (BIOS, IDE, VGA, USB, s´ıt’ov´a karta, . . . ). Nen´ı vyˇzadov´ana spolupr´ace hostitelsk´eho syst´emu. 8 9
V´ıce informac´ı o slouˇcen´ı na: http://www.redhat.com/promo/qumranet/ Detaily: http://www.redhat.com/products/cloud-computing/virtualization/
8
Virtualizace
2.3.3
Virtualizaˇcn´ı syst´emy
VMware
Spoleˇcnost VMware se virtualizac´ı zab´ yv´a jiˇz od roku 1998, pˇriˇcemˇz prvn´ı verze hypervizoru ESX byla vyd´ana v roce 2001. Skl´ad´a se z vlastn´ıho j´adra vmkernel a servisn´ı konzole, pˇriˇcemˇz ovladaˇce ostatn´ıch zaˇr´ızen´ı, kter´e jsou odvozeny z ovladaˇc˚ u pro OS Linux, jsou tak´e souˇc´ast´ı hypervizoru. Jelikoˇz nepotˇrebuje k bˇehu jin´ y operaˇcn´ı syst´em, oznaˇcujeme ho jako typ 1. [41] Velkou v´ yhodou jsou pokroˇcil´e funkce s pamˇet´ı RAM10 , kdy je vyuˇz´ıv´ano situace, ˇze virtu´aln´ı servery m´alokdy alokuj´ı veˇskerou pˇridˇelenou RAM. Hypervizor ESX umoˇzn ˇuje pˇridˇelit server˚ um v souˇctu v´ıce pamˇeti, neˇz je na serveru dostupn´e. Obr. 2.3 ilustruje, jak hypervizor do 4 GB fyzick´e pamˇeti ukl´ad´a bloky pamˇeti z virtu´aln´ıch server˚ u.
Obr´azek 2.3: Pr´ace s pamˇet´ı u VMware ESX Zdroj: [54]
V´ yˇse uveden´e ˇreˇsen´ı je pak jeˇstˇe vylepˇseno technologi´ı Transparent Page Sharing (TPS), kter´a vyuˇz´ıv´a faktu, ˇze spuˇstˇen´e virtu´aln´ı servery maj´ı ˇcasto v pamˇeti identick´e bloky (stejn´e aplikace, stejn´ y OS, . . . ). D´ıky t´eto technologii jsou eliminov´any duplicity a ve fyzick´e pamˇeti jsou uloˇzeny identick´e bloky jen jednou. [54] Jde o komerˇcn´ı software, jehoˇz cena se pohybuje v ˇr´adech tis´ıcovek EUR. Vzhledem ke sv´e historii a technick´e vyspˇelosti je velmi siln´ ym hr´aˇcem na trhu virtualizace. VMware je popul´arn´ı pˇredevˇs´ım mezi takov´ ymi z´akazn´ıky, kter´ ym z´aleˇz´ı mnohem v´ıc na znaˇcce, z´aruce a komerˇcn´ı podpoˇre neˇz na cenˇe ˇreˇsen´ı. [17] VMware d´av´a k dispozici zdarma vSphere Hypervisor11 , kter´ y umoˇzn ˇuje 10 11
Random-Access Memory Detaily zde: http://www.vmware.com/cz/products/vsphere-hypervisor/
9
Virtualizace
Porovn´an´ı a v´ybˇer
provozovat virtualizaci v omezen´em rozsahu (nefunkˇcn´ı ˇziv´a migrace, omezen´ı na poˇcet jader CPU, omezen´ı na velikost pamˇeti RAM).
2.3.4
Hyper-V
Hyper-V je virtualizaˇcn´ı technologie Microsoftu s hypervizorem typu 1, kter´a umoˇzn ˇuje plnou virtualizaci a paravirtualizaci. Prvn´ı verze byla vyd´ana v roce 2008 (coˇz z n´ı ˇcin´ı nejmladˇs´ı srovn´avanou technologii) a je k dispozici bud’ jako souˇca´st produktu Windows Server (2008 i 2012) nebo jako samostatn´ y OS Hyper-V Server (2008 i 2012). Jak je patrn´e, jde o komerˇcn´ı produkt a bˇeˇzn´a licence Windows Server 2012 R2 Datacenter stoj´ı 6155 USD12 (cena platn´a v dubnu 2014). Samotn´ y Hyper-V Server je dostupn´ y zdarma, avˇsak bez jak´ ychkoliv n´astroj˚ u pro spr´avu a bez uˇzivatelsk´eho rozhran´ı – je moˇzn´a pouze vzd´alen´a spr´ava, avˇsak n´astroje pro spr´avu od Microsoftu jsou placen´e.
2.4
Porovn´ an´ı a v´ ybˇ er
IBM publikovala studii o virtualizaci [27], ve kter´e zjiˇst’uje n´aklady TCO13 na 3 roky provozu u enterprise ˇreˇsen´ı virtualizac´ı. Bylo srovn´av´ano KVM, VMware a Microsoft Hyper-V. V´ ysledkem je, ˇze aˇckoliv byla u KVM zahrnuta cena licenc´ı pro Red Hat Enterprise Linux a IBM Systems Director (kter´ y by se dal v naˇsem kontextu povaˇzovat za zbytn´ y), st´ale vych´az´ı v celkov´em TCO levnˇeji neˇz srovnateln´a konkurence. D´a se oˇcek´avat, ˇze n´aklady pro XEN budou na podobn´e u ´rovni jako pro KVM. Zadavatel ve sv´ ych poˇzadavc´ıch specifikoval pˇra´n´ı, aby zvolen´e ˇreˇsen´ı nebylo zat´ıˇzeno licenˇcn´ımi poplatky a omezen´ımi. Pokud ho budeme respektovat, je nutn´e ze srovn´an´ı vyˇradit VMware i Hyper-V (kter´e sice maj´ı tak´e verze zdarma, ale jsou omezen´e). I kdyby tento poˇzadavek neexistoval, na z´akladˇe v´ yˇse uveden´eho porovn´an´ı vypl´ yv´a, ˇze by tyto technologie nebyly ekonomicky v´ yhodn´e. 12
http://www.microsoft.com/en-us/server-cloud/products/ windows-server-2012-r2/buy.aspx 13 Total Cost of Ownership
10
Virtualizace
Porovn´an´ı a v´ybˇer
Obr´azek 2.4: Srovn´an´ı 3let´eho TCO u zvolen´ ych virtualizaˇcn´ıch technologi´ı Zdroj: [27]
Zb´ yv´a se tedy rozhodnout mezi KVM a XEN. V dneˇsn´ı dobˇe jsou obˇe technologie na velmi podobn´e technick´e u ´rovni, avˇsak pro KVM hovoˇr´ı fakt, ˇze je jiˇz 7 let standardn´ı souˇc´ast´ı linuxov´eho j´adra a to mu zaruˇcuje ˇsirokou podporu napˇr´ıˇc r˚ uzn´ ymi distribucemi. Komunity firem i uˇzivatel˚ u tak´e d´avaj´ı st´ale ˇcastˇeji pˇrednost KVM pˇred XENem. [17] Autor t´eto pr´ace doporuˇcuje zvolit KVM jako virtualizaˇcn´ı technologii pro pouˇzit´ı v praktick´e ˇc´asti.
11
3 Cloud computing V t´eto kapitole bude pˇredstavena historie a definov´any z´akladn´ı pojmy z oblasti cloud computingu. Budou zde tak´e rozebr´any modely nasazen´ı cloudu a pops´any sluˇzby, kter´e m˚ uˇze poskytovat. Samostatn´a podkapitola je pak vˇenov´ana v´ yhod´am, obav´am a pˇrek´aˇzk´am pˇri vyuˇz´ıv´an´ı cloudu. Z´avˇereˇcn´a ˇc´ast pod´av´a pˇrehled softwarov´ ych platforem pro ˇr´ızen´ı cloudu, je provedeno jejich zhodnocen´ı a zvoleno ˇreˇsen´ı k implementaci v praktick´e ˇc´asti.
3.1
Historie
Myˇslenka sd´ılen´ı v´ ypoˇcetn´ıch sluˇzeb pˇres poˇc´ıtaˇcovou s´ıt’ sah´a aˇz do 60. let 20. stolet´ı, kdy byly v´ ypoˇcetn´ı sluˇzby poskytov´any na s´alov´ ych poˇc´ıtaˇc´ıch (mainframech) vybran´e skupinˇe uˇzivatel˚ u, kteˇr´ı se dˇelili o v´ ypoˇcetn´ı ˇcas. Profesor John McCarthy v roce 1961 vyslovil na sv´e pˇredn´aˇsce n´azor, ˇze (poˇc´ıtaˇcov´e) v´ ypoˇcty mohou b´ yt v budoucnu poskytov´any jako veˇrejn´a ” sluˇzba stejnˇe jako telefon“ [20] a tak´e prvnˇe pouˇzil pojem utility computing. V roce 1966 publikoval Douglas F. Parkhill knihu The Challenge of the Computer Utility, ve kter´e poskytov´an´ı v´ ypoˇcetn´ıho v´ ykonu pˇres s´ıt’ pˇrirovn´av´a k poskytov´an´ı elektrick´e energie. Dom´acnosti a firmy potˇrebuj´ı elektrickou energii, avˇsak t´emˇeˇr nikdo si kv˚ uli t´eto potˇrebˇe nebude poˇrizovat vlastn´ı elektr´arnu. V t´eto dobˇe vˇsak ˇslo vesmˇes o vizion´aˇrsk´e myˇslenky, kter´e nebylo moˇzn´e vzhledem ke stavu infrastruktury realizovat. [40] Po vypuknut´ı internetov´e horeˇcky1 na pˇrelomu tis´ıcilet´ı sehr´ala kl´ıˇcovou roli ve v´ yvoji spoleˇcnost Amazon, kter´a provedla z´asadn´ı modernizaci sv´ ych datov´ ych center. Zjistila totiˇz, ˇze po vˇetˇsinu ˇcasu bylo vyuˇz´ıv´ano cca. jen 10 % instalovan´e v´ ypoˇcetn´ı kapacity a zbytek z˚ ust´aval nevyuˇzit pro pokryt´ı ˇspiˇcek. [25] Vyvinula a v roce 2006 ofici´alnˇe spustila platformu Amazon Web Services (AWS), kter´a poskytuje v´ ypoˇcetn´ı v´ ykon ˇsirok´e veˇrejnosti. [1] Cloud zaˇc´ın´a nab´ızet st´ale v´ıce firem, v roce 2011 oznamuje IBM spuˇstˇen´ı 1
Oznaˇcen´ı pro obdob´ı hromadn´eho rozkvˇetu internetov´ ych firem, kter´e nemˇely promyˇslen´ y obchodn´ı model a brzy zkrachovaly. Toto obdob´ı prob´ıhalo pˇribliˇznˇe v letech 1996 aˇz 2001.
12
Cloud computing
Definice a charakteristika
IBM SmartCloud2 a o rok pozdˇeji Oracle spouˇst´ı sv˚ uj Oracle Cloud3 . V posledn´ıch letech roste odvˇetv´ı tempem pˇres 10 % p.a. [18]
3.2
Definice a charakteristika
Pojem cloud computing (d´ale jen CC) poprv´e definoval v roce 1997 prof. Chellappa jako v´ ypoˇcetn´ı paradigma, jehoˇz hranice budou urˇceny sp´ıˇse eko” nomick´ ymi, neˇz technick´ ymi limity.“ [8] Inˇzen´ yˇri z Kalifornsk´e univerzity v Berkeley pˇriˇsli v roce 2009 s mnohem obs´ahlejˇs´ı definic´ı. Term´ın Cloud Computing odkazuje jak na aplikace po” skytovan´e jako sluˇzby pˇres Internet, tak na hardware a syst´emov´ y software v datacentrech, kter´e tyto sluˇzby poskytuj´ı. Samotn´e sluˇzby jsou oznaˇcov´any jako Software jako sluˇzba (Software as a Service; SaaS), term´ınem Cloud oznaˇcujeme samotn´ y hardware a software v datacentrech. Pokud je Cloud nab´ızen v reˇzimu pay-as-you-go ˇsirok´e veˇrejnosti, naz´ yv´ame ho Veˇrejn´ym cloudem (Public cloud), pˇriˇcemˇz samotnou pronaj´ımanou sluˇzbu oznaˇcujeme jako Utility Computing. Term´ın Priv´atn´ı cloud (Private cloud) pouˇz´ıv´ame pro datacentra firem ˇci organizac´ı, kter´e nejsou nab´ızena ˇsirok´e veˇrejnosti. Cloud Computing se d´a vyj´adˇrit jako souˇcet SaaS a Utility Computing.“ [2] Zat´ımco definice utility computingu neobsahovala ˇz´adnou zm´ınku o u ´platn´em provozu, t´emˇeˇr vˇsechny definice CC jiˇz zahrnuj´ı model plateb pay-asyou-go (ˇci pay-per-use). Tedy model, kdy uˇzivatel plat´ı pouze za skuteˇcnˇe spotˇrebovan´e prostˇredky (v´ ypoˇcetn´ı v´ ykon, objem uloˇzen´ ych dat, . . . ). Finanˇcn´ı aspekt zd˚ urazˇ nuje Reese [44], kter´ y uv´ad´ı tyto parametry: • Sluˇzba je pˇr´ıstupn´a pˇres webov´ y prohl´ıˇzeˇc nebo webov´e API4 . • Pro spuˇstˇen´ı sluˇzby nen´ı nutn´e m´ıt poˇca´teˇcn´ı kapit´al. • Plat´ı se pouze za spotˇrebovan´e zdroje. Americk´ y NIST (National Institute of Standards and Technology), zavedl definici [32] cloud computingu, kter´a je uzn´av´ana vl´adou USA: 2
Detaily na: http://www.ibm.com/cloud-computing/us/en/ V´ıce na: https://cloud.oracle.com 4 Application Programming Interface 3
13
Cloud computing
Dˇelen´ı podle modelu nasazen´ı
Cloud computing je model, kter´ y umoˇzn ˇuje v´ yhodn´ y s´ıt’ov´ y pˇr´ıstup ke ” sd´ılen´ ym v´ ypoˇcetn´ım prostˇredk˚ um (napˇr. s´ıt’, servery, datov´e sklady, aplikace a sluˇzby) a kter´ y m˚ uˇze b´ yt rychle zpˇr´ıstupnˇen s minim´aln´ı spoluprac´ı poskytovatele sluˇzby.“ ˇ e republice, naraz´ıme Pokud se pod´ıv´ame na to, jak term´ın definuj´ı v Cesk´ ˇ na definici autor˚ u Burkonˇe a Sebesty z Katedry informaˇcn´ıch technologi´ı na ˇ VSE: Cloud computing zahrnuje dod´avku virtualizovan´ ych IT zdroj˚ u jako ” sluˇzbu pˇres Internet. Sluˇzby CC jsou dod´av´any ˇsk´alovateln´ ym a bezpeˇcn´ ym zp˚ usobem ze vzd´alen´ ych datov´ ych center a jsou zpoplatˇ nov´any modelem skuteˇcn´e spotˇreby pay-as-you-use. Dˇel´ıme je na sluˇzby infrastruktury (IaaS), sluˇzby platformy (PaaS) a sluˇzby softwaru (SaaS).“ [16] Tato definice obdobnˇe jako pˇredchoz´ı zmiˇ nuje zpoplatnˇen´ı podle skuteˇcn´e spotˇreby a pˇr´ıstup pˇres Internet. Nav´ıc ale zd˚ urazˇ nuje virtualizaci zdroj˚ u, coˇz je spoleˇcn´ ym znakem a podstatou cloudov´ ych sluˇzeb. Jak je patrn´e, nepanuje obecn´a shoda ohlednˇe pˇresn´e definice CC a ˇcasto jsou tak´e velmi v´agn´ı - napˇr. definice NIST uv´ad´ı (ekonomicky) v´ yhodn´ y ” pˇr´ıstup“, coˇz si lze vykl´adat r˚ uzn´ ymi zp˚ usoby. Pro u ´ˇcely t´eto pr´ace se rozhodl autor povaˇzovat za CC takovou sluˇzbu, kter´a splˇ nuje tyto body: • Poskytuje virtualizovan´e IT zdroje pˇres poˇc´ıtaˇcovou s´ıt’. • Je zpoplatnˇena za skuteˇcn´e vyuˇzit´ı zdroj˚ u. • Pˇridˇelen´e zdroje lze snadno mˇenit (navyˇsovat ˇci sniˇzovat). • Zˇr´ızen´ı je plnˇe automatick´e.
3.3
Dˇ elen´ı podle modelu nasazen´ı
Cloudy m˚ uˇzeme rozdˇelit podle toho, kdo ho vlastn´ı a spravuje. Toto rozdˇelen´ı vych´az´ı z definice dle NIST [32] a ilustruje ho obr. 3.1: • Public (veˇrejn´ y) cloud • Private (priv´atn´ı) cloud 14
Cloud computing
Dˇelen´ı podle modelu nasazen´ı
• Hybrid (hybridn´ı) cloud • Community (komunitn´ı) cloud
Obr´azek 3.1: Rozdˇelen´ı cloud˚ u podle modelu nasazen´ı Zdroj: [12]
3.3.1
Public cloud
Patrnˇe nejpouˇz´ıvanˇejˇs´ı variantu nasazen´ı pˇredstavuje veˇrejn´ y, nˇekdy tak´e oznaˇcovan´ y jako extern´ı cloud. Koncov´ı uˇzivatel´e (organizace) pˇristupuj´ı pˇres Internet ke vzd´alen´emu poskytovateli, kter´ y poskytuje cloudov´e sluˇzby. Obvykle jde o sd´ılen´ y princip, kdy je sluˇzba poskytov´ana vˇetˇs´ımu mnoˇzstv´ı uˇzivatel˚ u (multi-tenancy) a zpoplatnˇena podle skuteˇcn´eho vyuˇzit´ı zdroj˚ u. Tento model je ˇsiroce akceptov´an a adaptov´an ˇradou firem. Velc´ı hr´aˇci jako Amazon, Microsoft5 nebo Google6 disponuj´ı silnou infrastrukturou s mnoha datov´ ymi centry, ˇc´ımˇz umoˇzn ˇuj´ı uˇzivatel˚ um flexibilnˇe ˇsk´alovat zdroje s n´ızk´ ymi n´aklady. [19] Nelze urˇcit, na jak´em hardware a odkud je sluˇzba poskytov´ana, coˇz je zejm´ena pro firmy a organizace ˇcasto z´asadn´ı probl´em zejm´ena v n´avaznosti 5 6
http://www.microsoft.com/ http://www.google.com/
15
Cloud computing
Dˇelen´ı podle modelu nasazen´ı
ˇ a EU. Napˇr´ıklad Z´akon o ochranˇe osobn´ıch u na legislativu CR ´daj˚ u pomˇernˇe striktnˇe specifikuje podm´ınky, pod kter´ ymi je moˇzn´e osobn´ı u ´daje zpracoˇ Nˇekter´e z nich, napˇr´ıklad nutnost ohl´asit Uˇ ´ radu pro v´avat mimo u ´zem´ı CR. ochranu osobn´ıch u ´daj˚ u vˇsechna m´ısta, kde m˚ uˇze doch´azet ke zpracov´an´ı (ukl´ad´an´ı) citliv´ ych u ´daj˚ u, mohou pˇredstavovat pomˇernˇe z´asadn´ı probl´em v pˇr´ıpadˇe vyuˇzit´ı velk´ ych cloud˚ u rozm´ıstˇen´ ych po cel´em svˇetˇe.
3.3.2
Private cloud
T´ımto term´ınem je oznaˇcov´an takov´ y cloud, kter´ y je pˇr´ıstupn´ y pouze dan´emu uˇzivateli (organizaci). M˚ uˇze b´ yt fyzicky um´ıstˇen v prostor´ach uˇzivatele (inhouse) nebo externˇe (hosted), spravov´an internˇe nebo externˇe. Uˇzivatel je k nˇemu obvykle pˇripojen dostateˇcnˇe rychlou a nesd´ılenou linkou. Existuje n´azor, ˇze nejde o cloud jako takov´ y [19], protoˇze nedoch´az´ı ke sd´ılen´ı fyzick´e infrastruktury mezi v´ıce uˇzivateli a t´ım je sn´ıˇzena efektivita, kter´e dosahuje veˇrejn´ y cloud. Vzhledem k tomu, ˇze je k dispozici pouze pˇredem objednan´a kapacita, odpad´a tak´e v´ yhoda snadn´e ˇsk´alovatelnosti ve srovn´an´ı s veˇrejn´ ym cloudem. Naopak d´ıky faktu ˇze nedoch´az´ı ke sd´ılen´ı s jin´ ymi uˇzivateli stoup´a bezpeˇcnost ˇreˇsen´ı. Toto ˇreˇsen´ı je uˇziteˇcn´e pˇredevˇs´ım pro citliv´e vnitrofiremn´ı aplikace, kde by bylo naruˇsen´ı bezpeˇcnosti nebo stability (napˇr. sousedn´ım uˇzivatelem) velk´ y probl´em. Lze pˇresnˇe urˇcit, na kter´em konkr´etn´ım hardware je sluˇzba poskytov´ana a odkud je poskytov´ana. V´ yznamovˇe m´a tedy velmi bl´ızko ke klasick´emu server hostingu, od kter´eho se ale odliˇsuje pouˇzit´ım virtualizace. Je vhodn´ y zejm´ena pro velk´e organizace, kter´e si mohou dovolit velk´e investice do IT a tak´e tam, kde je nutn´e udrˇzet naprostou kontrolu nad vˇsemi prvky infrastruktury. Pro nˇekter´e pˇr´ıpady uˇzit´ı (intentivn´ı v´ ypoˇcty, . . . ) se m˚ uˇze uk´azat, ˇze je poˇr´ızen´ı priv´atn´ıho cloudu vyjde v uvaˇzovan´em horizontu levnˇeji neˇz vyuˇzit´ı veˇrejn´eho cloudu.
16
Cloud computing
Dˇelen´ı podle modelu nasazen´ı
Public cloud Poˇ c´ ateˇ cn´ı n´ aklady ˇz´adn´e ´ vyuˇzit´e zdroje Uˇ ctov´ an´ı za Sd´ılen´ı infrastruktury ano Flexibilita ˇ sk´ alovatelnosti vysok´a
Private cloud vysok´e dostupnou kapacitu ne n´ızk´a
Tabulka 3.1: Shrnut´ı rozd´ıl˚ u mezi public a private cloudem Zdroj: vlastn´ı zpracov´ an´ı
3.3.3
Hybrid cloud
Hybridn´ı cloud pˇredstavuje spojen´ı veˇrejn´eho a priv´atn´ıho cloudu. Uˇzivatel vyuˇzit´ım tohoto modelu spojuje v´ yhody obou ˇreˇsen´ı. Citliv´e vnitrofiremn´ı aplikace s kritick´ ymi daty budou provozov´any na priv´atn´ım cloudu, aby nad nimi organizace udrˇzela plnou kontrolu a m´enˇe citliv´e ˇca´sti aplikace pˇresune na veˇrejn´ y cloud, kde vyuˇzije zejm´ena v´ yhody niˇzˇs´ı ceny a lepˇs´ı celosvˇetov´e dostupnosti. [53] Dalˇs´ım pˇr´ıpadem uˇzit´ı je situace, kdy bˇeˇzn´ y provoz je odbaven priv´atn´ım cloudem a veˇrejn´ y je vyuˇzit pro pokryt´ı ˇspiˇcek, kv˚ uli kter´ ym by bylo nutn´e navyˇsovat kapacitu priv´atn´ıho cloudu. Obr´azek 3.2 ilustruje pˇr´ıklad hybridn´ıho cloudu, kde podnik vyuˇz´ıv´a jeden priv´atn´ı cloud a tˇri veˇrejn´e, pˇriˇcemˇz kaˇzd´ y cloud obsluhuje jinou ˇc´ast aplikac´ı.
3.3.4
Community cloud
O komunitn´ım cloudu lze uvaˇzovat jako o mezistupni mezi veˇrejn´ ym a priv´atn´ım cloudem. Je urˇcen k v´ yhradn´ımu uˇz´ıv´an´ı pˇredem dan´e skupinˇe organizac´ı, kter´e maj´ı podobn´e z´ajmy a poˇzadavky (napˇr. v ot´azce zabezpeˇcen´ı). ˇ Casto jde o firmy nˇejak´ ym zp˚ usobem propojen´e ˇci spˇr´ıznˇen´e. M˚ uˇze b´ yt spravov´an externˇe, jednou z firem v komunitˇe nebo spoleˇcn´ ymi silami. V´ yhodou je sn´ıˇzen´ı n´aklad˚ u oproti priv´atn´ımu cloudu.
17
Cloud computing
Dˇelen´ı podle typu sluˇzby
Obr´azek 3.2: Rozdˇelen´ı cloud˚ u podle modelu nasazen´ı Zdroj: [19]
3.4
Dˇ elen´ı podle typu sluˇ zby
Na CC m˚ uˇzeme nahl´ıˇzet jako na kolekci sluˇzeb, kterou lze zn´azornit vrstvenou architekturou, jak ilustruje obr´azek 3.3.
3.4.1
Infrastructure as a Service
Pojmem IaaS7 oznaˇcujeme pron´ajem v´ ypoˇcetn´ıch prostˇredk˚ u, tedy garantovan´eho v´ ykonu procesoru, operaˇcn´ı pamˇeti, diskov´eho prostoru a pˇripojen´ı k internetu. Z´akazn´ıkovi je k dispozici virtualizovan´a IT infrastruktura bez nutnosti zakupovat vlastn´ı hardware. V´ yhodou je snadn´a ˇsk´alovatelnost a platba pouze za vyuˇzit´e zdroje. V praxi si lze pod t´ımto pojmem pˇredstavit napˇr´ıklad veˇrejnou sluˇzbu Amazon EC28 , Windows Azure9 ˇci Google Compute Engine10 . Kapitola 3.7 7
Infrastructure as a Service https://aws.amazon.com/ec2/ 9 http://azure.microsoft.com/ 10 https://cloud.google.com/products/compute-engine/ 8
18
Cloud computing
Dˇelen´ı podle typu sluˇzby
Obr´azek 3.3: Vrstvy cloud computingu Zdroj: [43]
se podrobnˇeji zab´ yv´a softwarem pro realizaci IaaS v r´amci priv´atn´ıho cloudu.
3.4.2
Platform as a Service
PaaS11 je souhrn v´ yvojov´ ych n´astroj˚ u, datab´az´ı a v´ ypoˇcetn´ıch prostˇredk˚ u speci´alnˇe pˇripraven´ ych pro v´ yvoj a bˇeh cloudov´ ych aplikac´ı. Lze si ho pˇredstavit jako IaaS + specifick´a softwarov´a platforma a prim´arnˇe je urˇcen pro softwarov´e v´ yvoj´aˇre. Pˇr´ıkladem jsou sluˇzby jako Heroku, Salesforce ˇci Google App Engine.
3.4.3
Software as a Service
Nad ostatn´ımi vrstvami (viz obr. 3.3) se nach´az´ı SaaS12 . Tento term´ın byl pouˇz´ıv´an jeˇstˇe pˇred n´astupem CC a oznaˇcuje pron´ajem aplikac´ı, kter´e jsou 11 12
Platform as a Service Software as a Service
19
Cloud computing
V´yhody
poskytov´any vzd´alenˇe uˇzivateli. Pro jejich vyuˇz´ıv´an´ı nen´ı nutn´e, aby mˇel uˇzivatel nainstalov´an nˇejak´ y specifick´ y software, obvykle si vystaˇc´ı s bˇeˇzn´ ym internetov´ ym prohl´ıˇzeˇcem. Jako pˇr´ıklad lze uv´est webov´e rozhran´ı pro pr´aci s poˇstou (WebMail), kdy nen´ı nutn´e instalovat samostatn´ y poˇstovn´ı program a je moˇzn´e pracovat s e-mailovou schr´ankou. D´ale lze zm´ınit r˚ uzn´e CRM13 syst´emy ˇci kancel´aˇrsk´e bal´ıky (Google Docs, Office 365). S n´astupem CC se jako z´aklad pro SaaS jev´ı virtu´aln´ı infrastruktura a niˇzˇs´ı vrstvy cloudu. [53]
3.5
V´ yhody
V t´eto kapitole rozebereme v´ yhody plynouc´ı ze zaveden´ı cloud computingu.
Finanˇ cn´ı u ´ spory Jak jiˇz bylo uv´adˇeno na pˇr´ıkladu firmy Amazon [25], v pˇr´ıpadˇe konvenˇcn´ıch datov´ ych center existuje nezanedbateln´e mnoˇzstv´ı nevyuˇzit´eho v´ ykonu. Nasazen´ım CC a virtualizace se zvyˇsuje efektivita vyuˇzit´ı zdroj˚ u. ˇ alovatelnost Sk´ CC poskytuje velkou flexibilitu, kdy je moˇzn´e snadno upravovat mnoˇzstv´ı dostupn´ ych zdroj˚ u s ˇz´adn´ ym nebo minim´aln´ım v´ ypadkem sluˇzby. D´ıky modelu plateb za vyuˇzit´e zdroje tak´e odpadaj´ı fixn´ı n´aklady a nutnost pl´anovat v´ ykon na dlouhou dobu dopˇredu.
Sn´ıˇ zen´ı rizika Pouˇzit´ım CC lze tak´e pˇren´est ˇc´ast rizika od z´akazn´ıka smˇerem k poskytovateli. Nejde jen o podcenˇen´ı pl´anov´an´ı, kdy v pˇr´ıpadˇe tradiˇcn´ıch server˚ u nen´ı moˇzn´e flexibilnˇe nav´ yˇsit kapacitu a t´ım p´adem riskovat nedostupnost ˇci v´ ypadky sluˇzby. Je tu tak´e bezpeˇcnostn´ı riziko, kdy lze oˇcek´avat, ˇze velc´ı poskytovatel´e 13
Customer relationship management
20
Cloud computing
Obavy, pˇrek´aˇzky
cloudu maj´ı technologie zabezpeˇceny v´ yraznˇe l´epe neˇz bˇeˇzn´a menˇs´ı firma a podstupuj´ı tak´e pravidelnˇe bezpeˇcnostn´ı audity. Nemus´ı to samozˇrejmˇe platit ve vˇsech pˇr´ıpadech.
Sn´ıˇ zen´ı z´ atˇ eˇ ze Outsourcov´an´ım IT sluˇzeb je sn´ıˇzena z´atˇeˇz zamˇestnanc˚ u firmy, kteˇr´ı se pak mohou specializovat na hlavn´ı pˇredmˇet sv´eho podnik´an´ı.
3.6
Obavy, pˇ rek´ aˇ zky
Nasazen´ı CC sebou pˇrin´aˇs´ı tak´e obavy a nˇekdy tak´e pˇrek´aˇzky, se kter´ ymi je tˇreba poˇc´ıtat a minimalizovat je.
Bezpeˇ cnost a riziko Pravdˇepodobnˇe nejvˇetˇs´ı obavu pˇredstavuje fakt, ˇze citliv´a data jsou v rukou poskytovatele sluˇzby a to ˇcasto v prostˇred´ı, kter´e je sd´ıleno s nˇekolika (nˇekdy i tis´ıci) dalˇs´ımi klienty. Je tˇreba zv´aˇzit, jestli je zvolen´ y poskytovatel dostateˇcnˇe d˚ uvˇeryhodn´ y, aby u ´myslnˇe ˇci ne´ umyslnˇe nezneuˇzil svˇeˇren´a data. [46]
Z´ avislost a dostupnost Uˇzivatel je plnˇe z´avisl´ y na vybran´em poskytovateli a v pˇr´ıpadˇe probl´em˚ u na jeho stranˇe se to projev´ı i v dostupnosti a kvalitˇe vyuˇz´ıvan´ ych sluˇzeb. Aˇckoliv se cloudov´e sluˇzby obecnˇe povaˇzuj´ı za velmi stabiln´ı, jiˇz existuj´ı pˇr´ıpady, kdy i velc´ı poskytovatel´e mˇeli z´avaˇzn´e probl´emy s provozem.
Z´ akonn´ e poˇ zadavky V kapitole 3.3.1 jsme podrobnˇeji rozebrali situaci, kdy je ze z´akona vyˇzadov´ana urˇcit´a moˇznost kontroly nad m´ıstem, kde jsou data uloˇzena. To v pˇr´ıpadˇe velk´ ych geograficky rozdˇelen´ ych cloud˚ u pˇredstavuje probl´em. 21
Cloud computing
3.7
Softwarov´e platformy pro IaaS
Softwarov´ e platformy pro IaaS
V t´eto podkapitole postupnˇe rozebereme nˇekolik platforem pro poskytov´an´ı IaaS. Kl´ıˇcem k jejich zaˇrazen´ı do tohoto pˇrehledu byla v prvn´ı ˇradˇe podpora KVM, protoˇze vych´az´ıme z kapitoly 2.4, kde jsme zvolili KVM jako virtualizaˇcn´ı infrastrukturu pro n´aˇs n´avrh.
3.7.1
Apache CloudStack
Vznikl v roce 2008, tehdy jeˇstˇe pod firmou VMOps (pozdˇeji pˇrejmenovanou na Cloud.com). V roce 2010 byla vˇetˇsina k´odu uvolnˇena pod licenc´ı GPLv3. O nˇeco pozdˇeji doˇslo k odkoupen´ı firmou Citrix, kter´a uvolnila zbytek k´odu pod stejnou licenc´ı. V dubnu 2012 pak cel´ y bal´ık zmˇenil licenci na ASLv2 a byl vˇenov´an do spr´avy Apache, kde je dodnes. [10] Tento krok mˇel za c´ıl vˇetˇs´ı rozˇs´ıˇren´ı a zrychlen´ı v´ yvoje, na kter´em se Citrix nad´ale pod´ıl´ı a na z´akladech CloudStacku postavil sv˚ uj produkt Citrix CloudPlatform. CloudStack podporuje hypervizory VMware, KVM, XenServer, Xen Cloud Platform (XCP) a Hyper-V. Skl´ad´a se ze dvou hlavn´ıch ˇc´ast´ı: • Management Server, kter´ y se star´a o spr´avu zdroj˚ u (´ uloˇziˇstˇe, IP adresy, hostitelsk´e servery, . . . ). • Computing Server, kter´ y pˇredstavuje v´ ypoˇcetn´ı ˇca´st cloudov´e infrastruktury a kter´ y je ˇr´ızen management serverem.
3.7.2
Eucalyptus
Eucalyptus je open-source platforma, kter´a si klade za c´ıl sluˇcovat existuj´ıc´ı virtualizovanou infrastrukturu k vytv´aˇren´ı cloudov´ ych zdroj˚ u pro poskytov´an´ı sluˇzeb pˇres poˇc´ıtaˇcovou s´ıt’. [15] Byl zaloˇzen na University of California, Santa Barbara a v roce 2009 se transformoval do firmy Eucalyptus Systems. V roce 2012 doˇslo k podpisu dohody s Amazon Web Services, kter´a umoˇzn ˇuje pˇresouvat virtu´aln´ı servery 22
Cloud computing
Softwarov´e platformy pro IaaS
mezi priv´atn´ım cloudem Eucalyptus a veˇrejn´ ym cloudem Amazon EC2, coˇz usnadˇ nuje vytvoˇren´ı, spr´avu a vyuˇz´ıv´an´ı hybridn´ıho cloudu. [24] Je kompatibiln´ı s Amazon Web Services (AWS) a Amazon S3, jeho API je kompatibiln´ı s Amazon EC2 a umoˇzn ˇuje vyuˇz´ıvat hypervizory VMware, XEN a KVM. Skl´ad´a se z pˇeti hlavn´ıch komponent, kter´e zachycuje obr. 3.4: [14] • Cloud Controller – zajiˇst’uje rozhran´ı pro komunikaci ve formˇe API i webov´eho port´alu, pl´anov´an´ı a u ´ˇctov´an´ı zdroj˚ u. • Cluster Controller – komunikuje se Storage a Node controllerem, spravuje instance virtu´aln´ıch stroj˚ u a star´a se o dodrˇzov´an´ı SLA. • Node Controller – hostuje virtu´aln´ı stroje a zajiˇst’uje jejich vytv´aˇren´ı, spravuje s´ıt’ov´e rozhran´ı. • Storage Controller – spravuje blokov´a zaˇr´ızen´ı a snapshoty v r´amci cloudu. • Walrus – ekvivalent k Amazon S3, zajiˇst’uje perzistentn´ı u ´loˇziˇstˇe. Aˇz do roku 2011 Eucalyptus poh´anˇel Ubuntu Enterprise Cloud (UEC), kdy byl nahrazen OpenStackem.
3.7.3
OpenNebula
OpenNebula je n´astroj, kter´ y pom´ah´a virtualizovan´ ym datov´ ym centr˚ um dohl´ıˇzet na priv´atn´ı, veˇrejn´e a hybridn´ı cloudy. Nen´ı z´avisl´ y na konkr´etn´ı technologii, platformˇe nebo API - umoˇzn ˇuje pouˇz´ıvat hypervizory KVM, XEN nebo VMware. [24] Obr. 3.5 zobrazuje jeho architekturu. M. Llorente a Rub´en S. Montero zapoˇcali jeho v´ yvoj v roce 2005 na University of Madrid, nyn´ı je projekt spravov´an jako open-source. Prvn´ı veˇrejn´a verze byla uvolnˇena v roce 2008 a jde tak o nejstarˇs´ı open-source software na spr´avu cloudu. Podobnˇe jako CloudStack je tvoˇren dvˇema ˇc´astmi – ˇr´ıd´ıc´ım serverem (frontend) a v´ ypoˇcetn´ımi uzly.
23
Cloud computing
Softwarov´e platformy pro IaaS
Obr´azek 3.4: Architektura Eucalyptu Zdroj: [14]
Podporuje sd´ılen´e (NFS spuˇstˇen´e na SAN/NAS serveru) i nesd´ılen´e (lok´aln´ı) u ´loˇziˇstˇe, stejnˇe jako distribuovan´e souborov´e syst´emy jako GlusterFS14 a MooseFS15 . Umoˇzn ˇuje realizovat podobnˇe jako OpenStack virtu´aln´ı s´ıtˇe s fixn´ımi a plovouc´ımi IP adresami. Nab´ız´ı integrovan´ y firewall a podporu Open vSwitch. Jeho API je kompabitiln´ı s Amazonem. OpenNebula c´ıl´ı pˇredevˇs´ım na uˇzivatele vCloudu od VMware, kteˇr´ı nyn´ı tvoˇr´ı aˇz 70 % uˇzivatel˚ u. Verze 4.0 se pyˇsn´ı prohl´aˇsen´ım, ˇze nab´ız´ı okamˇzitou n´ahradu vCloudu, kter´a umoˇzn ˇuje kromˇe sn´ıˇzen´ı n´aklad˚ u tak´e podporu jin´ ych hypervizor˚ u. [34]
3.7.4
OpenStack
Ze zpracovan´eho pˇrehledu se jedn´a o nejmladˇs´ı platformu, kterou v roce 2010 spoleˇcnˇe zaloˇzili Rackspace a NASA. V souˇcasn´e dobˇe ji spravuje OpenStack Foundation a je pod licenc´ı Apache. Klade si za c´ıl poskytnout ˇreˇsen´ı pro 14 15
Detaily na: http://www.gluster.org/ V´ıce informac´ı na: http://www.moosefs.org/
24
Cloud computing
Softwarov´e platformy pro IaaS
Obr´azek 3.5: Architektura OpenNebuly Zdroj: [36]
vˇsechny typy cloud˚ u d´ıky snadn´e implementaci, vysok´e ˇsk´alovatelnosti a velk´emu mnoˇzstv´ı funkc´ı. [39] Aktu´alnˇe se na v´ yvoji pod´ıl´ı pˇres 9000 jednotlivc˚ u a 200 firem jako je Cisco, Dell, HP, IBM, Intel, Red Hat, SuSE, VMware ˇci Oracle a jejich poˇcet st´ale nar˚ ust´a. Ve srovn´an´ı s ostatn´ımi zm´ınˇen´ ymi syst´emy pro IaaS ˇc´ıt´a OpenStack nejvˇetˇs´ı komunitu pˇrispˇevatel˚ u, v´ yvoj´aˇr˚ u a uˇzivatel˚ u. [28] Skl´ad´a se z nˇekolika samostatn´ ych modul˚ u, pˇriˇcemˇz kaˇzd´ y z nich pln´ı jinou funkci a spoleˇcnˇe propojen´e pˇres otevˇren´e API tvoˇr´ı komplexn´ı ˇreˇsen´ı. Umoˇzn ˇuje se napojit a ˇr´ıdit ˇradu hardwarov´ ych prvk˚ u, od switche aˇz po diskov´a u ´loˇziˇstˇe, pˇriˇcemˇz pokud takov´e prvky nem´ame k dispozici nebo je nechceme pouˇz´ıt, lze vytvoˇrit enterprise ˇreˇsen´ı pouze pomoc´ı OpenStacku, kter´ y podporuje SDN (Open vSwich s OpenFlow) i softwarov´ y storage (iSCSI). Komponenty tvoˇr´ıc´ı j´adro (ve verzi Havana): • Horizon (dashboard, webov´ y port´al) 25
Cloud computing
Softwarov´e platformy pro IaaS
• Nova (v´ ypoˇcetn´ı uzel) • Neutron (s´ıt’ov´ y uzel) • Swift (objektov´e u ´loˇziˇstˇe) • Cinder (blokov´e u ´loˇziˇstˇe) • Keystone (spr´avce identit) • Glance (spr´avce obraz˚ u server˚ u) • Celiometer (vy´ uˇctov´an´ı zdroj˚ u) • Heat (automatizovan´a pˇr´ıprava instanc´ı) Aˇckoliv je KVM v´ ychoz´ım hypervizorem pro OpenStack [45], je jich podporov´ano mnohem v´ıce. Podpora je rozdˇelena do nˇekolika u ´rovn´ı: [38] • Skupina A: plnˇe podporovan´e, proˇslo unit testy a testov´an´ım funkˇcnosti, pˇr´ıpadn´e chyby jsou prioritnˇe opravov´any. Patˇr´ı sem libvirt (qemu/KVM na architektuˇre x86). • Skupina B: podporovan´e, proˇslo unit testy a testov´an´ım funkˇcnosti, chyby jsou hl´aˇseny autor˚ um a nen´ı z´aruka jejich oprav. Patˇr´ı sem Hyper-V, VMware a XenServer. • Skupina C: zastaral´e, budou brzy vyˇrazeny. Patˇr´ı sem baremetal, docker, Xen pˇres libvirt a LXC pˇres libvirt. Zaˇc´atkem roku 2014 se objevila ofici´aln´ı podpora OpenStacku ze strany VMware16 , kdy byla provedena pln´a integrace do jejich infrastruktury. D´ıky t´eto ofici´aln´ı podpoˇre a pˇred pˇripraven´emu obrazu pro nasazen´ı lze velmi snadno ovl´adat VMware cluster i pˇres OpenStack. Platforma se neust´ale rozv´ıj´ı s c´ılem nab´ıdnout v´ yhledovˇe i PaaS sluˇzby. Od verze Icehouse bude dostupn´a nov´a komponenta Trove, kter´a poskytne uˇzivatel˚ um datab´azov´e sluˇzby (relaˇcn´ı i nerelaˇcn´ı datab´aze) bez nutnosti instalovat a spravovat vlastn´ı datab´azov´ y server. V pˇr´ıpravˇe je tak´e komponenta Sahara zajiˇst’uj´ıc´ı jednoduchou pˇr´ıpravu Hadoop17 clusteru. 16
V´ıce informaci na: http://www.vmware.com/files/pdf/techpaper/ VMWare-Getting-Started-with-OpenStack-and-vSphere.pdf 17 http://hadoop.apache.org/
26
Cloud computing
Softwarov´e platformy pro IaaS
Dalˇs´ı vyv´ıjenou komponentou je Ironic, kter´a poskytne automatizaci spr´avy server˚ u bez virtualizace (bare metal), ˇc´ımˇz bude moˇzn´e zaˇclenit pod OpenStack i nevirtualizovan´e servery.
3.7.5
Zhodnocen´ı a v´ ybˇ er
Ze specifikace poˇzadavk˚ u je patrn´e, ˇze zvolen´e ˇreˇsen´ı mus´ı b´ yt otevˇren´e a modul´arn´ı ˇreˇsen´ı bez licenˇcn´ıch omezen´ı, jehoˇz provoz lze automatizovat, snadno ˇsk´alovat a pˇr´ıpadnˇe upravit pro zaˇclenˇen´ı do infrastruktury Z´apadoˇcesk´e univerzity v Plzni. ˇ neexistuje ˇza´dn´ Jelikoˇz v souˇcasn´e dobˇe na ZCU y management cloudu, nejsme sv´az´ani existuj´ıc´ım ˇreˇsen´ım. Z´aroveˇ n se jedn´a v prvn´ı ˇradˇe o provoz pro v´ yukov´e a v´ yzkumn´e u ´ˇcely, pro kter´e chceme vyuˇz´ıt modern´ı a aktivnˇe vyv´ıjenou platformu, kter´a disponuje nejnovˇejˇs´ı technologi´ı. Pokud se zamˇeˇr´ıme na aktu´aln´ı dˇen´ı v oblasti IaaS platforem pro priv´atn´ı cloud, nejv´ıce zmiˇ novan´ y pojem je OpenStack. Aˇc je historicky nejmladˇs´ı, za velmi kr´atk´ y ˇcas z´ıskal obrovskou popularitu a ˇsirokou z´akladnu uˇzivatel˚ ui v´ yvoj´aˇr˚ u. OpenStack vyuˇz´ıvaj´ı nejzn´amˇejˇs´ı firmy v oboru, je z´akladem ˇrady enterprise distribuc´ı jako SUSE Cloud, HP Public Cloud, IBM SmartCloud, Oracle Solaris ˇci Dell Red Hat Cloud. Evropsk´a organizace pro jadern´ y v´ yzkum CERN ned´avno ozn´amila [33], ˇze sv˚ uj obˇr´ı priv´atn´ı cloud (500 hypervizor˚ u, 11 000 virtu´aln´ıch server˚ u) pˇresunula z OpenNebuly pr´avˇe na OpenStack. Jako d˚ uvody pˇrechodu zm´ınila, ˇze chce syst´em s velkou ˇsk´alovatelnost´ı a nechce vyuˇz´ıvat OpenNebuly, kde by byli prvn´ı s takto velk´ ym cloudem. Dalˇs´ımi argumenty bylo vyuˇzit´ı ˇsirok´eho ekosyst´emu – podpory load balancingu a moˇznost vyuˇzit´ı automatizovan´e pˇr´ıpravy instanc´ı (obdoba sluˇzby Orchestration v OpenStacku, viz kap. 4.10.2), kter´ ymi OpenNebula nedisponuje. K OpenStacku se hl´as´ı tak´e biomedic´ınsk´a v´ yzkumn´a instituce Broad Institute of Harvard and MIT, kter´a ned´avno ozn´amila [5], ˇze na OpenStacku postavila sv˚ uj priv´atn´ı cloud pro v´ yzkumn´e u ´ˇcely – jedn´ım z projekt˚ u je v´ yzkum rakoviny, kde analyzuj´ı des´ıtky TB dat. Porovn´av´an´ım vybran´ ych platforem se jiˇz zab´ yvala ˇrada studi´ı a prac´ı, jmenovitˇe napˇr´ıklad Klep´aˇc, 2013 [29] nebo Jiang, 2014 [28]. Pr´avˇe druh´a zm´ınˇen´a studie se dlouhodobˇe zab´ yv´a sledov´an´ım velikosti a aktivity komunity v´ yvoj´aˇr˚ u u vybran´ ych projekt˚ u. V´ ysledkem je, ˇze OpenStack je nejvˇetˇs´ı a nejv´ıce aktivn´ı open-source projekt pro cloud computing. [6] Jedn´ım z mnoha 27
Cloud computing
Softwarov´e platformy pro IaaS
sledovan´ ych faktor˚ u v jeho studii je poˇcet aktivn´ıch ˇclen˚ u komunity (kter´ y je v´ıce neˇz dvojn´asobn´ y oproti ostatn´ım ˇreˇsen´ım) a mˇes´ıˇcn´ı poˇcet commit˚ u do zdrojov´eho k´odu (obr. 3.6). 3000
OpenStack OpenNebula Eucalyptus CloudStack
Figure 10 -- Monthly Git Commits 2500
2000
1500
1000
500
0 2009-04 2009-10 2010-04 2010-10 2011-04 2011-10 2012-04 2012-10 2013-04 2013-10 2009-01 2009-07 2010-01 2010-07 2011-01 2011-07 2012-01 2012-07 2013-01 2013-07 2013-12
Obr´azek 3.6: Poˇcet commit˚ u za mˇes´ıc Zdroj: [28]
Pokud budeme zkoumat vyuˇzit´ı cloudu na akademick´ ych instituc´ıch v ˇ CR, pak kromˇe velmi rozˇs´ıˇren´eho VMware (kter´ y ale nesplˇ nuje n´ami poˇzadovan´e parametry, viz kap. 2.4) uˇz naraz´ıme pouze na OpenNebulu, kter´a je pouˇzita napˇr´ıklad v brnˇensk´em MetaCentru. Co se t´ yˇce produkˇcn´ıho nasaˇ zen´ı OpenStacku v CR, jedn´a se zat´ım pouze o nepatrn´e n´aznaky, coˇz m˚ uˇze b´ yt zapˇr´ıˇcinˇeno relativn´ı mladost´ı technologie a omezen´ ym poˇctem instituc´ı, kter´e si ˇreˇsen´ı priv´atn´ıho cloudu poˇrizuj´ı. ˇ e Radiokomunikace, kter´e v bˇreznu 2014 Jedn´ım z pˇredstavitel˚ u jsou Cesk´ ozn´amily, ˇze bˇehem t´ehoˇz roku postav´ı sv˚ uj cloud pr´avˇe na OpenStacku. Gener´aln´ı ˇreditel firmy rozhodnut´ı zd˚ uvodnil slovy: OpenStack se n´am l´ıb´ı ” d´ıky jeho skuteˇcn´e ˇsk´alovatelnosti. Kdyˇz kus hardwaru vypadne, nic se nedˇeje 28
Cloud computing
Softwarov´e platformy pro IaaS
a pˇrid´a se dalˇs´ı. Je to skuteˇcn´ y cloud se vˇsemi jeho vlastnostmi.“ [48] Vznikla tak´e ˇcesk´a komunita uˇzivatel˚ u18 , coˇz je v´ıtan´ y impuls pro dalˇs´ı rozˇsiˇrov´an´ı v ˇ CR. Tato pr´ace nab´ız´ı kromˇe jin´eho pˇr´ınos v tom, ˇze nab´ıdne hlubˇs´ı pohled na implementaci ˇreˇsen´ı, kter´e v ˇcesk´ ych akademick´ ych kruz´ıch zat´ım nikdo neprovozuje a dosud neexistuje ˇza´dn´a studie proveditelnosti. Jak jiˇz ale bylo uvedeno v´ yˇse, nen´ı to d˚ uvod jedin´ y a samo´ uˇceln´ y. Ve svˇetˇe open-source produkt˚ u se aktu´alnˇe tˇeˇs´ı nejvˇetˇs´ı pˇr´ızni pr´avˇe OpenStack a kdyˇz na nˇej vsadili i ti nejvˇetˇs´ı a nej´ uspˇeˇsnˇejˇs´ı, je to nejen zn´amka souˇcasn´e kvality, ale i pˇr´ıslib dobr´e budoucnosti. V dalˇs´ı ˇc´asti t´eto pr´ace se budeme zab´ yvat n´avrhem ˇreˇsen´ı na platformˇe OpenStack.
18
Dostupn´e na: http://openstack.cz/
29
4 Popis a n´avrh architektury OpenStack je tvoˇren sadou komponent, kter´e jsou mezi sebou propojeny pomoc´ı otevˇren´ ych rozhran´ı (API).
Obr´azek 4.1: Konceptu´aln´ı pohled na architekturu Zdroj: [51]
V n´asleduj´ıc´ıch kapitol´ach postupnˇe rozebereme fungov´an´ı jednotliv´ ych komponent, jejich zapojen´ı do celkov´e infrastruktury a provedeme n´avrh arˇ chitektury pro potˇreby ZCU.
30
Popis a n´avrh architektury
4.1
Datab´aze
Datab´ aze
Datab´aze je zcela z´asadn´ı komponentou OpenStacku. V souˇcasn´e dobˇe jsou podporov´any tyto datab´aze: • MySQL • PostgreSQL • sqlite3
4.1.1
N´ avrh a zd˚ uvodnˇ en´ı
V praxi se rozhodujeme mezi pouˇzit´ım MySQL a PostgreSQL, tˇret´ı zm´ınˇen´ y sqlite3 je vhodn´ y sp´ıˇse pro testovac´ı a v´ yvoj´aˇrsk´e u ´ˇcely. Jelikoˇz CIV provoznˇe podporuje Oracle (kter´ y zde ale nelze pouˇz´ıt) a MySQL, pro n´aˇs n´avrh vol´ıme MySQL. Pro toto rozhodnut´ı d´ale hovoˇr´ı fakt, ˇze jde o ˇsiroce pouˇz´ıvan´ y software pro vˇetˇsinu instalac´ı OpenStacku s velkou podporou komunity a ofici´aln´ı dokumentace poˇc´ıt´a s MySQL jako s prim´arn´ı datab´az´ı. [39] Ostr´ y provoz: datab´aze bude nasazena na samostatn´ y virtu´aln´ı server a 1 bude zajiˇstˇena HA . Pilotn´ı provoz: datab´aze bude nasazena na virtu´aln´ı server ˇr´ıd´ıc´ıho uzlu.
4.2
Keystone: spr´ avce identity
Keystone tvoˇr´ı centr´aln´ı bod, kter´ y zajiˇst’uje ovˇeˇrov´an´ı uˇzivatel˚ u, vystavov´an´ı, spr´avu a ovˇeˇrov´an´ı token˚ u pro pˇrihl´aˇsen´e uˇzivatele a katalog vˇsech komponent vˇc. adres jejich rozhran´ı API. Souˇca´st´ı t´emˇeˇr kaˇzd´eho poˇzadavku na rozhran´ı (API) libovoln´e sluˇzby je token vystaven´ y Keystonem. Dotyˇcn´a sluˇzba jeˇstˇe pˇred zaˇc´atkem vyˇrizov´an´ı poˇzadavku ovˇeˇr´ı jeho validitu a platnost, teprve pak pokraˇcuje ve vyˇrizov´an´ı samotn´eho poˇzadavku. 1
High Availability, vysok´ a dostupnost; bl´ıˇze v kap. 4.11.
31
Popis a n´avrh architektury
4.2.1
Horizon: webov´y port´al
N´ avrh a zd˚ uvodnˇ en´ı
Z podstaty vˇeci tvoˇr´ı stejnˇe jako datab´aze kritick´e m´ısto (Single Point of Failure, SPOF), kter´e je nutn´e oˇsetˇrit n´avrhem pro zachov´an´ı vysok´e dostupnosti. Touto problematikou se podrobnˇeji zab´ yv´a samostatn´a kapitola 4.11. Ostr´ y provoz: Keystone bude nasazen na virtu´aln´ı server ˇr´ıd´ıc´ıho uzlu a bude zajiˇstˇena HA. Pilotn´ı provoz: Keystone bude nasazen na virtu´aln´ı server ˇr´ıd´ıc´ıho uzlu.
4.3
Horizon: webov´ y port´ al
Obˇcas naz´ yvan´ y tak´e jako Dashboard tvoˇr´ı webov´e rozhran´ı pro pohodln´ y pˇr´ıstup k poskytovan´ ym sluˇzb´am. Je jako doplnˇek ke konzolov´ ym klient˚ um, kter´e jsou naprogramov´any jazyce Python. Vyuˇz´ıv´a dostupn´a API jednotliv´ ych komponent, nen´ı nijak tˇesnˇeji sv´az´an s jakoukoliv dalˇs´ı sluˇzbou.
4.3.1
N´ avrh a zd˚ uvodnˇ en´ı
Port´al pˇredstavuje u ´stˇredn´ı bod, pˇres kter´ y budou uˇzivatel´e prov´adˇet veˇskerou spr´avu. Lze tedy oˇcek´avat vyˇsˇs´ı n´aroky na v´ ykon a navrhuji ho um´ıstit na samostatn´ y server. Horizon standardnˇe nepodporuje Single-Sign-On pro zaˇclenˇen´ı do syst´emu ˇ jednotn´eho pˇrihlaˇsov´an´ı na ZCU, takˇze je nutn´e prov´est u ´pravu softwaru. T´ımto se podrobnˇeji zab´ yv´a kapitola 5.9.3. Ostr´ y provoz: Horizon bude nasazen na samostatn´ y virtu´aln´ı server a bude zajiˇstˇena HA. Pilotn´ı provoz: Horizon bude nasazen na virtu´aln´ı server ˇr´ıd´ıc´ıho uzlu.
32
Popis a n´avrh architektury
4.4
Nova: v´ypoˇcetn´ı uzel
Nova: v´ ypoˇ cetn´ı uzel
V´ ypoˇcetn´ı uzel m´a na starosti spuˇstˇen´ı a provoz samotn´ ych virtu´aln´ıch server˚ u. V navrˇzen´e konfiguraci se nestar´a o diskov´e jednotky (o samostatn´e komponentˇe podrobnˇeji v kapitole 4.6) ani o s´ıt’ov´an´ı.
4.4.1
N´ avrh a zd˚ uvodnˇ en´ı
Aˇckoliv lze OS vyuˇz´ıvat s v´ıce hypervizory a to dokonce soubˇeˇznˇe, v naˇsem n´avrhu se d´ale budeme zab´ yvat implementac´ı KVM z d˚ uvod˚ u uveden´ ych v kapitole 2.4. V´ ypoˇcetn´ı uzly lze bez probl´em˚ u ˇsk´alovat a z povahy funkce je zˇrejm´e, ˇze se instaluj´ı na samostatn´e hardwarov´e (nikoliv virtu´aln´ı) servery. Ostr´ y i pilotn´ı provoz: V´ ypoˇcetn´ı uzly (Nova-compute) budou instalov´any na samostatn´e fyzick´e servery.
4.5
Neutron: s´ıt’ov´ an´ı
N´avrh a konfigurace s´ıtˇe je nejkomplikovanˇejˇs´ı z´aleˇzitost´ı v OS, zejm´ena kv˚ uli velk´emu mnoˇzstv´ı variant, jak lze s´ıt’ ˇreˇsit. Neutron se skl´ad´a z nˇekolika ˇca´st´ı: • ML2 Framework (viz n´ıˇze). • Agent pro zvolenou technologii networkingu, tedy napˇr. Open vSwitch agent. • Firewall pro centralizovan´e poskytov´an´ı Firewall as a Service. • DHCP agent zajiˇst’uje pˇridˇelov´an´ı IP adres. • L3-agent umoˇzn ˇuje uˇzivatelsky vytv´aˇret routery nad L2 vrstvou. Vyuˇz´ıv´a Linuxov´ y IP stack a iptables k prov´adˇen´ı L3 forwardingu a NATu. Podporuje network namespaces2 , aby bylo moˇzn´e pˇridˇelit napˇr. dvˇema 2
V´ıce informac´ı o namespaces na: http://www.opencloudblog.com/?p=42
33
Popis a n´avrh architektury
Neutron: s´ıt’ov´an´ı
Obr´azek 4.2: Sch´ema s´ıtˇe s Neutronem Zdroj: [50]
server˚ um stejnou s´ıt’ a tyto byly pˇri routingu oddˇeleny. V kaˇzd´em definovan´em namespace je tak´e router a DHCP server. Od verze Havana je souˇc´ast´ı Neutronu framework ML2 (Modular Layer 2), kter´ y umoˇzn ˇuje soubˇeˇznˇe pouˇz´ıvat ˇradu existuj´ıc´ıch technologi´ı pro L2 networking. Podporuje napˇr´ıklad Linux Bridge, Open vSwitch a ˇradu extern´ıch prvk˚ u (Cisco Nexus, Arista, Tail-f NCS). Jsou moˇzn´e n´asleduj´ıc´ı typy segmentace: [3] • Flat • VLAN • GRE • VxLAN Neutron rozliˇsuje dva typy IP adres, kter´e je moˇzn´e server˚ um pˇridˇelit. Prvn´ı z nich jsou fixed (pevn´e) IP, kter´e jsou serveru pˇriˇrazeny napevno a 34
Popis a n´avrh architektury
Neutron: s´ıt’ov´an´ı
nepoˇc´ıt´a se s jejich zmˇenou. Tyto adresy jsou vˇetˇsinou neveˇrejn´e. Druh´ ym typem jsou floating (plovouc´ı) IP, kter´e jsou namapovan´e na fixn´ı. Tyto IP b´ yvaj´ı obvykle veˇrejn´e a jsou pˇridˇelov´any na ˇz´adost. Poˇc´ıt´a se s t´ım, ˇze mohou b´ yt v pr˚ ubˇehu ˇcasu pˇridˇelov´any r˚ uzn´ ym server˚ um dle aktu´aln´ı potˇreby.
4.5.1
N´ avrh a zd˚ uvodnˇ en´ı
V reakci na zad´avac´ı poˇzadavky n´avrh poˇc´ıt´a s realizac´ı pomoc´ı softwarov´eho ˇreˇsen´ı s´ıtˇe (SDN, Software-defined networking). Pro nejv´ıce izolovan´ y provoz bez nutnosti HW podpory na switchi navrhuji realizovat variantu s VLANy a GRE tunely. Mezi s´ıt’ov´ ym uzlem a v´ ypoˇcetn´ımi uzly jsou sestaveny GRE tunely po samostatn´e fyzick´e s´ıti a na vˇsech stran´ach je nainstalov´an Open vSwitch (s OpenFlow) ˇreˇs´ıc´ı oznaˇcov´an´ı paket˚ u podle VLAN. Na obr. 4.3 je pˇr´ıklad takov´eho n´avrhu. Mezi rozhran´ımi eth1 na serverech (192.168.10.0/24) jsou realizov´any GRE tunely.
Obr´azek 4.3: Detail implementace Open vSwitche s GRE Zdroj: [50]
Ostr´ y provoz: Neutron bude nasazen na samostatn´ y virtu´aln´ı server a bude 35
Popis a n´avrh architektury
Cinder: u ´loˇziˇstˇe dat
zajiˇstˇena HA. Vzhledem k oˇcek´avan´e z´atˇeˇzi doporuˇceno zv´aˇzit instalaci na fyzick´ y server. Bude realizov´ana varianta s Open vSwitchem, VLANy a GRE tunely a pouze v pˇr´ıpadˇe pot´ıˇz´ı s v´ ykonem nasadit HW ˇreˇsen´ı spoˇc´ıvaj´ıc´ı v zakl´ad´an´ı VLAN pˇr´ımo na switchi pˇres dostupn´e ovladaˇce. Pilotn´ı provoz: Neutron bude nasazen na samostatn´ y virtu´aln´ı server. Bude realizov´ana varianta FLAT s´ıtˇe.
4.6
Cinder: u ´ loˇ ziˇ stˇ e dat
OpenStack disponuje dvˇema z´akladn´ımi typy u ´loˇziˇst’. Prvn´ım z nich je doˇcasn´e u ´loˇziˇstˇe (ephemeral storage), kter´e je sv´azan´e s instanc´ı virtu´aln´ıho serveru a zanikne spolu se smaz´an´ım dotyˇcn´e instance. Fyzicky je um´ıstˇeno na v´ ypoˇcetn´ım uzlu a je to standardn´ı u ´loˇziˇstˇe OpenStacku. Druh´ ym z nich je tzv. perzistentn´ı u ´loˇziˇstˇe (persistent storage), kter´e m˚ uˇze b´ yt bud’ objektov´e (komponenta Swift, obdoba Amazon S3) nebo blokov´e (Cinder). Takto definovan´e u ´loˇziˇstˇe nen´ı z´avisl´e na existenci konkr´etn´ı instance, lze ho podle potˇreby pˇripojovat k libovoln´e instanci v cloudu. Jak je patrn´e, data jsou v tomto pˇr´ıpadˇe fyzicky um´ıstˇena mimo v´ ypoˇcetn´ı uzel, coˇz umoˇzn ˇuje dos´ahnout vyˇsˇs´ıho v´ ykonu i kapacity a dovoluje integraci s high-endov´ ymi extern´ımi u ´loˇziˇsti. Cinder se star´a o spr´avu perzistentn´ıho diskov´eho u ´loˇziˇstˇe a jeho hlavn´ı funkc´ı je zprostˇredkovat pˇripojen´ı diskov´ ych jednotek k virtu´aln´ım server˚ um. Sest´av´a se ze tˇr´ı hlavn´ıch komponent: • API – slouˇz´ı pro komunikaci s ostatn´ımi komponentami Cinderu a potaˇzmo i OpenStacku. • Volume – spravuje datab´azi jednotek, m´a pˇrehled o jejich stavu a napˇr´ımo komunikuje s hardwarov´ ymi nebo softwarov´ ymi u ´loˇziˇsti pomoc´ı ovladaˇc˚ u. • Scheduler – vyb´ır´a optim´aln´ı u ´loˇziˇstˇe, na kter´em bude vytvoˇrena nov´a jednotka. Cinder je d´ıky ovladaˇc˚ um schopen komunikovat s velkou ˇsk´alou softwaro36
Popis a n´avrh architektury
Cinder: u ´loˇziˇstˇe dat
v´ ych (Linux LVM3 , distribuovan´e souborov´e syst´emy) i hardwarov´ ych (HP, IBM, NetApp, . . . ) u ´loˇziˇst’. Je podporov´ana pr´ace s v´ıce u ´loˇziˇsti nar´az a pˇri vytv´aˇren´ı nov´e jednotky se vyb´ır´a filtrov´an´ım (dle uˇzivatelsky definovan´ ych poˇzadavk˚ u) a ˇrazen´ım (napˇr. dle obsazenosti) nejvhodnˇejˇs´ı u ´loˇziˇstˇe obdobnˇe, jako kdyˇz Nova hled´a optim´aln´ı hostitelsk´ y server pˇri vytv´aˇren´ı nov´e instance. Od verze Havana je podporov´ana ˇrada uˇziteˇcn´ ych vlastnost´ı: ˇ • Sifrov´ an´ı – pouˇz´ıv´a dm-crypt. • Migrace jednotek – i mezi r˚ uzn´ ymi typy u ´loˇziˇst’ (Cinder je v roli proxy serveru, kter´ y spust´ı pˇr´ıkaz dd). • Omezov´ an´ı datov´ eho toku – limituje I/O poˇzadavky (oddˇelenˇe pro ˇcten´ı a z´apis). Pro n´aˇs n´avrh je d˚ uleˇzit´ y zejm´ena I/O limit, d´ıky kter´emu m˚ uˇzeme zabr´anit situaci, kdy jedna instance zcela zahlt´ı pˇripojen´e u ´loˇziˇstˇe I/O poˇzadavky.
4.6.1
N´ avrh a zd˚ uvodnˇ en´ı
Pokud chceme k server˚ um pˇripojovat blokov´a zaˇr´ızen´ı, je nutn´e vybrat takov´ y protokol, kter´ y to umoˇzn ˇuje. V praxi se nejˇcastˇeji setk´av´ame s rozhodov´an´ım mezi iSCSI a FC (Fibre Channel). Jsou sice podporov´any i distribuovan´e souborov´e syst´emy jako NFS, AFS ˇci GlusterFS, ale technicky to funguje tak, ˇze je na dan´em souborov´em syst´emu vytvoˇren soubor, kter´ y je n´aslednˇe namapov´an jako samostatn´a jednotka s vlastn´ım souborov´ ym syst´emem. To ale nen´ı z hlediska v´ ykonu a uspoˇr´ad´an´ı optim´aln´ı, proto o t´eto variantˇe nebudeme uvaˇzovat. V naˇsem n´avrhu se budeme d´ale zab´ yvat implementac´ı iSCSI, coˇz je protokol zaloˇzen´ y na IP, kter´ y umoˇzn ˇuje klient˚ um (initiators) komunikovat s I/O zaˇr´ızen´ımi pro ukl´ad´an´ı dat (targets) pomoc´ı paket˚ u TCP/IP. [26] V´ yhodou iSCSI oproti FC je zejm´ena cena, nebot’ pro FC je tˇreba poˇr´ıdit speci´aln´ı a drah´ y hardware (karty, pˇrep´ınaˇce, kabel´aˇz) a iSCSI si vystaˇc´ı s 3
Logical Volume Management, detaily na: https://sourceware.org/lvm2/
37
Popis a n´avrh architektury
Cinder: u ´loˇziˇstˇe dat
Nova
Cinder
VM instance /dev/vda
KVM
Storage Controller
iSCSI initiator
iSCSI target
Obr´azek 4.4: Storage node s extern´ım uloˇziˇstˇem Zdroj: [52]
obyˇcejn´ ym Ethernetem. Lze ho dokonce provozovat na existuj´ıc´ı s´ıti, aˇckoliv to nen´ı s ohledem na v´ ykon doporuˇcov´ano. Nav´ıc s n´astupem 10 GbE pˇrest´av´a b´ yt probl´em rychlost rozhran´ı ve srovn´an´ı s FC. Studie Andrewa Reichmana [31] ukazuje, ˇze pˇri bˇeˇzn´em nasazen´ı je FC 3.8× n´akladnˇejˇs´ı neˇz iSCSI. Pro iSCSI tak´e hovoˇr´ı ˇsirok´a implementace napˇr´ıˇc operaˇcn´ımi syst´emy a fakt, ˇze nen´ı omezen lokalitou (LAN), ale m˚ uˇze fungovat po bˇeˇzn´e s´ıti na libovolnou vzd´alenost. Obr. 4.4 ukazuje navrˇzen´ y model, kdy Cider komunikuje s extern´ım u ´loˇziˇstˇem tak, aby doˇslo k nastaven´ı potˇrebn´ ych parametr˚ u pro novˇe vznikaj´ıc´ı diskovou jednotku. Ta je pak propojena na pˇr´ımo mezi extern´ım u ´loˇziˇstˇem a virtu´aln´ım serverem – datov´e toky neproch´az´ı pˇres Cinder, coˇz by bylo neˇza´douc´ı a mˇelo by to vliv na pokles I/O. V´ıce informac´ı o zp˚ usobu fungov´an´ı pod´av´a kap. 4.6.2. Ostr´ y provoz: Cinder bude nasazen na samostatn´ y virtu´aln´ı server a bude 38
Popis a n´avrh architektury
Glance: katalog obraz˚ u
zajiˇstˇena HA. Bude ovl´adat externˇe pˇripojen´e diskov´e u ´loˇziˇstˇe. Pilotn´ı provoz: Cinder bude nasazen na samostatn´ y virtu´aln´ı server. Cloudu bude poskytovat lok´aln´ı diskov´ y prostor, napojen´ı na extern´ı u ´loˇziˇstˇe nebude ˇreˇseno.
4.6.2
Tok poˇ zadavk˚ u pˇ ri pˇ ripojov´ an´ı jednotky
1. Nova zavol´a pˇres API Cinder a pˇred´a mu poˇzadavek s parametry (hostitel, jm´eno iSCSI initiatoru, . . . ). 2. Cinder-api pˇred´a zpr´avu do cinder-volume. 3. Probˇehne kontrola chyb a zavol´a se ovladaˇc zaˇr´ızen´ı, na kter´em se bude jednotka vytv´aˇret. 4. Ovladaˇ c zaˇ r´ızen´ı provede pˇr´ıpravu jednotky vˇc. nastaven´ı pr´av pro pˇripojen´ı. 5. Ovladaˇ c zaˇ r´ızen´ı navr´at´ı informace pro pˇripojen´ı, tyto jsou pak pˇred´any do nova. 6. Nova vytvoˇr´ı spojen´ı na u ´loˇziˇstˇe podle dodan´ ych parametr˚ u. 7. Nova pˇred´a pˇripojenou jednotku hypervizoru virtualizace.
4.7
Glance: katalog obraz˚ u
Glance zajiˇst’uje centralizovanou spr´avu katalogu obraz˚ u virtu´aln´ıch server˚ u. M´a nˇekolik funkc´ı: • Ukl´ad´a obrazy (images), kter´e jsou pouˇz´ıv´any pˇri vytv´aˇren´ı instanc´ı. • Poskytuje uˇzivatel˚ um katalog dostupn´ ych obraz˚ u. • Pro komponentu Nova zajiˇst’uje dod´avku obraz˚ u. • Zajiˇst’uje vytv´aˇren´ı snapshot˚ u bˇeˇz´ıc´ıch server˚ u pro z´alohovac´ı u ´ˇcely.
39
Popis a n´avrh architektury
openstack-glance
Glance: katalog obraz˚ u
openstack-nova VM libvirt base
libvirt instance disks VM
Obr´azek 4.5: Proces pˇrenosu a pouˇzit´ı obrazu Zdroj: [4]
Samotn´e obrazy mohou b´ yt fyzicky uloˇzeny bud’ na lok´aln´ım souborov´em syst´emu, objektov´em u ´loˇziˇsti (Swift, Amazon S3) nebo pˇr´ıstupn´e pˇres HTTP. Pˇri vytv´aˇren´ı nov´e instance z existuj´ıc´ıho obrazu funguje proces tak, jak je zachyceno na obr´azku 4.5. V´ ypoˇcetn´ı uzel (openstack-nova) si z Glance st´ahne obraz zvolen´eho operaˇcn´ıho syst´emu. Ten je uloˇzen v nekomprimovan´e podobˇe do tzv. base adres´aˇre na v´ ypoˇcetn´ım uzlu a z nˇej je n´aslednˇe vytvoˇren disk pro novˇe vznikaj´ıc´ı instanci. V pˇr´ıpadˇe opakovan´eho vytv´aˇren´ı instance ze stejn´eho obrazu je tedy uplatnˇen vliv lok´aln´ı mezipamˇeti (cache) a minimalizov´an ˇcas nutn´ y pro vytvoˇren´ı.
4.7.1
N´ avrh a zd˚ uvodnˇ en´ı
Ostr´ y provoz: Glance bude nasazen na samostatn´ y virtu´aln´ı server a bude zajiˇstˇena HA. Pilotn´ı provoz: Glance bude nasazen na samostatn´ y virtu´aln´ı server. Obrazy server˚ u budou v obou pˇr´ıpadech uloˇzeny lok´alnˇe, vzhledem k tomu ˇze souˇca´st´ı n´avrhu nen´ı objektov´e u ´loˇziˇstˇe Swift (detaily a zd˚ uvodnˇen´ı v kap. 4.10.1).
40
Popis a n´avrh architektury
4.8
Tok poˇzadavk˚ u pˇri zakl´ad´an´ı instance
Tok poˇ zadavk˚ u pˇ ri zakl´ ad´ an´ı instance
Obr´azek 4.6 zn´azorˇ nuje pro lepˇs´ı pˇredstavu proces vytv´aˇren´ı nov´e instance virtu´aln´ıho serveru v OpenStacku. Doch´az´ı tam k interakci mezi jednotliv´ ymi komponentami a v´ ysledkem je start virtu´aln´ıho serveru. V kroc´ıch 3–12 doch´az´ı k pl´anov´an´ı, v kroc´ıch 22–24 je pˇripravov´ana s´ıt’ a diskov´e u ´loˇziˇstˇe se pˇriprav´ı v kroku 25–27. N´ıˇze n´asleduje kompletn´ı popis vˇsech krok˚ u: [22] Kaˇzd´a komponenta (Nova, Glance, . . . ) je tvoˇrena nˇekolika souvisej´ıc´ımi sluˇzbami (nova-api, nova-scheduler, . . . ), kter´e mezi sebou komunikuj´ı pˇres RPC. Komponenty mezi sebou vyuˇz´ıvaj´ı komunikaci pˇres REST API. 1. Dashboard nebo CLI obdrˇz´ı pˇrihlaˇsovac´ı u ´daje a poˇz´ad´a Keystone, aby je ovˇeˇril. 2. Keystone ovˇeˇr´ı, jestli jsou obdrˇzen´e u ´daje platn´e a pokud ano, tak zaˇsle zpˇet token, kter´ ym se bude Dashboard/CLI nad´ale prokazovat. 3. Dashboard/CLI zpracuje zadan´e parametry pro novou instanci a poˇsle je pˇres REST do nova-api spoleˇcnˇe s tokenem. 4. Nova-api obdrˇz´ı poˇzadavek a poˇza´d´a Keystone o ovˇeˇren´ı pˇrihlaˇsovac´ıho tokenu a zasl´an´ı pˇr´ıstupov´ ych pr´av uˇzivatele. 5. Keystone ovˇeˇr´ı token a zaˇsle role i pr´ava uˇzivatele zpˇet. 6. Nova-api prov´ad´ı interakci s nova-database. 7. Je vytvoˇren inicializaˇcn´ı z´aznam v DB pro novou instanci. 8. Nova-api zaˇsle rpc.call poˇzadavek do nova-scheduler a ˇcek´a na doplnˇen´ı ID hostitelsk´eho serveru. 9. Nova-scheduler vyzvedne poˇzadavek z fronty (queue). 10. Nova-scheduler se dotazuje nova-database a pokud nen´ı uˇzivatelsky specifikov´an konkr´etn´ı hostitelsk´ y server, hled´a se pomoc´ı filtrov´an´ı a vah ide´aln´ı hostitelsk´ y server, kde bude nov´a instance zaloˇzena. 11. Je navr´aceno ID hostitelsk´eho serveru.
41
Popis a n´avrh architektury
Tok poˇzadavk˚ u pˇri zakl´ad´an´ı instance
Obr´azek 4.6: Tok poˇzadavk˚ u Zdroj: [22]
42
Popis a n´avrh architektury
Tok poˇzadavk˚ u pˇri zakl´ad´an´ı instance
12. Nova-scheduler zaˇsle rpc.cast poˇzadavek na Nova-compute k zaloˇzen´ı nov´e instance na vybran´em hostiteli. 13. Nova-compute vyzvedne poˇzadavek z fronty. 14. Nova-compute zaˇsle rpc.call poˇzadavek na nova-conductor k vyˇza´d´an´ı podrobnˇejˇs´ıch informac´ı o hostiteli a parametrech (RAM, CPU, disk) nov´e instance. 15. Nova-conductor vyzvedne poˇzadavek z fronty. 16. Nova-conductor se dotazuje nova-database. 17. Jsou navr´aceny informace o instanci. 18. Nova-compute si vyzvedne informace o instanci z fronty. 19. Nova-compute provede REST vol´an´ı s tokenem uˇzivatele do Glance (sluˇzba datab´aze obraz˚ u) ke zjiˇstˇen´ı URL obrazu a nahr´an´ı obrazu z u ´loˇziˇstˇe obraz˚ u. 20. Glance-api poˇza´d´a Keystone o ovˇeˇren´ı uˇzivatelsk´eho tokenu a provede zadan´e u ´koly. 21. Nova-compute z´ısk´a metadata o obrazu (image) instance. 22. Nova-compute provede REST vol´an´ı s tokenem uˇzivatele do Neutron (s´ıt’ov´a sluˇzba) k alokaci a konfiguraci s´ıt’ov´ ych zdroj˚ u tak, aby instance z´ıskala IP adresu. 23. Neutron-server (dˇr´ıve quantum-server) poˇza´d´a Keystone o ovˇeˇren´ı uˇzivatelsk´eho tokenu a provede alokaci zdroj˚ u. 24. Nova-compute obdrˇz´ı informace o s´ıti pro novou instanci. 25. Nova-compute provede REST vol´an´ı s tokenem uˇzivatele do Cinder (storage) k pˇripojen´ı svazku nov´e instanci. 26. Cinder-api poˇza´d´a Keystone o ovˇeˇren´ı uˇzivatelsk´eho tokenu a provede alokaci svazku (disku). 27. Nova-compute obdrˇz´ı informace o blokov´em zaˇr´ızen´ı (storage). 28. Nova-compute vygeneruje data pro ovladaˇc hypervisora a spust´ı poˇzadavek na vytvoˇren´ı instance (pˇres libvirt nebo API).
43
Popis a n´avrh architektury
4.9
Ceilometer: mˇeˇren´ı zdroj˚ u
Ceilometer: mˇ eˇ ren´ı zdroj˚ u
Slouˇz´ı pro sbˇeru informac´ı o vyuˇz´ıv´an´ı zdroj˚ u v cloudu a tvorbu podklad˚ u pro vy´ uˇctov´an´ı. Architekturu ilustruje obr. 4.7.
Obr´azek 4.7: Architektura Ceilometeru Zdroj: [11]
Ceilometer sb´ır´a data o vyuˇz´ıv´an´ı zdroj˚ u od komponent v cloudu pro kaˇzd´eho uˇzivatele/projekt, zpracov´av´a je a ukl´ad´a do sv´e datab´aze. N´aslednˇe poskytuje v´ ystupy ve formˇe REST API pro pouˇzit´ı v dalˇs´ıch aplikac´ıch – jednou z takov´ ych aplikac´ı je i port´al Horizon, kde je moˇzn´e pohodlnˇe prohl´ıˇzet v´ ystupy mˇeˇren´ı. Zaznamen´av´a tˇri typy hodnot: 1. Kumulativn´ı (cumulative), rostou v ˇcase (napˇr. poˇcet hodin, po kterou je instance spuˇstˇena). 2. Diskr´ etn´ı hodnoty (gauge), napˇr. poˇcet pˇridˇelen´ ych plovouc´ıch IP adres. 3. Zmˇ enov´ e (delta), napˇr. pˇrenos dat po s´ıti.
44
Popis a n´avrh architektury
Ostatn´ı komponenty
Jsou sledov´any tyto parametry: 1. Nova: poˇcet instanc´ı, vyuˇzit´ı CPU, vyuˇzit´ı diskov´eho I/O 2. Neutron: virtu´aln´ı s´ıtˇe, routery, porty, IP adresy 3. Glance: velikost obraz˚ u, nahr´av´an´ı a stahov´an´ı obraz˚ u 4. Cinder: poˇcet a velikost diskov´ ych jednotek
4.10
Ostatn´ı komponenty
Souˇca´st´ı OS Havana jsou jeˇstˇe dalˇs´ı komponenty, kter´e nebyly souˇc´ast´ı poˇzadavk˚ u a proto nejsou zahrnuty do n´avrhu.
4.10.1
Swift
Swift je objektov´e u ´loˇziˇstˇe (obdoba Amazon S3), kter´e je navrˇzeno pro bezpeˇcn´e ukl´ad´an´ı velk´eho mnoˇzstv´ı dat. Data jsou pˇr´ıstupn´a pˇres API a jsou ´ uloˇzena ve v´ıce kopi´ıch na r˚ uzn´ ych serverech pro maxim´aln´ı bezpeˇcnost. Uloˇziˇstˇe je kompletnˇe distribuovan´e a velmi snadno ˇsk´alovateln´e. Pro samotn´ y provoz navrˇzen´eho cloudu vˇsak nen´ı Swift vyˇzadov´an, data virtu´aln´ıch server˚ u budou um´ıstˇena na existuj´ıc´ıch extern´ıch u ´loˇziˇst´ıch.
4.10.2
Heat
Obdoba AWS CloudFormation m´a za u ´kol pˇr´ıpravu spouˇstˇen´ı aplikac´ı na OpenStacku. Lze ji vyuˇz´ıt ke spuˇstˇen´ı pˇreddefinovan´ ych sc´en´aˇr˚ u, tedy napˇr. spustit sadu webserver˚ u s nastaven´ ym load-balancerem a Drupalem. RedHat tuto komponentu vyuˇz´ıv´a napˇr. pro nasazov´an´ı sv´eho projektu OpenShift. V n´avrhu nen´ı zaˇrazen, nebot’ nejde o nezbytnou sluˇzbu.
45
ˇ alovatelnost a High Availability Sk´
Popis a n´avrh architektury
4.11
ˇ alovatelnost a High Availability Sk´
Pro zajiˇstˇen´ı maxim´aln´ı dostupnosti a moˇznosti rozˇsiˇrov´an´ı sluˇzeb je nutn´e jiˇz v n´avrhu reflektovat tento poˇzadavek. Syst´emy vysok´e dostupnosti HA se snaˇz´ı minimalizovat tato rizika: [23] 1. V´ ypadek syst´ emu: nast´av´a, kdyˇz je poskytovan´a sluˇzba nedostupn´a. 2. Ztr´ ata dat: zniˇcen´ı nebo poˇskozen´ı dat. D˚ uleˇzit´ ym aspektem projektov´an´ı HA syst´em˚ u je prevence rizikov´ ych m´ıst, kter´e mohou zp˚ usobit p´ad cel´eho syst´emu (Single Points Of Failure, SPOFs). Tato m´ısta jsou zejm´ena: 1. S´ıt’ov´ e komponenty, jako routery, switche 2. Aplikace 3. Datov´ au ´ loˇ ziˇ stˇ e 4. Sluˇ zby jako nap´ajen´ı, klimatizace, poˇza´rn´ı syst´em Tato pr´ace bude pokr´ yvat zejm´ena zajiˇstˇen´ı vysok´e dostupnosti u jednotliv´ ych komponent OpenStacku. Zajiˇstˇen´ı HA pro jednotliv´e aplikace se liˇs´ı podle toho, jestli jde o stavovou nebo bezstavovou sluˇzbu. Bezstavov´a sluˇzba je takov´a, kter´a po vyˇr´ızen´ı dotazu neprov´ad´ı ˇz´adnou dalˇs´ı akci. Typick´ ym pˇr´ıkladem je protokol HTTP. V architektuˇre OS se jedn´a o sluˇzby: nova-api, nova-conductor, glance-api, keystone-api, neutron-api a nova-scheduler. U tˇechto sluˇzeb se HA zajiˇst’uje spuˇstˇen´ım v´ıce instanc´ı na r˚ uzn´ ych serverech, mezi kter´ ymi se prov´ad´ı load-balancing, neboli vyvaˇzov´an´ı z´atˇeˇze. Pro stavovou sluˇzbu je typick´e, ˇze n´asleduj´ıc´ı poˇzadavek je z´avisl´ y na prvotn´ım poˇzadavku, takˇze nelze HA ˇreˇsit spuˇstˇen´ım v´ıce instanc´ı s vyvaˇzov´an´ım z´atˇeˇze. Stavov´e sluˇzby v OS jsou centr´aln´ı datab´aze a fronta zpr´av.
46
ˇ alovatelnost a High Availability Sk´
Popis a n´avrh architektury
4.11.1
HA pro datab´ azi
Jako hlavn´ı datab´azov´ y server je pouˇzita MySQL. V n´ı lze HA ˇreˇsit v´ıce zp˚ usoby: Active/Passive – struktura poˇc´ıt´a s nasazen´ım dvou server˚ u, pˇriˇcemˇz jeden je jako hlavn´ı (Active) a druh´ y jako z´aloˇzn´ı (Passive). Za bˇeˇzn´eho provozu vˇsechny poˇzadavky vyˇr´ızuje hlavn´ı server a v pˇr´ıpadˇe v´ ypadku hlavn´ıho je provoz pˇrepnut na z´aloˇzn´ı.
Obr´azek 4.8: Realizace HA pro MySQL pˇres DRBD a Pacemaker Zdroj: vlastn´ı zpracov´ an´ı na z´ akladˇ e [35]
Technicky je to ˇreˇseno tak, ˇze se datab´aze ukl´adaj´ı na DRBD4 , coˇz je blokov´e zaˇr´ızen´ı synchronizovan´e pˇres s´ıt’ (obdoba RAID5 ). Oba servery maj´ı sv´e IP adresy a krom toho jeˇstˇe jednu virtu´aln´ı (Virtual IP, VIP), kterou si 4 5
Distributed Replicated Block Device, detaily na: http://www.drbd.org/ Redundant Array of Inexpensive/Independent Disks
47
ˇ alovatelnost a High Availability Sk´
Popis a n´avrh architektury
mezi sebou pˇred´avaj´ı podle toho, kter´ y server je v provozu. Pr´avˇe na tuto IP se pˇripojuj´ı ostatn´ı sluˇzby. Na obou serverech je nainstalov´an Pacemaker, kter´ y kontroluje dostupnost druh´eho serveru a podle potˇreby prov´ad´ı nastaven´e akce (spuˇstˇen´ı sluˇzby na z´aloˇzn´ım serveru v pˇr´ıpadˇe v´ ypadku, pˇrevzet´ı virtu´aln´ı IP, . . . ). Proces je zn´azornˇen na obr. 4.8. Tento zp˚ usob nicm´enˇe neumoˇzn ˇuje rozkl´ad´an´ı z´atˇeˇze a proto se nehod´ı pro syst´emy, kde potˇreba ˇsk´alov´an´ı. Active/Active – tento zp˚ usob poˇc´ıt´a s vybudov´an´ım MySQL clusteru, kter´ y prov´ad´ı synchronn´ı replikaci InnoDB datab´az´ı, jak naznaˇcuje obr. 4.9. Lze pouˇz´ıt MySQL cluster6 nebo Galera cluster7 , pˇriˇcemˇz druh´ y zmiˇ novan´ y nab´ız´ı t´emˇeˇr dvojn´asobnou propustnost oproti MySQL clusteru [7]; vol´ıme tedy ˇreˇsen´ı pomoc´ı Galera clusteru. V´ yhodou tohoto ˇreˇsen´ı je, ˇze lze pouˇz´ıt v´ıce server˚ u, vˇsechny jsou v provozu a vˇsechny vyˇrizuj´ı poˇzadavky. Kromˇe zajiˇstˇen´ı vysok´e dostupnosti lze pomoc´ı takto vytvoˇren´eho clusteru i ˇsk´alovat. Je ale nutn´e vyuˇz´ıt loadbalancer, at’ uˇz hardwarov´ y nebo softwarov´ y (HAproxy + Keepalived). Pro zajiˇstˇen´ı HA a snadn´e ˇsk´alovatelnosti autor pr´ace doporuˇcuje realizaci formou datab´azov´eho clusteru Galera.
4.11.2
HA pro frontu zpr´ av
Pro spr´avu fronty (Advanced Message Queuing Protocol, AMQP) OpenStack vyuˇz´ıv´a program RabbitMQ. Ten m´a podporu pro implementaci clusteru jiˇz zabudovanou, takˇze staˇc´ı prov´est instalaci na vybran´ y poˇcet uzl˚ u a prov´est 8 drobnou u ´pravu nastaven´ı . Nen´ı tˇreba vyuˇz´ıvat load-balancer, postaˇc´ı upravit konfiguraci sluˇzeb OpenStacku, kter´e s frontou pracuj´ı: rabbit_hosts=rabbit1:5672,rabbit2:5672 6
http://www.mysql.com/products/cluster/ http://galeracluster.com/ 8 Detaily lze nal´ezt na: http://docs.openstack.org/high-availability-guide/ content/_configure_rabbitmq.html 7
48
ˇ alovatelnost a High Availability Sk´
Popis a n´avrh architektury
Obr´azek 4.9: Realizace HA pro MySQL pˇres Galera a HAproxy. Zdroj: [49]
4.11.3
HA pro ostatn´ı sluˇ zby
Zajiˇstˇen´ı vysok´e dostupnosti ostatn´ıch sluˇzeb je ˇreˇseno instalac´ı na dva servery v reˇzimu Active/Passive. Pˇres HAproxy proch´az´ı veˇsker´a komunikace na dan´e sluˇzby. Ta se star´a o spr´avnˇe nasmˇerov´an´ı poˇzadavk˚ u podle toho, kter´ y server je v provozu. HAproxy by mˇel b´ yt replikovan´ y, aby netvoˇril SPOF.
4.11.4
Sch´ ema n´ avrhu kompletn´ıho HA
Obr´azek 4.10 shrnuje n´avrh HA ˇreˇsen´ı. Obsahuje dva ˇr´ıd´ıc´ı uzly (Controller node 1 a 2), na kter´ ych bˇeˇz´ı sluˇzby, u nichˇz chceme zajistit HA. Jak jiˇz v´ıme z pˇredchoz´ıch kapitol, MySQL a RabbitMQ nemus´ı b´ yt v reˇzimu Active/Passive, ale pro zjednoduˇsen´ı jsou zahrnuty do naˇcrtnut´ ych ˇr´ıd´ıc´ıch uzl˚ u, pˇriˇcemˇz replikace je u nich Active/Active. Pro pˇrep´ın´an´ı Active/Passive sluˇzeb je nainstalov´an HAproxy. V n´avrhu je zdvojen´ y, pˇriˇcemˇz v pˇr´ıpadˇe nedostatku hardware je moˇzn´e jednotliv´e instance nainstalovat pˇr´ımo na ˇr´ıd´ıc´ı uzly. Vˇsechny sluˇzby, kter´e se k HA 49
ˇ alovatelnost a High Availability Sk´
Popis a n´avrh architektury
MySQL Cluster
MySQL Cluster
Virtual IP (10.1.1.111)
Obr´azek 4.10: N´avrh HA architektury OpenStacku Zdroj: vlastn´ı zpracov´ an´ı
OpenStacku pˇripojuj´ı vyuˇz´ıvaj´ı virtu´aln´ı IP (VIP) HAproxy, tedy 10.1.1.111.
50
Popis a n´avrh architektury
Z´alohovac´ı sch´ema
MySQL a RabbitMQ cluster lze vyuˇz´ıt bud’ napˇr´ımo (napˇr. pˇres roundrobin DNS) nebo tak´e pˇres HAproxy. Autor doporuˇcuje pouˇz´ıt HAproxy, protoˇze jiˇz vyuˇzita i pro ostatn´ı komponenty n´avrhu.
4.12
Z´ alohovac´ı sch´ ema
Pˇri z´alohov´an´ı komponent OpenStacku je tˇreba prov´est z´alohu centr´aln´ı datab´aze a pak tak´e vˇsech konfiguraˇcn´ıch soubor˚ u jednotliv´ ych sluˇzeb. Z´alohu zvolen´e datab´aze MySQL lze prov´est pˇres konzolov´ y program mysqldump, kter´ y je souˇca´st´ı distribuce. V tomto pˇr´ıpadˇe vˇsak dojde k doˇcasn´emu uzamknut´ı tabulek po dobu prov´adˇen´ı z´alohy. Z´alohu pˇres mysqldump provedeme n´asleduj´ıc´ım pˇr´ıkazem, v´ ystupem bude soubor openstack.sql obsahuj´ıc´ı data vˇsech datab´az´ı: # mysqldump --all-databases > openstack.sql Pokud potˇrebujeme zajistit dostupnost i pˇri prob´ıhaj´ıc´ı z´aloze, je moˇzn´e vyuˇz´ıt open-source software Percona XtraBackup9 , kter´ y umoˇzn ˇuje prov´adˇet z´alohy MySQL InnoDB bez pˇreruˇsen´ı provozu. Pro proveden´ı z´alohy vˇsech datab´az´ı ze standardn´ıho datov´eho adres´aˇre (je uveden v konfiguraˇcn´ım souboru /etc/my.cnf) do sloˇzky /data/backups spust´ıme pˇr´ıkaz: # innobackupex /data/backups
Nova Na v´ ypoˇcetn´ım i ˇr´ıd´ıc´ım uzlu je nutn´e prov´adˇet z´alohu adres´aˇr˚ u /etc/nova a /var/lib/nova s v´ yjimkou /var/lib/nova/instances na v´ ypoˇcetn´ım uzlu, kde jsou uloˇzeny obrazy virtu´aln´ıch server˚ u (pokud nen´ı vyuˇzit Cinder) – nen´ı doporuˇceno takto z´alohovat bˇeˇz´ıc´ı servery, protoˇze hroz´ı riziko, ˇze bude z´aloha poˇskozena. Pro z´alohov´an´ı samotn´ ych server˚ u je vhodn´e vyuˇz´ıt LVM snapshoty, kter´e lze prov´est i u bˇeˇz´ıc´ı instance. 9
Detaily lze nal´ezt na: http://www.percona.com/software/percona-xtrabackup
51
Popis a n´avrh architektury
Z´alohovac´ı sch´ema
Snapshoty lze vytvoˇrit pˇres port´al (Project → Instances → Create Snapshot), nebo pˇres pˇr´ıkazovou ˇra´dku: # cinder snapshot-create --display-name N´ AZEV ID_JEDNOTKY
Glance Na uzlu obsahuj´ıc´ım obrazy server˚ u je nutn´e z´alohovat adres´aˇre /etc/glance a /var/lib/glance.
Keystone Pro sluˇzbu identity staˇc´ı z´alohovat adres´aˇr /etc/keystone.
Cinder Blokov´e u ´loˇziˇstˇe m´a uloˇzenou konfiguraci v adres´aˇri /etc/cinder, kter´ y je tedy nutn´ y z´alohovat.
Horizon Konfiguraˇcn´ı soubor port´alu je ve sloˇzce /etc/openstack-dashboard.
4.12.1
Obnova
V pˇr´ıpadˇe obnovy datab´aze je nutn´e nejprve zastavit vˇsechny sluˇzby, kter´e ji vyuˇz´ıvaj´ı (tedy pro datab´azi nova vˇsechny procesy nova-* ) a pot´e prov´est obnovu: # mysql nova < nova.sql Pokud je tˇreba obnovit ze z´alohy cel´ y server, je nutn´e ho znovu nainstalovat a ze z´alohy obnovit potˇrebn´e konfiguraˇcn´ı soubory nebo datab´azi (z´aleˇz´ı na tom, jak´ y mˇel dotyˇcn´ y server roli, tedy co na nˇem bylo nainstalov´ano). 52
Popis a n´avrh architektury
4.13
Logov´an´ı
Logov´ an´ı
OpenStack standardnˇe zapisuje logy do adres´aˇre /var/log. Pˇri vzr˚ ustaj´ıc´ım poˇctu server˚ u ale nen´ı vhodn´e m´ıt logy uchovan´e na kaˇzd´em serveru zvl´aˇst’, ale zapnout centr´aln´ı logov´an´ı. Kromˇe snadnˇejˇs´ı anal´ yzy je t´ım zajiˇstˇena i vˇetˇs´ı bezpeˇcnost log˚ u (napˇr. pˇri kompromitaci konkr´etn´ıho serveru). Autor doporuˇcuje vyuˇz´ıvat centr´aln´ıho logov´an´ı. Syslog, kter´ y OpenStack podporuje, umoˇzn ˇuje zapnout logov´an´ı pˇres s´ıt’. Pro jeho aktivaci je nutn´e v konfiguraci (napˇr. /etc/nova/nova.conf) zapnout pouˇzit´ı syslogu: use_syslog=True syslog_log_facility=LOG_LOCAL0 D´ale je nutn´e nakonfigurovat syslog, aby komunikoval pˇres s´ıt’ se serverem. Provedeme to vytvoˇren´ım souboru /etc/rsyslog.d/client.conf s t´ımto obsahem: *.* @192.168.1.1 Nam´ısto IP 192.168.1.1 vloˇz´ıme adresu centr´aln´ıho syslog serveru.
4.13.1
Historie IP adres
Jedn´ım z poˇzadavk˚ u zadavatele bylo zn´at historii pˇridˇelovan´ ych IP adres, aby bylo moˇzn´e vystopovat konkr´etn´ıho uˇzivatele (server), kter´ y mˇel pˇridˇelenou urˇcitou IP v dan´em ˇcase (napˇr. kv˚ uli pˇr´ıpadn´ ym st´ıˇznostem na neleg´aln´ı aktivitu). Datab´aze OpenStacku nedisponuje histori´ı pˇridˇelen´ ych adres, proto je nutn´e situaci ˇreˇsit jinak. Jsou k dispozici dva zp˚ usoby. Prvn´ım z nich je obyˇcejn´e ruˇcn´ı (pˇr´ıpadnˇe skriptem zautomatizovan´e) proch´azen´ı textov´ ych log˚ u, kam se zapisuje pˇri vytv´aˇren´ı serveru pˇridˇelen´a IP adresa. Jde o m´enˇe pohodln´ y zp˚ usob, ale je velmi snadno technicky realizovateln´ y a nevyˇzaduje ˇz´adn´e dalˇs´ı u ´pravy. 53
Popis a n´avrh architektury
Monitoring
Druh´ ym zp˚ usobem je odchyt´av´an´ı AMQP zpr´av z fronty OpenStacku, coˇz umoˇzn ˇuje napˇr´ıklad program yagi10 . Takto z´ıskan´e informace je nutn´e d´ale zpracovat a uloˇzit si je do vlastn´ı datov´e struktury, ve kter´e se bude uchov´avat poˇzadovan´a historie. Tento pˇr´ıstup je v´ıce pracnˇejˇs´ı, nebot’ vyˇzaduje instalaci dodateˇcn´eho software, jeho konfiguraci a navrˇzen´ı vlastn´ı datov´e struktury na ukl´ad´an´ı dat vˇcetnˇe obsluˇzn´ ych skript˚ u prot vyhled´av´an´ı dat.
4.14
Monitoring
Pro zajiˇstˇen´ı bezprobl´emov´eho bˇehu je d˚ uleˇzit´e monitorovat jak provozn´ı veliˇ ˇciny, tak stav sluˇzeb. Na ZCU je vyuˇz´ıv´an monitorovac´ı syst´em Nagios, proto budou v tomto n´avrhu zm´ınˇeny z´akladn´ı postupy pro tento syst´em. Kromˇe n´ıˇze naznaˇcen´ ych postup˚ u existuje tak´e bal´ık nagios-plugins-openstack pro Debian, kter´ y obsahuje skripty pro testov´an´ı nˇekter´ ych komponent (Glance, Keystone, Nova-API a Swift). Dalˇs´ı informace poskytne tak´e ˇcl´anek Some practical considerations for monitoring in OpenStack cloud 11 .
4.14.1
Procesy
Bˇeh sluˇzeb lze monitorovat z´akladn´ım zp˚ usobem tak, ˇze se zkontroluje tabulka proces˚ u syst´emu. N´ıˇze uveden´ y pˇr´ıklad zkontroluje, zda na v´ ypoˇcetn´ım uzlu bˇeˇz´ı sluˇzba nova-compute. Do konfigurace Nagios serveru se pˇrid´a n´asleduj´ıc´ı: define service { host_name cloud-102.civ.zcu.cz check_command check_nrpe_1arg!check_nova-compute use generic-service notification_period 24x7 contact_groups sysadmins service_description nova-compute } 10 11
Detaily lze nal´ezt na: https://github.com/rackerlabs/yagi http://www.mirantis.com/blog/openstack-monitoring/
54
Popis a n´avrh architektury
Monitoring
Na v´ ypoˇcetn´ı uzel (cloud-102.civ.zcu.cz) je nainstalov´an NRPE12 a pˇrid´ana tato ˇra´dka do konfigurace: command[check_nova-compute]=/usr/lib/nagios/plugins/check_procs -c 1: -a nova-compute Uveden´ y postup se zopakuje pro vˇsechny monitorovan´e procesy.
4.14.2
Provozn´ı veliˇ ciny
D´ale je vhodn´e monitorovat vyuˇzit´ı zdroj˚ u na serverech, zejm´ena z´atˇeˇz, obsazenost disku, vyuˇzit´ı pamˇeti RAM ˇci s´ıt’ov´e I/O. Toto lze monitorovat napˇr. pˇres SNMP nebo pˇres jiˇz zm´ınˇen´ y Nagios. Pˇr´ıklad konfigurace Nagiosu pro varov´an´ı o doch´azej´ıc´ım m´ıstu na disku: define service { host_name cloud-102.civ.zcu.cz check_command check_nrpe!check_all_disks!20% 10% use generic-service contact_groups sysadmins service_description Disk } Na monitorovan´em serveru je do konfigurace NRPE pˇrid´ana tato ˇr´adka: command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -e Pˇri poklesu voln´eho m´ısta pod 20 % se v Nagiosu zobraz´ı varov´an´ı a pˇri poklesu pod 10 % chyba. 12
NRPE - Nagios Remote Plugin Executor
55
Popis a n´avrh architektury
4.15
Bezpeˇcnost, hesla
Bezpeˇ cnost, hesla
Ot´azka bezpeˇcnosti OpenStacku je velmi rozs´ahl´a a je k tomuto t´ematu vyd´ana samostatn´a pˇr´ıruˇcka13 . Tato kapitola se tedy bude vˇenovat jen z´akladn´ımu popisu toho, jak je zabezpeˇcen´ı ˇreˇseno a zm´ın´ı nˇekolik doporuˇcen´ı.
RabbitMQ Po instalaci serveru pro v´ ymˇenu zpr´av RabbitMQ je vytvoˇren automaticky uˇzivatel guest s heslem guest, proto je nutn´e toto heslo pˇred prvn´ım pouˇzit´ım zmˇenit: rabbitmqctl change_password guest NOV´ E_HESLO V´ yˇse nastaven´e heslo se pak mus´ı uv´adˇet v konfiguraˇcn´ım souboru kaˇzd´e komponenty, kter´a se k serveru pˇripojuje (parametr rabbit_password).
Webov´ e sluˇ zby Jak webov´ y port´al Horizon, tak vˇsechna REST14 API jednotliv´ ych kompo15 nent pracuj´ı na protokolu HTTP , kter´ y je standardnˇe nezabezpeˇcen´ y a pro vyˇsˇs´ı bezpeˇcnost je doporuˇceno vyuˇz´ıt SSL16 u veˇsker´e komunikace. Jelikoˇz u API nen´ı SSL nativnˇe podporov´ano OpenStackem, je nutn´e vyuˇz´ıt libovolnou SSL proxy (Pound, Stud, Apache, nginx, . . . ).
Datab´ aze Jednotliv´e komponenty se pˇripojuj´ı k centr´aln´ı datab´azi MySQL. Standardnˇe je komunikace neˇsifrovan´a, tud´ıˇz je doporuˇceno nakonfigurovat MySQL server 13
Kompletn´ı verze k dispozici na: http://docs.openstack.org/security-guide/ content/ 14 Representational State Transfer 15 Hypertext Transfer Protocol 16 Secure Sockets Layer
56
Popis a n´avrh architektury
Aktualizace syst´emu
na podporu SSL nebo vyuˇz´ıt pro spojen´ı komponent s datab´az´ı oddˇelenou priv´atn´ı s´ıt’ (pˇr´ıpadnˇe VPN17 ). Pro zapnut´ı SSL na MySQL je nutn´e m´ıt vygenerov´an certifik´at (veˇrejn´ y i priv´atn´ı kl´ıˇc) a v souboru /etc/my.cnf nastavit cesty k tomuto certifik´atu: [mysqld] ssl-cert=/path/to/ssl/server-cert.pem ssl-key=/path/to/ssl/server-key.pem Kaˇzd´a komponenta je registrov´ana v Keystone a m´a vlastn´ı uˇzivatelsk´e jm´eno a heslo, kter´ ym se k nˇemu pˇripojuje. Toto heslo je (zaˇsifrovanˇe) uloˇzeno v datab´azi Keystone a v ˇcist´e podobˇe v konfiguraˇcn´ım souboru dan´e komponenty. Kromˇe toho vˇetˇsina z nich pouˇz´ıv´a datab´azi MySQL, ke kter´e m´a vlastn´ı uˇzivatelsk´e jm´eno, heslo i datab´azi.
4.16
Aktualizace syst´ emu
Jak bylo naznaˇceno v pˇredchoz´ıch kapitol´ach, OpenStack je velmi ˇzivˇe vyv´ıjen´ y projekt. V´ yvojov´ y pl´an zahrnuje kaˇzd´ ych 6 mˇes´ıc˚ u vyd´an´ı nov´e hlavn´ı (major) verze. Krom toho vych´az´ı tak´e drobn´e aktualizace v r´amci aktu´aln´ı verze, kter´e je nutn´e instalovat. Drobn´e aktualizace nejsou probl´emem a jejich instalace je moˇzn´a s minim´aln´ım pˇreruˇsen´ım sluˇzeb, coˇz si autor ovˇeˇril v pr˚ ubˇehu prac´ı na praktick´e ˇc´asti. Vˇetˇs´ım probl´emem je pˇrechod n´asleduj´ıc´ı hlavn´ı (major) verzi, kter´a kromˇe pˇrid´av´an´ı nov´ ych vlastnost´ı ˇcasto zasahuje do souˇcasn´e struktury. To m´a za n´asledek nutnost u ´pravy konfiguraˇcn´ıch soubor˚ u apod. Vzhledem ke sloˇzitost´ı cel´eho syst´emu je velmi d˚ uraznˇe doporuˇceno [37], aby si administr´ator cloudu pˇripravil kopii ostr´eho prostˇred´ı, na nˇem otestoval proveditelnost aktualizace a teprve pot´e provedl aktualizaci provozn´ıho cloudu s odst´avkou sluˇzeb. 17
Virtual Private Network
57
Popis a n´avrh architektury
4.17
Moˇznosti pˇr´ıstupu
Moˇ znosti pˇ r´ıstupu
OpenStack poskytuje nˇekolik zp˚ usob˚ u, jak ho spravovat: • Webov´ y port´al Horizon. • REST API jednotliv´ ych sluˇzeb, kter´e je moˇzn´e vyuˇz´ıvat v´ıce zp˚ usoby: – Pˇr´ıstup z libovoln´e vlastn´ı aplikace. – Konzolov´e programy v Pythonu, kter´e jsou souˇca´st´ı distribuce. – Knihovny v Pythonu, kter´e jsou souˇca´st´ı distribuce a kter´e lze pouˇz´ıt pro usnadnˇen´ı pˇr´ıstupu z vlastn´ıch Python program˚ u. Pˇredpokladem pro vˇsechny metody pˇr´ıstupu je platn´ y uˇzivatelsk´ yu ´ˇcet v Keystone.
58
5 Realizace pilotn´ıho nasazen´ı Pro ovˇeˇren´ı realizovatelnosti navrˇzen´e architektury bylo uskuteˇcnˇeno pilotn´ı nasazen´ı, bˇehem kter´eho byla ovˇeˇrena jak funkˇcnost navrˇzen´eho celku, tak i ˇ kompatibilita s existuj´ıc´ım prostˇred´ım na ZCU. Pilotn´ı nasazen´ı si neklade za c´ıl b´ yt pˇresnou a kompletn´ı realizac´ı n´avrhu, n´ ybrˇz sp´ıˇse konceptem, kter´ y se bude d´ale rozv´ıjet. I vzhledem k omezen´ ym moˇznostem z hlediska dostupn´eho hardwarov´eho vybaven´ı bylo nutn´e pˇri nasazen´ı pˇristoupit k nˇekter´ ym kompromis˚ um. Vˇsechny odchylky od n´avrhu jsou v textu pr´ace zm´ınˇeny a zd˚ uvodnˇeny.
5.1
Testovac´ı hardware
Pro pilotn´ı nasazen´ı OpenStacku byly ze zdroj˚ u CIV poskytnuty tˇri servery. Prvn´ı fyzick´ y server (cloud-101) byl pouˇzit na um´ıstˇen´ı vˇsech kontroln´ıch souˇc´ast´ı OpenStacku. Dalˇs´ı dva servery (cloud-102 a cloud-001) poslouˇzily pro hostov´an´ı vytvoˇren´ ych virtu´aln´ıch stroj˚ u. Kaˇzd´ y server m´a dvˇe s´ıt’ov´e karty, prvn´ı je pˇripojen do Internetu a druh´a slouˇz´ı pro vnitˇrn´ı komunikaci mezi servery. Obˇe rozhran´ı jsou pˇripojeny na gigabitov´ y switch. ´ cel Uˇ Veˇ rejn´ a IP Priv´ atn´ı IP Procesor J´ adra/vl´ akna Pamˇ et’ RAM Disk
cloud-101 Controller 147.228.253.111 192.168.1.111 1× Intel E5-2420 6/12 16 GB 2× 300 GB
cloud-102 Compute 147.228.253.112 192.168.1.112 2× Intel X5560 4/8 32 GB 2× 300 GB
cloud-001 Compute 147.228.253.11 192.168.1.11 2× Intel 5150 2/2 8 GB 2× 250 GB
Tabulka 5.1: Parametry hardware pro pilotn´ı nasazen´ı Zdroj: vlastn´ı zpracov´ an´ı
59
Realizace pilotn´ıho nasazen´ı
5.2
Software
Software
Pro provoz je vyuˇzita standardn´ı provozn´ı instalace operaˇcn´ıho syst´emu na CIV, kter´a je zaloˇzena na Debian 7. Aˇckoliv je jako doporuˇcen´a distribuce pro nasazen´ı OpenStacku oznaˇcov´ano Ubuntu LTS, pouˇzit´ y Debian patˇr´ı rovnˇeˇz mezi podporovan´ y a pˇri nasazen´ı nenastaly ˇza´dn´e pot´ıˇze pramen´ıc´ı z volby t´eto distribuce. Pro pilotn´ı nasazen´ı byl pouˇzit OpenStack ve verzi Havana, kter´a byla v dobˇe nasazen´ı (listopad 2013) aktu´aln´ı.
5.2.1
Z´ akladn´ı konfigurace
Vˇsechny servery, na kter´ ych budou provozov´any komponenty OpenStacku, mus´ı b´ yt pˇripraveny identick´ ym v´ ychoz´ım zp˚ usobem. Zahrnuje to pˇredevˇs´ım 1 instalaci NTP , d´ıky kter´emu se bude ˇcas v r´amci clusteru spr´avnˇe synchronizovat. Je doporuˇceno, aby ˇcas zvenˇc´ı pˇreb´ıral pouze jeden centr´aln´ı server a vˇsechny ostatn´ı pˇreb´ıraly ˇcas od nˇej. Toho lze doc´ılit u ´pravou souboru /etc/ntp.conf: server
Ostatn´ı servery z konfigurace odstran´ıme. Dalˇs´ım krokem je pˇrid´an´ı ofici´aln´ıch repozit´aˇr˚ u do /etc/apt/sources.list: deb http://archive.gplhost.com/debian havana-backports main deb http://archive.gplhost.com/debian havana main Pot´e je nutn´e aktualizovat lok´aln´ı datab´azi a nainstalovat kl´ıˇc repozit´aˇre: # apt-get update && apt-get install gplhost-archive-keyring D´ale je nutn´e nainstalovat bal´ıky python-mysqldb a python-argparse. 1
Network Time Protocol
60
Realizace pilotn´ıho nasazen´ı
5.3
Rozloˇzen´ı komponent
Rozloˇ zen´ı komponent
Jak jiˇz bylo zm´ınˇeno dˇr´ıve, OpenStack je tvoˇren nˇekolika samostatn´ ymi komponentami. Tyto je vhodn´e v ostr´em provozu um´ıstit na samostatn´e servery, nicm´enˇe vzhledem k omezen´emu mnoˇzstv´ı fyzick´ ych server˚ u pro pilotn´ı provoz bylo nutn´e ˇr´ıd´ıc´ı servery virtualizovat, jak ilustruje obr. 5.1.
Virtualizace KVM Nova-compute MySQL Keystone (identita) Nova (řízení) Horizon (webgui) Glance (obrazy)
...
Virtualizace KVM Nova-compute
Neutron (síť)
...
Cinder (ukládání)
Obr´azek 5.1: Rozloˇzen´ı sluˇzeb v realizovan´e architektuˇre Zdroj: vlastn´ı zpracov´ an´ı
Technicky by sice bylo moˇzn´e vˇsechny sluˇzby nainstalovat na jeden server, avˇsak realizovan´e ˇreˇsen´ı je praktiˇctˇejˇs´ı z hlediska budouc´ıho rozvoje – jednotliv´e virtualizovan´e servery lze snadno pˇresunout na vlastn´ı fyzick´ y server nebo jim dle potˇreby nav´ yˇsit zdroje (pamˇet’ ˇci CPU). 61
Realizace pilotn´ıho nasazen´ı
Controller node
V pilotn´ım provozu bylo upuˇstˇeno od ˇreˇsen´ı vysok´e dostupnosti, jehoˇz n´avrh byl detailnˇe pops´an v kap. 4.11. Autor doporuˇcuje zv´aˇzit implementaci HA v ostr´em provozu, aˇckoliv vzhledem k projektovan´emu vyuˇzit´ı je moˇzn´e se spokojit se souˇcasn´ ym modelem typu best-effort2 .
5.4
Controller node
ˇ ıd´ıc´ı uzel tvoˇr´ı z´asadn´ı ˇca´st cel´e infrastruktury. Jako prvn´ı byla na server R´ nainstalov´ana centr´aln´ı datab´aze MySQL, na kter´e z´avis´ı vˇsechny ostatn´ı sluˇzby: # apt-get install python-mysqldb mysql-server Instalace bal´ıˇcku neprovede inicializaci datab´aze, coˇz je nutn´e prov´est ruˇcnˇe. Z´aroveˇ n je vhodn´e ihned nastavit heslo spr´avce (root), coˇz se realizuje programem mysql_secure_installation: # mysql_install_db # mysql_secure_installation Druh´ y v poˇrad´ı byl n´asledoval server pro v´ ymˇenu zpr´av v r´amci clusteru RabbitMQ, kter´emu je vhodn´e ihned po instalaci zmˇenit uˇzivatelsk´e heslo: # apt-get install rabbitmq-server # rabbitmqctl change_password guest NOV´ E_HESLO Hned pot´e n´asledoval spr´avce identit Keystone vˇc. konzolov´eho klienta: # apt-get install keystone python-keystoneclient Postinstalaˇcn´ı proces konfigurace prob´ıh´a pˇres program debconf, kter´ y n´as postupnˇe vyzve k zad´an´ı ˇrady potˇrebn´ ych promˇenn´ ych – napˇr. vlastn´ı
62
Realizace pilotn´ıho nasazen´ı
Controller node
Obr´azek 5.2: Prostˇred´ı debconf pro konfiguraci Zdroj: [39]
administraˇcn´ı token, jak ukazuje obr. 5.2. Debconf tak´e zajist´ı napojen´ı jednotliv´ ych komponent OpenStacku do registru v Keystone, ˇc´ımˇz usnadn´ı ˇca´st konfigurace. N´aslednˇe byl na server nainstalov´an Glance, kter´ y spravuje datab´azi obraz˚ u (images) virtu´aln´ıch server˚ u. Glance vyuˇz´ıv´a v pilotn´ım provozu pro ukl´ad´an´ı obraz˚ u virtu´aln´ıch server˚ u lok´aln´ı u ´loˇziˇstˇe, ale pro ostr´ y provoz by bylo vhodnˇejˇs´ı vyuˇz´ıt extern´ıho. V aktu´aln´ı verzi OpenStacku (Havana) vˇsak nen´ı plnˇe dokonˇcena podpora Cinderu jako u ´loˇziˇstˇe dat pro Glance3 . # apt-get install glance python-glanceclient ˇ ıd´ıc´ı komponentu v´ R´ ypoˇcetn´ıho clusteru (Nova) nainstalujeme vˇcetnˇe vˇsech podp˚ urn´ ych ˇc´ast´ı pˇr´ıkazem: # apt-get install nova-consoleproxy nova-api \ nova-cert nova-conductor nova-consoleauth \ nova-scheduler python-novaclient Posledn´ı nainstalovanou komponentou je webov´ y port´al Horizon: # apt-get install memcached libapache2-mod-wsgi \ openstack-dashboard openstack-dashboard-apache 2
Nen´ı garantov´ ana spolehlivost sluˇzby. V´ıce informac´ı o (ne)podpoˇre: http://docs.openstack.org/developer/glance/ configuring.html#configuring-the-cinder-storage-backend 3
63
Realizace pilotn´ıho nasazen´ı
Controller node
Konfiguraˇcn´ı soubory pro vˇsechny instalovan´e komponenty jsou vzhledem ke sv´emu rozsahu um´ıstˇeny na pˇriloˇzen´em CD v adres´aˇri /config.
5.4.1
Obrazy server˚ u
Jak jiˇz bylo zm´ınˇeno, komponenta Glance spravuje obrazy virtu´aln´ıch server˚ u. V z´akladn´ı instalaci nen´ı obsaˇzen ˇza´dn´ y obraz a je nutn´e si obrazy nejprve naimportovat. Jsou podporov´any n´asleduj´ıc´ı form´aty obraz˚ u: • raw • vhd (VMWare, Xen, Microsoft, VirtualBox, . . . ) • vmdk • vdi (VirtualBox, QEMU) • iso • qcow2 (QEMU, KVM) • aki, ari, ami (Amazon kernel, ramdisk, machine) V r´amci testovac´ıho provozu byly na cloud nahr´any n´asleduj´ıc´ı obrazy: • CirrOS 0.3.1, kter´ y slouˇz´ı jako minim´aln´ı distribuce pˇredevˇs´ım pro otestov´an´ı spr´avn´e funkˇcnosti. • CentOS 6.5 • Ubuntu 12.04 LTS Obrazy pro dalˇs´ı operaˇcn´ı syst´emy lze bud’ st´ahnout, k ˇcemuˇz nab´ız´ı dokumentace OpenStacku ˇradu odkaz˚ u4 , nebo vytvoˇrit sv´epomoc´ı podle velmi podrobn´eho n´avodu z dokumentace OS5 . Import m˚ uˇze prob´ıhat bud’ pˇres port´al nebo pomoc´ı konzolov´eho klienta: 4
Detaily na: http://docs.openstack.org/image-guide/content/ch_obtaining_ images.html 5 V´ıce informac´ı na: http://docs.openstack.org/image-guide/content/ch_ creating_images_manually.html
64
Realizace pilotn´ıho nasazen´ı
Storage node
# wget -O cirros.img http://download.cirros-cloud.net/0.3.2/\ cirros-0.3.2-x86_64-disk.img # glance image-create --name=CirrOS --disk-format=qcow2 \ --container-format=bare --is-public=true < cirros.img Glance pˇres v´ yˇse uveden´e form´aty podporuje ˇsirokou paletu operaˇcn´ıch syst´emu – Linux, Windows, FreeBSD, . . . Je dostupn´a kontextualizace obraz˚ u ve formˇe nahr´an´ı uˇzivatelsk´ ych SSH kl´ıˇc˚ u pˇri vytv´aˇren´ı. Je nutn´e, aby mˇel uˇzivatel pˇredem pˇripraven´ y sv˚ uj kl´ıˇc a veˇrejnou ˇca´st nahr´al pˇres port´al nebo API.
5.5
Storage node
Uzel s diskov´ ym u ´loˇziˇstˇem byl realizov´an jako samostatn´ y virtu´aln´ı server. Cinder pracuje pˇr´ımo s intern´ım u ´loˇziˇstˇem (v obr´azku 5.3 /dev/hda), kter´e d´ale rozdˇeluje pomoc´ı LVM a tyto svazky propojuje s compute node (Nova) pomoc´ı iSCSI. Prvn´ım krokem bylo vytvoˇren´ı LVM na serveru (/dev/xvdb je lok´aln´ı disk) a vytvoˇren´ı svazku (VG) se jm´enem cinder-volumes, na kter´em pak bude Cinder vytv´aˇret logick´e svazky (LV): # pvcreate /dev/xvdb # vgcreate cinder-volumes /dev/xvdb Po z´akladn´ı instalaci (viz kap. 5.2.1) byly na server nainstalov´any potˇrebn´e bal´ıky: # apt-get install cinder-api cinder-scheduler cinder-volume Konfiguraˇcn´ı soubor je vzhledem ke sv´emu rozsahu um´ıstˇen na pˇriloˇzen´em CD v adres´aˇri /config.
65
Realizace pilotn´ıho nasazen´ı
Networking node
Nova
Cinder
VM instance /dev/vda
KVM
Linux Volume Manager
iSCSI initiator
iSCSI target
/dev/hda
Obr´azek 5.3: Storage server s intern´ım uloˇziˇstˇem Zdroj: [52]
5.6
Networking node
S´ıt’ov´ y uzel tvoˇr´ı rozhran´ı mezi internetem a priv´atn´ı s´ıt´ı, na kterou jsou um´ıstˇen´e (nejen) samotn´e virtu´aln´ı servery. Proch´az´ı j´ım tedy veˇsker´a komunikace virtu´aln´ıch server˚ u s vnˇejˇs´ım svˇetem. Je um´ıstˇen na samostatn´em virtu´aln´ım serveru, protoˇze jde o komponentu, kde se oˇcek´av´a vyˇsˇs´ı z´atˇeˇz pˇri provozu. Obr´azek 5.4 zachycuje navrˇzen´e sch´ema s´ıtˇe. Veˇsker´ y datov´ y tok z virtua´ln´ıho serveru proch´az´ı pˇres intern´ı s´ıt’ a s´ıt’ov´ y uzel (IP 192.168.1.114). Pˇri pilotn´ım nasazen´ı bylo upuˇstˇeno od realizace varianty s GRE tunely a VLANy. Realizavn´ y pilotn´ı provoz pracuje s FLAT modelem s´ıtˇe, kde nejsou jednotliv´e virtu´aln´ı servery izolov´any. Po u ´vodn´ı pˇr´ıpravˇe serveru (kap. 5.2.1) nainstalujeme bal´ıky komponenty
66
Realizace pilotn´ıho nasazen´ı
Networking node
eth1 192.168.1.114
eth0 147.228.253.114
eth1 192.168.1.11
Networking
Compute node 1 eth1 192.168.1.113
eth0 147.228.253.113
Public network
eth1 192.168.1.112
Private network Controller
Compute node 2
eth1 192.168.1.115
Storage
Obr´azek 5.4: Sch´ema s´ıtˇe a zakreslen´ı toku dat z virtu´aln´ıho serveru Zdroj: vlastn´ı zpracov´ an´ı
Neutron: # apt-get install neutron-server neutron-dhcp-agent \ neutron-plugin-openvswitch-agent neutron-l3-agent D´ale je nutn´e upravit soubor /etc/sysctl.conf, aby s´ıt’ov´ y uzel mohl ˇr´ıdit provoz jednotliv´ ych instanc´ı: net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 67
Realizace pilotn´ıho nasazen´ı
Compute node
K propagaci zmˇen v souboru pouˇzijeme pˇr´ıkaz sysctl -p. Konfiguraˇcn´ı soubor je vzhledem ke sv´emu rozsahu um´ıstˇen na pˇriloˇzen´em CD v adres´aˇri /config.
5.7
Compute node
V r´amci pilotn´ıho provozu byly nainstalov´any a pˇripraveny dva v´ ypoˇcetn´ı uzly (cloud-102 a cloud-001, viz. tabulka 5.1), oba s identickou softwarovou konfigurac´ı. Po z´akladn´ı pˇr´ıpravˇe (kap. 5.2.1) provedeme instalaci potˇrebn´ ych bal´ık˚ u: # apt-get install nova-compute-kvm python-guestfs \ openstack-compute-node Kaˇzd´ y dalˇs´ı v´ ypoˇcetn´ı uzel se pˇrid´a tak, ˇze po proveden´ı v´ yˇse uveden´eho postupu z libovoln´eho existuj´ıc´ıho v´ ypoˇcetn´ıho nebo ˇr´ıd´ıc´ıho uzlu pˇrekop´ırujeme soubor /etc/nova/nova.conf, ve kter´em uprav´ıme IP adresu u poloˇzek my_ip, vncserver_listen a vncserver_proxyclient_address. Konfiguraˇcn´ı soubor je vzhledem ke sv´emu rozsahu um´ıstˇen na pˇriloˇzen´em CD v adres´aˇri /config.
5.8
Ceilometer
Instalaci komponenty pro mˇeˇren´ı vyuˇz´ıv´an´ı zdroj˚ u je nutn´e prov´est ve v´ıce kroc´ıch. Hlavn´ı ˇca´st komponenty bude um´ıstˇena na Controller node. Ceilometer nepodporuje v souˇcasn´e dobˇe relaˇcn´ı datab´az´ı MySQL a proto je nutn´e nainstalovat MongoDB6 , coˇz je jedin´a podporovan´a datab´aze. Standardn´ı repozit´aˇre Debianu obsahuj´ı velmi zastaralou verzi a proto je nutn´e pˇred instalac´ı do syst´emu pˇridat ofici´aln´ı repozit´aˇr MongoDB: # apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 6
http://www.mongodb.org/
68
Realizace pilotn´ıho nasazen´ı
Ceilometer
# echo ’deb http://downloads-distro.mongodb.org/repo/debian-sysvinit \ dist 10gen’ | sudo tee /etc/apt/sources.list.d/mongodb.list # apt-get update # apt-get install mongodb-org V konfiguraˇcn´ım souboru /etc/mongod.conf uprav´ıme tyto hodnoty, zbytek nech´ame v´ ychoz´ı: bind_ip = 127.0.0.1 smallfiles = true Server spust´ıme pˇr´ıkazem /etc/init.d/mongod start, pˇripoj´ıme se k nˇemu a zaloˇz´ıme uˇzivatele: # mongo > use ceilometer > db.addUser( { user: "ceilometer", pwd: "CEILOMETER_DB_HESLO", roles: [ "readWrite", "dbAdmin" ] } ) D´ale jiˇz m˚ uˇzeme nainstalovat samotn´ y Ceilometer: # apt-get install ceilometer-api ceilometer-collector \ ceilometer-agent-central python-ceilometerclient Jeho konfigurace jiˇz nen´ı automatick´a jako u ostatn´ıch komponent. Budeme potˇrebovat vygenerovat TAJN´ Y_KL´ Iˇ C, kter´ y slouˇz´ı pro podepisov´an´ı komunikace mezi uzly Ceilometeru a tak´e vytvoˇrit nov´ y servisn´ı u ´ˇcet v Keystone (uˇzivatel ceilometer, tenant service a n´ahodn´e heslo). Pot´e ruˇcnˇe uprav´ıme soubor /etc/ceilometer/ceilometer.conf: [database] connection = mongodb://ceilometer:CEILOMETER_DB_HESLO@ \ 127.0.0.1:27017/ceilometer 69
Realizace pilotn´ıho nasazen´ı
Ceilometer
[publisher_rpc] metering_secret = TAJN´ Y_KL´ Iˇ C [keystone_authtoken] auth_host = controller auth_port = 35357 auth_protocol = http auth_uri = http://controller:5000 admin_tenant_name = service admin_user = ceilometer admin_password = CEILOMETER_SERVICE_HESLO [service_credentials] os_username = ceilometer os_tenant_name = service os_password = CEILOMETER_SERVICE_HESLO Pro aplikaci nov´eho nastaven´ı sluˇzby restartujeme: # service ceilometer-agent-central restart # service ceilometer-api restart # service ceilometer-collector restart
5.8.1
´ Upravy v komponentˇ e Cinder
Do souboru /etc/cinder/cinder.conf pˇrid´ame n´asleduj´ıc´ı ˇra´dky: [DEFAULT] ... control_exchange = cinder notification_driver = cinder.openstack.common.notifier.rpc_notifier Pro naˇcten´ı zmˇen je nutn´ y restart sluˇzeb: # service cinder-volume restart # service cinder-api restart 70
Realizace pilotn´ıho nasazen´ı
5.8.2
Ceilometer
´ Upravy v komponentˇ e Glance
Do souboru /etc/glance/glance-api.conf pˇrid´ame n´asleduj´ıc´ı ˇr´adky (za RABBIT_HESLO dosad´ıme heslo, kter´e jsme nastavili v kap. 5.4): [DEFAULT] ... notifier_strategy = rabbit rabbit_host = controller rabbit_password = RABBIT_HESLO Pro naˇcten´ı zmˇen je nutn´ y restart sluˇzeb: # service glance-registry restart # service glance-api restart
5.8.3
´ Upravy v komponentˇ e Nova
Pro mˇeˇren´ı zdroj˚ u na v´ ypoˇcetn´ım uzlu mus´ıme nejprve nainstalovat sluˇzbu, kter´a ho zprostˇredkuje: # apt-get install ceilometer-agent-compute Soubor /etc/nova/nova.conf uprav´ıme n´asledovnˇe: [DEFAULT] ... instance_usage_audit = True instance_usage_audit_period = hour notify_on_state_change = vm_and_task_state notification_driver = nova.openstack.common.notifier.rpc_notifier notification_driver = ceilometer.compute.nova_notifier Uprav´ıme tak´e soubor /etc/ceilometer/ceilometer.conf: 71
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı [publisher_rpc] metering_secret = TAJN´ Y_KL´ Iˇ C
[keystone_authtoken] auth_host = controller auth_port = 35357 auth_protocol = http auth_uri = http://controller:5000 admin_tenant_name = service admin_user = ceilometer admin_password = CEILOMETER_SERVICE_HESLO [service_credentials] os_username = ceilometer os_tenant_name = service os_password = CEILOMETER_SERVICE_HESLO Pro naˇcten´ı zmˇen sluˇzbu restartujeme: # service ceilometer-agent-compute restart V´ ysledkem je funkˇcn´ı komponenta, kter´a sb´ır´a data o vyuˇzit´ı uveden´ ych sluˇzeb. Pˇr´ıkladem je obr. 5.5, kter´ y zachycuje zobrazen´ı v´ ystup˚ u v port´alu Horizon.
5.9
ˇ Integrace do prostˇ red´ı ZCU
ˇ bylo nutn´e se vypoˇra´dat pˇrePˇri zapojen´ı do existuj´ıc´ı infrastruktury ZCU devˇs´ım se spr´avou uˇzivatelsk´ ych u ´ˇct˚ u a pˇrihlaˇsov´an´ım ke sluˇzbˇe. Jak uv´ad´ı [21], doba, kdy kaˇzd´a aplikace pˇrin´aˇs´ı sv˚ uj vlastn´ı zp˚ usob ovˇeˇrov´an´ı, se jiˇz pomalu st´av´a minulost´ı. Bylo tedy nutn´e prov´est u ´pravy vedouc´ı k zapojen´ı syst´emu do Single-Sign-On architektury, aby bylo zajiˇstˇeno pohodln´e vyuˇz´ıv´an´ı uˇzivateli bez nutnosti pamatovat si dalˇs´ı hesla.
72
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı
Obr´azek 5.5: V´ ystup mˇeˇren´ı z´atˇeˇze CPU v port´alu Horizon Zdroj: vlastn´ı zpracov´ an´ı
5.9.1
Digit´ aln´ı certifik´ at
Aby bylo moˇzn´e k webov´emu port´alu a ostatn´ım sluˇzb´am pˇristupovat zabezpeˇcenˇe, je pouˇzit protokol TLS7 , coˇz je kryptografick´ y protokol zajiˇst’uj´ıc´ı ˇsifrovanou komunikaci po poˇc´ıtaˇcov´e s´ıti. Tento protokol umoˇzn ˇuje aplikac´ım typu klient/server komunikovat takov´ ym zp˚ usobem, kter´ y zabraˇ nuje odposlechu nebo padˇel´an´ı zpr´av. [13] Protokol vyuˇz´ıv´a asymetrickou kryptografii, pˇriˇcemˇz ale nen´ı zaruˇcena identita druh´e strany. Z tohoto d˚ uvodu existuje infrastruktura veˇrejn´eho kl´ıˇce (Public Key Infrastructure, PKI), kter´a pro zajiˇstˇen´ı d˚ uvˇeryhodnosti vyuˇz´ıv´a certifikaˇcn´ı autority (CA). PKI je struktura, kter´a se skl´ad´a z hardwaru, softwaru, osob, politik a procedur potˇrebn´ ych pro vytv´aˇren´ı, spr´avu, ukl´ad´an´ı, distribuci a zneplatˇ nov´an´ı digit´aln´ıch certifik´at˚ u. [55] Pro vyd´an´ı vlastn´ıho digit´aln´ıho certifik´atu je nutn´e vygenerovat priv´atn´ı 7
Transport Layer Security
73
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı
kl´ıˇc (z˚ ust´av´a utajen) a ˇza´dost (Certificate signing request, CSR). Tuto ˇza´dost pot´e pˇred´ame n´ami zvolen´e CA, kter´a po ovˇeˇren´ı identity subjektu, pro kter´ y m´a b´ yt certifik´at vystaven, vyd´a digit´aln´ı certifik´at. Certifikaˇcn´ıch autorit je cel´a ˇrada, pˇriˇcemˇz pro bezprobl´emov´ y zabezpeˇcen´ y pˇr´ıstup z klientsk´ ych poˇc´ıtaˇc´ıch je nutn´e, aby byl koˇrenov´ y certifik´at zvolen´e CA um´ıstˇen mezi d˚ uvˇeryhodn´ ymi na dan´em poˇc´ıtaˇci. Pro projektovan´e akademick´e vyuˇzit´ı bylo moˇzn´e vyuˇz´ıt serverov´e certifik´aty TERENA Certificate Service (TCS), kter´e jsou vyd´av´any pod hlaviˇckou d˚ uvˇeryhodn´e CA COMODO pro akademick´e insitituce zapojen´e do s´ıtˇe CESNET2. 8 V r´amci t´eto pr´ace byl vyd´an certifik´at pro https://cloud.civ.zcu.cz.
5.9.2
Kerberos a WebAuth
ˇ je Jelikoˇz je pˇr´ıstup k aplikaci podm´ınˇen existenc´ı Orion konta v r´amci ZCU, pro ovˇeˇren´ı identity uˇzivatele vyuˇzit syst´em WebAuth zaloˇzen´ y na autentizaˇcn´ım syst´emu Kerberos. Tento pˇr´ıstup eliminuje nutnost zakl´adat samostatn´e u ´ˇcty pouze pro u ´ˇcel OpenStacku s vlastn´ım heslem a tak jde n´avrh v duchu Single-Sign-On (SSO), kde si uˇzivatel vystaˇc´ı s pˇrihl´aˇsen´ım k v´ıce sluˇzb´am na jednom m´ıstˇe. Princip fungov´an´ı zachycuje obr. 5.6. Technicky je fungov´an´ı zajiˇstˇeno pˇres modul mod webauth do webov´eho serveru Apache, kter´ y je vyv´ıjen na Stanfordovˇe univerzitˇe9 . Pro Debian existuje pˇripraven´ y bal´ıˇcek, instalace je tedy trivi´aln´ı a nainstaluj´ı se i vˇsechny potˇrebn´e z´avislosti (zejm´ena knihovny pro Kerberos): apt-get install libapache2-webauth Modul (/etc/apache2/mods-available/webauth.conf) je nakonfigurov´an n´asleduj´ıc´ım zp˚ usobem: WebAuthLoginURL "https://webkdc.zcu.cz/login.fcgi" 8
http://support.zcu.cz/index.php/Z\%C3\%ADsk\%C3\%A1n\%C3\%AD_serverov\ %C3\%A9ho_certifik\%C3\%A1tu_TCS_COMODO_pro_webov\%C3\%BD_server 9 http://webauth.stanford.edu/
74
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı
Obr´azek 5.6: Prvotn´ı pˇrihl´aˇsen´ı uˇzivatele Zdroj: [21]
WebAuthWebKdcURL "https://webkdc.zcu.cz/webkdc-service/" WebAuthWebKdcPrincipal webkdc/webkdc WebAuthKeyring /etc/webauth/keyring WebAuthKeyringAutoUpdate on WebAuthKeyringKeyLifetime 30d WebAuthKeytab /etc/webauth/keytab WebAuthServiceTokenCache /etc/webauth/service_token.cache V souboru /etc/webauth/keyring se nach´az´ı kl´ıˇc Kerberos principalu aplikaˇcn´ıho serveru. D´ale je nutn´e vyˇza´dat autentizaci pro port´al, coˇz provedeme pˇrid´an´ım tˇechto ˇra´dk˚ u do souboru openstack-dashboard-ssl.conf, kter´ y najdeme v 75
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı adres´aˇri /etc/apache2/sites-available/: AuthType WebAuth Require valid-user
T´ımto je povolen pˇr´ıstup vˇsem autentizovan´ ym drˇzitel˚ um Orion konta.
5.9.3
Uˇ zivatelsk´ eu ´ˇ cty
Z´akladn´ı identitou syt´emu opr´avnˇen´ı v OpenStacku je uˇzivatel (user), kter´ y m´a pˇridˇelen´e heslo. Uˇzivatel m˚ uˇze patˇrit do jednoho nebo v´ıce projekt˚ u (tenants) v definovan´e roli (uˇzivatel, administr´ator, . . . ).
Kv´ oty Pro kaˇzd´ y projekt se definuj´ı kv´oty, zejm´ena pro: • Velikost diskov´ ych jednotek v GB. • Poˇcet vytvoˇren´ ych diskov´ ych jednotek. • Poˇcet spuˇstˇen´ ych instanc´ı server˚ u. • Poˇcet alokovan´ ych jader procesoru. • Poˇcet alokovan´ ych IP adres. Na novˇe zaloˇzen´ y projekt se aplikuj´ı defaultn´ı kv´oty, kter´e m˚ uˇze upravit administr´ator bud’ pˇres port´al (Admin → Defaults → Update Defaults) nebo pˇres konzolov´ y pˇr´ıkaz: nova quota-class-update --instances 2 default
76
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı
V´ yˇse uveden´ ym pˇr´ıkazem nastav´ıme defaultn´ı limit na 2 vytvoˇren´e instance serveru. V´ ypis vˇsech kv´ot provedeme pˇr´ıkazem: nova quota-defaults Pˇridˇelen´e kv´oty lze projekt˚ um kdykoliv upravit bud’ pˇres port´al (Admin → Projects → More → Modify Quotas) nebo konzolov´ ym programem. Je moˇzn´e tak´e sledovat vyuˇzit´ı kv´ot a z´ıskat z´akladn´ı pˇredstavu o vyuˇz´ıv´an´ı zdroj˚ u konkr´etn´ım projektem. V´ ypis bˇeˇz´ıc´ıch instanc´ı a souhrnn´e statistiky (poˇcet instanc´ı, celkov´a velikost RAM a poˇcet alokovan´ ych procesorohodin“ ” za zvolen´ y ˇcasov´ yu ´sek) je dostupn´ y tak´e pˇres web (Admin → Projects → More → View Usage), pˇr´ıklad v´ ypisu ilustruje obr. 5.7.
Obr´azek 5.7: Zobrazen´ı vyuˇzit´ı zdroj˚ u projektem Zdroj: vlastn´ı zpracov´ an´ı
ˇ Uˇ zivatel´ e na ZCU Pro ˇr´ızen´ı uˇzivatelsk´ ych u ´ˇct˚ u m´ame k dispozici dvˇe moˇznosti. Prvn´ı moˇznost´ı je vytvoˇrit pro kaˇzd´eho uˇzivatele vlastn´ı projekt, kter´emu nastav´ıme limity. 77
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı
Druh´ ym pˇr´ıstupem je uˇzivateli nezakl´adat automaticky vlastn´ı projekt, ale zaˇradit ho do existuj´ıc´ıch vˇetˇs´ıch celk˚ u. Typick´ ym sc´en´aˇrem m˚ uˇze b´ yt situace, kdy budeme cht´ıt uˇzivatele sdruˇzovat do projekt˚ u podle fakulty a katedry. M˚ uˇzeme k tomu vyuˇz´ıt univerzitn´ı 10 LDAP datab´azi, kter´a poskytuje z´akladn´ı informace o studentovi: # ldapsearch -x -H ldap://ldap.zcu.cz uid=martv ...(vynechan´ e r ˇ´ adky)... memberof: cn=stud-kat-kiv,ou=Groups,ou=rfc2307,o=zcu,c=cz memberof: cn=students-fav,ou=Groups,ou=rfc2307,o=zcu,c=cz y O uˇzivateli martv jsme schopni zjistit, ˇze studuje na FAV11 a m´a zapsan´ 12 libovoln´ y pˇredmˇet z KIV . V´ıce informac´ı n´am LDAP bohuˇzel neposkytne a pokud bychom chtˇeli sdruˇzovat uˇzivatele podle pˇresnˇejˇs´ıch krit´eri´ı, napˇr´ıklad podle pˇredmˇet˚ u, kter´e aktu´alnˇe studuje, mus´ıme vyuˇz´ıt webovou sluˇzbu univerzitn´ıho syst´emu IS/STAG13 . Pro zjiˇstˇen´ı aktu´alnˇe zapsan´ ych pˇredmˇet˚ u uˇzivatele potˇrebujeme nejprve zjistit jeho osobn´ı ˇc´ıslo. To provedeme zavol´an´ım webov´e sluˇzby a pˇred´an´ım uˇzivatelsk´eho jm´ena jako parametr: https://stag-ws.zcu.cz/ws/services/rest/orion/ getOsobniCislaByOrionLogin?login=martv Webov´a sluˇzba n´am vr´at´ı osobn´ı ˇc´ıslo (A11N0016K), se kter´ ym m˚ uˇzeme d´ale pracovat a vyˇza´dat si seznam pˇredmˇet˚ u, kter´e m´a student v aktu´aln´ım semestru zapsan´e: https://stag-ws.zcu.cz/ws/services/rest/predmety/ getPredmetyByStudent?osCislo=A11N0016K&semestr=ZS 10
Lightweight Directory Access Protocol Fakulta aplikovan´ ych vˇed 12 Katedra informatiky a v´ ypoˇcetn´ı techniky 13 Kompletn´ı dokumentace k dispozici na: https://stag-ws.zcu.cz/ws/help/ 11
78
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı Realizace napojen´ı
Jak jiˇz bylo zm´ınˇeno, Keystone podporuje i extern´ı autentizaˇcn´ı sluˇzby a bylo ˇ vyuˇz´ıv´an. by moˇzn´e ho pˇr´ımo napojit na Kerberos, kter´ y je na ZCU Tento postup by vˇsak znamenal, ˇze by uˇzivatel´e museli zad´avat sv´e pˇrihlaˇsovac´ı u ´daje pˇr´ımo do rozhran´ı OpenStacku, coˇz nen´ı povaˇzov´ano zadavatelem za ide´aln´ı v tom smˇeru, ˇze si nepˇreje, aby se takto citliv´e u ´daje zad´avaly na pˇr´ımo do aplikac´ı tˇret´ıch stran. Bylo tedy nutn´e vyuˇz´ıt jiˇz zm´ınˇen´ y WebAuth. Na stranˇe Keystone ale vznikl probl´em, protoˇze jeho uˇzivatelsk´a datab´aze nen´ı nijak napojena na univerzitn´ı seznam uˇzivatel˚ u. Takˇze i pˇres u ´spˇeˇsnou WebAuth autentizaci nebyl uˇzivatel pˇrihl´aˇsen, protoˇze v datab´azi Keystone neexistoval jeho u ´ˇcet. Tento probl´em je ˇreˇsiteln´ y nˇekolika zp˚ usoby. Jedn´ım z nich je periodick´a hromadn´a aktualizace datab´aze Keystone tak, aby obsahovala vˇsechny Orion ˇ Vzhledem k pˇredpokladu, ˇze OpenStack bude vyuˇz´ıvat pouze u ´ˇcty na ZCU. mal´ y zlomek drˇzitel˚ u Orion konta (kter´ ych je nyn´ı cca. 20 tis´ıc), nen´ı idea´ln´ı m´ıt v datab´azi vˇsechny opr´avnˇen´e uˇzivatele kv˚ uli vyˇsˇs´ı pˇrehlednosti a jednoduchosti spr´avy. Autor pr´ace navrhl a realizoval vlastn´ı zp˚ usob spoˇc´ıvaj´ıc´ı ve vytvoˇren´ı skriptu, kter´ y po u ´spˇeˇsn´em pˇrihl´aˇsen´ı pˇres WebAuth pˇriprav´ı v Keystone uˇzivatelsk´ y u ´ˇcet a uˇzivatele automaticky pˇrihl´as´ı na Horizon port´al, kter´ y nativnˇe neum´ı pracovat s WebAuthem. V´ yhodou je, ˇze uˇzivatelsk´a datab´aze Keystone bude obsahovat jen osoby, kter´e se k OpenStacku alespoˇ n jednou pˇrihl´asily a odpad´a nutnost synchronizace datab´az´ı uˇzivatel˚ u. Postup fungov´an´ı skriptu je n´asleduj´ıc´ı: 1. Uˇzivatel OrionUser se u ´spˇeˇsnˇe pˇrihl´as´ı pˇres WebAuth. 2. Skript ovˇeˇr´ı, jestli uˇzivatel jiˇz existuje v datab´azi Keystone a vygeneruje jednor´azov´e heslo pro vstup (toto heslo je pouze intern´ı, uˇzivatel ho nikde nevid´ı ani ho nezn´a). (a) Uˇzivatel neexistuje: skript zaloˇz´ı nov´ y projekt OrionUser a uˇzivatele OrionUser s vygenerovan´ ym jednor´azov´ ym heslem. (b) Uˇzivatel jiˇz existuje: skript nastav´ı existuj´ıc´ımu uˇzivateli vygenerovan´e jednor´azov´e heslo. 79
ˇ Integrace do prostˇred´ı ZCU
Realizace pilotn´ıho nasazen´ı
3. Skript si z LDAP zjist´ı, jak´ ych skupin je uˇzivatel OrionUser ˇclenem. Z datab´aze Keystone zjist´ı, jak´e projekty (tenants) jsou v OpenStacku zaloˇzeny. Pokud je nalezena shoda (napˇr. uˇzivatel OrionUser je ˇclenem LDAP skupiny students-fav a v OpenStacku existuje tento projekt), je uˇzivateli pˇrid´ana role v tomto projektu. 4. Uˇzivatel je automaticky pˇrihl´aˇsen a pˇresmˇerov´an na hlavn´ı str´anku port´alu. Uˇzivatel m´a tedy kromˇe prim´arn´ıho projektu automaticky ˇclenstv´ı ve vˇsech existuj´ıc´ıch projektech, kter´e se jm´enem shoduj´ı se skupinami, jej´ıchˇz je v LDAP ˇclenem. Pro spr´avn´e fungov´an´ı je nutn´e, aby byly projekty odpov´ıdaj´ıc´ı skupin´am v LDAP nejprve ruˇcnˇe zaloˇzeny. Pokud budeme cht´ıt povolit zakl´ad´an´ı virtu´aln´ıch stroj˚ u jen vybran´ ym uˇzivatel˚ um, lze to realizovat v´ıce zp˚ usoby. Jedn´ım z nich je nastavit nulov´e v´ ychoz´ı kv´oty (dle kap. 5.9.3) a potˇrebn´e kv´oty nastavit aˇz projekt˚ um, do kter´ ych budou uˇzivatel´e automaticky pˇrid´ani na z´akladˇe sv´eho ˇclenstv´ı v LDAP. Druhou variantou je omezen´ı pˇr´ıstupu k port´alu na u ´rovni WebAuth, kter´e lze realizovat u ´pravou souboru openstack-dashboard-ssl.conf v adres´aˇri /etc/apache2/sites-available/ (podrobnˇejˇs´ı popis v kap. 5.9.2): AuthType WebAuth #Require valid-user Require privgroup civ V´ yˇse uveden´ y pˇr´ıklad povol´ı pˇr´ıstup jen Orion uˇzivatel˚ um ve skupinˇe CIV. Vytvoˇren´ y skript je naps´an v jazyce Python, takˇze pro bˇeh nevyˇzaduje ˇz´adn´e dalˇs´ı softwarov´e vybaven´ı neˇz je nutn´e pro bˇeh OpenStacku (kter´ y je tak´e naprogramov´an v Pythonu). Pro funkˇcnost nicm´enˇe vyˇzaduje dva drobn´e z´asahy do rozhran´ı port´alu Horizon, pro kter´e je vytvoˇren patch um´ıstˇen´ y na CD v pˇr´ıloze t´eto pr´ace. Patche pouˇzijeme tak, ˇze je nahrajeme na ˇr´ıd´ıc´ı uzel do adres´aˇre /tmp/horizon_patch a spust´ıme: # patch /usr/share/pyshared/horizon/templates/auth/_login.html < \ 80
Realizace pilotn´ıho nasazen´ı
Ovˇeˇren´ı
/tmp/horizon_patch/_login.html.patch # patch /usr/share/pyshared/openstack_auth/views.py < \ /root/horizon_patch/views.py.patch
5.10
Ovˇ eˇ ren´ı
C´ılem ovˇeˇren´ı je prok´azat, ˇze realizovan´ y pilotn´ı provoz splˇ nuje definovan´e poˇzadavky a pˇredstavuje z´aklad, d´ıky kter´emu je moˇzn´e d´ale rozv´ıjet realizovan´ y projekt.
5.10.1
Sc´ en´ aˇ r: zaloˇ zen´ı a pˇ rihl´ aˇ sen´ı uˇ zivatele
Poˇ zadavky: uˇzivatel s platn´ ym univerzitn´ım Orion kontem, internetov´ y prohl´ıˇzeˇc. C´ıl: prok´azat, ˇze je funkˇcn´ı autentizace pˇres WebAuth a skript zajiˇst’uj´ıc´ı propagaci uˇzivatelsk´ ych kont v Keystone pracuje spr´avnˇe. 1. Uˇzivatel pˇristoup´ı na adresu Horizon port´alu (https://cloud.civ. zcu.cz). 2. Modul mod webauth detekuje, ˇze uˇzivatel nen´ı pˇrihl´aˇsen a pˇresmˇeruje ho na str´anku Orion WebAuth (obr. 5.8). 3. Uˇzivatel zad´a sv˚ uj Orion login a heslo. 4. Po u ´spˇeˇsn´em ovˇeˇren´ı identity je uˇzivatel pˇresmˇerov´an zpˇet na Horizon. 5. Je spuˇstˇen n´ami vytvoˇren´ y skript, kter´ y zjist´ı Orion login pˇrihl´aˇsen´eho uˇzivatele. 6. Skript se spoj´ı s Keystone a ovˇeˇr´ı, jestli jiˇz uˇzivatel v jeho datab´azi existuje. Pokud v datab´azi jeˇstˇe nen´ı, zaloˇz´ı se. D´ale si z LDAP vyˇz´ad´a seznam skupin, kter´ ych je uˇzivatel ˇclenem. Pokud takov´a skupina existuje jako projekt v OpenStacku, obdrˇz´ı k n´ı uˇzivatel pˇr´ıstupov´a pr´ava. 7. Uˇzivatel je automaticky pˇrihl´aˇsen a zobraz´ı se mu hlavn´ı str´anka port´alu (obr. 5.9). Pokud je ˇclenem v´ıce projekt˚ u, m˚ uˇze mezi nimi pˇrep´ınat. 81
Realizace pilotn´ıho nasazen´ı
Ovˇeˇren´ı
Obr´azek 5.8: Pˇrihl´aˇsen´ı pˇres WebAuth Zdroj: vlastn´ı zpracov´ an´ı
Po odhl´aˇsen´ı z port´alu jsou korektnˇe vymaz´any cookies v prohl´ıˇzeˇci14 a uˇzivateli se zobraz´ı str´anka WebAuth informuj´ıc´ı o u ´spˇeˇsn´em odhl´aˇsen´ı. Z´ avˇ er: bylo prok´az´ano, ˇze funguje uˇzivatelsk´ y pˇr´ıstup k port´alu a do datab´aze se korektnˇe propaguj´ı informace o ˇclenstv´ı ve skupin´ach.
5.10.2
Sc´ en´ aˇ r: zaloˇ zen´ı a spuˇ stˇ en´ı serveru
Poˇ zadavky: autentizovan´ y uˇzivatel OpenStacku, internetov´ y prohl´ıˇzeˇc, zaloˇzen´a s´ıt’ v datab´azi OpenStacku. C´ıl: prok´azat, ˇze je moˇzn´e zaloˇzit a spustit virtu´aln´ı server v cloudu. 1. Uˇzivatel se pˇrihl´as´ı dle kap. 5.10.1. V menu se pˇrepne na projekt, ve kte14
mal´e mnoˇzstv´ı dat, kter´ a WWW server poˇsle prohl´ıˇzeˇci, kter´ y je uloˇz´ı na poˇc´ıtaˇci uˇzivatele
82
Realizace pilotn´ıho nasazen´ı
Ovˇeˇren´ı
Obr´azek 5.9: Hlavn´ı strana port´alu Horizon, uˇzivatel se m˚ uˇze pˇrep´ınat mezi projekty Zdroj: vlastn´ı zpracov´ an´ı
r´em chce pracovat (pokud je ˇclenem pouze jednoho projektu, pˇrepnut´ı nen´ı moˇzn´e). 2. V lev´em menu zvol´ı poloˇzku INSTANCES a pot´e stiskne tlaˇc´ıtko LAUNCH INSTANCE. 3. V zobrazen´em oknˇe (obr. 5.10) vypln´ı detaily novˇe zˇrizovan´eho serveru. Je nutn´e zvolit n´azev, vybrat jednu z pˇripraven´ ych ˇsablon parametr˚ u (urˇcuje poˇcet CPU, velikost RAM a disku) a d´ale vybrat obraz, ze kter´eho bude server vytvoˇren. Je tak´e moˇzn´e volit mezi lok´aln´ım u ´loˇziˇstˇem (pˇr´ımo na hostitelsk´em serveru, nedoporuˇceno) a centr´aln´ım s´ıt’ov´ ym u ´loˇziˇstˇem (Cinder, doporuˇceno). 4. Uˇzivatel vol´ı vytvoˇren´ı nov´e diskov´e jednotky na s´ıt’ov´em u ´loˇziˇsti z existuj´ıc´ı ˇsablony (Ubuntu 12.04 LTS). 5. Po stisku tlaˇc´ıtka LAUNCH se spust´ı proces popsan´ y v kap. 4.8 a pokud jsou splnˇeny vˇsechny podm´ınky (uˇzivatel vyplnil vˇsechna povinn´a pole, 83
Realizace pilotn´ıho nasazen´ı
Ovˇeˇren´ı
nenarazil na horn´ı hranici nˇekter´e kv´oty, . . . ), v´ ysledkem je start nov´eho serveru v cloudu. Z´ avˇ er: bylo prok´az´ano, ˇze uˇzivatel m˚ uˇze samostatnˇe vytvoˇrit a spustit virtu´aln´ı server. Testem bylo z´aroveˇ n ovˇeˇreno, ˇze funguje centr´aln´ı s´ıt’ov´e u ´loˇziˇstˇe pˇres iSCSI a virtu´aln´ı server je z nˇej schopen nastartovat.
5.10.3
Sc´ en´ aˇ r: ovˇ eˇ ren´ı funkˇ cnosti kv´ ot
Poˇ zadavky: autentizovan´ y uˇzivatel OpenStacku, internetov´ y prohl´ıˇzeˇc, zaloˇzen´a s´ıt’ v datab´azi OpenStacku. C´ıl: ovˇeˇrit, ˇze funguje syst´em kv´ot. V tomto sc´en´aˇri bylo postupov´ano obdobnˇe jako v kap. 5.10.2. Uˇzivatel zakl´adal virtu´aln´ı servery aˇz do okamˇziku, kdy narazil na definovan´e limity zdroj˚ u. Pˇri pokusu pˇridˇelit serveru v´ıce pamˇeti RAM neˇz je dovoleno syst´em odm´ıtl virtu´aln´ı server zaloˇzit, coˇz dokl´ad´a obr. 5.11. Pokud je vyˇcerp´an limit na poˇcet instanc´ı, nen´ı uˇzivateli umoˇznˇeno v˚ ubec otevˇr´ıt dialogov´e okno pro zaloˇzen´ı serveru. Z´ avˇ er: testem bylo ovˇeˇreno, ˇze nastaven´e limity v praxi funguj´ı.
5.10.4
Sc´ en´ aˇ r: spuˇ stˇ en´ı v´ıce server˚ u najednou
Poˇ zadavky: autentizovan´ y uˇzivatel OpenStacku, internetov´ y prohl´ıˇzeˇc, zaloˇzen´a s´ıt’ v datab´azi OpenStacku. C´ıl: ovˇeˇrit, jak se bude chovat cloud v pˇr´ıpadˇe soubˇehu v´ıce n´aroˇcn´ ych poˇzadavk˚ u. V tomto sc´en´aˇri bylo postupov´ano obdobnˇe jako v kap. 5.10.2, pouze s t´ım rozd´ılem, ˇze bylo vytvoˇreno najednou 20 virtu´aln´ıch server˚ u. Z´ avˇ er: testem bylo ovˇeˇreno vytvoˇren´ı a spuˇstˇen´ı velk´eho poˇctu instanc´ı najednou. Test dopadl u ´spˇeˇsnˇe; nejvˇetˇs´ı z´atˇeˇz byla pozorov´ana na uzlu, kter´ y 84
Realizace pilotn´ıho nasazen´ı
Ovˇeˇren´ı
Obr´azek 5.10: Volby pˇri zakl´ad´an´ı nov´eho serveru Zdroj: vlastn´ı zpracov´ an´ı
mˇel na starost diskov´e u ´loˇziˇstˇe. Nejv´ıce v´ ykonu vyˇzadovaly operace spojen´e s pˇr´ıpravou a kontextualizac´ı obrazu serveru, vytvoˇren´ım diskov´e jednotky a nakop´ırov´an´ım obrazu do novˇe vytvoˇren´e jednotky. Z v´ ysledk˚ u testu plyne doporuˇcen´ı, ˇze je tˇreba dostateˇcnˇe dimenzovat v´ ykon serveru s Glance a tak´e samotn´eho diskov´eho u ´loˇziˇstˇe. 85
Realizace pilotn´ıho nasazen´ı
Ovˇeˇren´ı
Obr´azek 5.11: Chybov´e hl´aˇsen´ı pˇri pˇrekroˇcen´ı kv´ot Zdroj: vlastn´ı zpracov´ an´ı
5.10.5
Naplnˇ en´ı poˇ zadavk˚ u
V r´amci t´eto kapitoly je proveden rozbor poˇzadavk˚ u ze zad´an´ı a komentov´ano jejich splnˇen´ı. • Poˇ zadavek: Uzly budou plnˇe ve spr´avˇe uˇzivatele a typicky nastartovan´e z pˇripraven´eho obrazu. Koment´ aˇ r: Splnˇeno a prok´az´ano v kap. 5.10.2. ˇ sen´ı mus´ı splˇ • Poˇ zadavek: Reˇ novat provozn´ı poˇzadavky v´ ypoˇcetn´ıho prostˇred´ı Orion (monitoring, bezpeˇcnost, z´alohov´an´ı, . . . ). Koment´ aˇ r: Splnˇeno, provozn´ı ˇca´st´ı se zab´ yvaj´ı kapitoly 4.12 aˇz 4.15. • Poˇ zadavek: Je tˇreba napojen´ı na b´azi uˇzivatel˚ u a pˇr´ıstup vˇsech uˇzivatel˚ u k nov´e sluˇzbˇe. Koment´ aˇ r: Splnˇeno, napojen´ım na b´azi uˇzivatel˚ u se zab´ yvaj´ı kapitoly 5.9.3 a 5.9.3, prakticky je to ovˇeˇreno sc´en´aˇrem v kap. 5.10.1. • Poˇ zadavek: Realizovan´e ˇreˇsen´ı mus´ı umoˇzn ˇovat stanoven´ı limit˚ u na vyuˇzit´ı zdroj˚ u a mˇeˇren´ı vyuˇz´ıv´an´ı tˇechto zdroj˚ u.
86
Realizace pilotn´ıho nasazen´ı
Ovˇeˇren´ı
Koment´ aˇ r: Splnˇeno, pro kaˇzd´ y projekt jsou definov´any v´ ychoz´ı kv´oty (viz kap. 5.9.3), kter´e je moˇzn´e individu´alnˇe upravit. D´ale je nainstalov´ana telemetrick´a komponenta Ceilometer (viz kap. 5.8) umoˇzn ˇuj´ıc´ı mˇeˇren´ı, sbˇer, zpracov´an´ı a vyhodnocov´an´ı u ´daj˚ u o vyuˇzit´ı zdroj˚ u. • Poˇ zadavek: Souˇca´st´ı zad´an´ı nen´ı pˇr´ıprava obraz˚ u virtu´aln´ıch server˚ u, ale mus´ı pro to b´ yt odpov´ıdaj´ıc´ı podpora (import z jin´ ych prostˇred´ı, podpora kontextualizace, podpora r˚ uzn´ ych OS). Koment´ aˇ r: Splnˇeno, moˇznostmi obraz˚ u se zab´ yv´a kap. 5.4.1. • Poˇ zadavek: Preferujeme otevˇren´e ˇreˇsen´ı bez licenˇcn´ıch omezen´ı a poplatk˚ u, modul´arn´ı a zaloˇzen´e na standardech. D˚ uleˇzit´ ym parametrem je mal´a provozn´ı n´aroˇcnost a moˇznost rozˇsiˇrov´an´ı (kapacita, vlastnosti). Koment´ aˇ r: Splnˇeno, navrˇzen´e ˇreˇsen´ı je svobodnˇe dostupn´e pod licenc´ı Apache 2.0. Disponuje znaˇcnou modularitou a je moˇzno ho bez probl´em˚ u rozˇsiˇrovat jak z hlediska kapacity, tak z hlediska v´ ykonu.
87
6 Z´avˇer C´ılem t´eto pr´ace bylo kromˇe sezn´amen´ı s v´ yvojem a pˇrehledem technologi´ı v oblasti virtualizace a cloud computingu tak´e pˇripravit n´avrh infrastruktury priv´atn´ıho cloudu pro potˇreby Z´apadoˇcesk´e univerzity v Plzni a formou pilotn´ıho provozu ovˇeˇrit jeho realizovatelnost. Jednotliv´e body ze zad´an´ı byly splnˇeny, konkr´etnˇe byl ve spolupr´aci se zadavatelem vytvoˇren soupis poˇzadavk˚ u, kter´e mus´ı navrˇzen´e ˇreˇsen´ı splˇ novat. Byla poˇzadov´ana sluˇzba umoˇzn ˇuj´ıc´ı samoobsluˇzn´e zˇrizov´an´ı virtu´aln´ıch server˚ u pro potˇreby v´ yuky a v´ yzkumu, kter´a nebude m´ıt licenˇcn´ı omezen´ı, bude vyuˇz´ıvat souˇcasn´e technologie a bude zapojena do prostˇred´ı Orion. V teoretick´e ˇca´sti pr´ace je kromˇe historick´eho v´ yvoje a pˇrehledu dneˇsn´ıch technologick´ ych trend˚ u a moˇznost´ı v oblastech virtualizace a cloud computingu tak´e pˇrehled konkr´etn´ıch softwarov´ ych platforem, kter´e lze vyuˇz´ıt pro realizaci infrastruktury priv´atn´ıho cloudu. Na z´akladˇe zadan´ ych krit´eri´ı jsou tyto platformy porovn´any a je zvoleno vhodn´e ˇreˇsen´ı pro virtualizaci a tak´e pro spr´avu priv´atn´ıho cloudu. V´ ystupem praktick´e ˇca´sti je popis a implementaˇcn´ı n´avrh priv´atn´ıho cloudu na platformˇe OpenStack. Tento n´avrh je posl´eze realizov´an ve formˇe pilotn´ıho provozu, kter´ y prob´ıhal od listopadu 2013 a bˇehem kter´eho bylo praktick´ ymi sc´en´aˇri ovˇeˇreno, ˇze je navrˇzen´e ˇreˇsen´ı provozuschopn´e. Je vˇenov´ana pozornost aspekt˚ um bˇeˇzn´eho provozn´ıho nasazen´ı, kdy jsou nast´ınˇeny ot´azky bezpeˇcnosti, z´alohov´an´ı, monitorov´an´ı, logov´an´ı a zajiˇstˇen´ı vysok´e dostupnosti. Pro splnˇen´ı definovan´ ych poˇzadavk˚ u byly provedeny tak´e u ´pravy zdrojov´ ych k´od˚ u na m´ıru, kter´e stejnˇe jako vˇsechny konfiguraˇcn´ı soubory tvoˇr´ı pˇr´ılohu t´eto pr´ace ve formˇe CD. Pˇri realizaci pilotn´ıho provozu se vyskytla cel´a ˇrada probl´em˚ u, kter´e souvisely pˇredevˇs´ım se sloˇzitost´ı OpenStacku. Ten je tvoˇren skupinou vz´ajemnˇe kooperuj´ıc´ıch samostatn´ ych celk˚ u, kter´e jsou mezi sebou propojen´e pomoc´ı API a serveru pro frontu zpr´av. Orientaci neulehˇcila ani dokumentace, kter´a byla ˇcasto roztˇr´ıˇstˇen´a a d´ıky rychl´emu v´ yvojov´emu cyklu pln´a zastaral´ ych informac´ı. Typicky je OpenStack nasazov´an v podobˇe komplexn´ıch komerˇcn´ıch distribuc´ı nebo s podporou velk´ ych firem, kter´e si vytv´aˇr´ı vlastn´ı n´astroje pro nasazen´ı a spr´avu. Bylo tedy velkou v´ yzvou se o tot´eˇz pokusit vlastn´ımi silami v r´amci t´eto diplomov´e pr´ace. 88
Seznam tabulek
3.1
Shrnut´ı rozd´ıl˚ u mezi public a private cloudem . . . . . . . . . 17
5.1
Parametry hardware pro pilotn´ı nasazen´ı . . . . . . . . . . . . 59
89
Seznam obr´ azk˚ u
2.1
Zn´azornˇen´ı virtualizace hardware . . . . . . . . . . . . . . . .
3
2.2
Ilustrace hypervizor˚ u typu 1 a 2 . . . . . . . . . . . . . . . . .
4
2.3
Pr´ace s pamˇet´ı u VMware ESX . . . . . . . . . . . . . . . . .
9
2.4
Srovn´an´ı 3let´eho TCO u zvolen´ ych virtualizaˇcn´ıch technologi´ı
11
3.1
Rozdˇelen´ı cloud˚ u podle modelu nasazen´ı . . . . . . . . . . . . 15
3.2
Rozdˇelen´ı cloud˚ u podle modelu nasazen´ı . . . . . . . . . . . . 18
3.3
Vrstvy cloud computingu . . . . . . . . . . . . . . . . . . . . . 19
3.4
Architektura Eucalyptu
3.5
Architektura OpenNebuly . . . . . . . . . . . . . . . . . . . . 25
3.6
Poˇcet commit˚ u za mˇes´ıc . . . . . . . . . . . . . . . . . . . . . 28
4.1
Konceptu´aln´ı pohled na architekturu . . . . . . . . . . . . . . 30
4.2
Sch´ema s´ıtˇe s Neutronem . . . . . . . . . . . . . . . . . . . . . 34
4.3
Detail implementace Open vSwitche s GRE . . . . . . . . . . 35
4.4
Storage node s extern´ım uloˇziˇstˇem . . . . . . . . . . . . . . . . 38
4.5
Proces pˇrenosu a pouˇzit´ı obrazu . . . . . . . . . . . . . . . . . 40
. . . . . . . . . . . . . . . . . . . . . 24
90
´ ˚ SEZNAM OBRAZK U
´ ˚ SEZNAM OBRAZK U
4.6
Tok poˇzadavk˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.7
Architektura Ceilometeru
4.8
Realizace HA pro MySQL pˇres DRBD a Pacemaker . . . . . . 47
4.9
Realizace HA pro MySQL pˇres Galera a HAproxy. . . . . . . . 49
. . . . . . . . . . . . . . . . . . . . 44
4.10 N´avrh HA architektury OpenStacku . . . . . . . . . . . . . . . 50 5.1
Rozloˇzen´ı sluˇzeb v realizovan´e architektuˇre . . . . . . . . . . . 61
5.2
Prostˇred´ı debconf pro konfiguraci . . . . . . . . . . . . . . . . 63
5.3
Storage server s intern´ım uloˇziˇstˇem . . . . . . . . . . . . . . . 66
5.4
Sch´ema s´ıtˇe a zakreslen´ı toku dat z virtu´aln´ıho serveru . . . . 67
5.5
V´ ystup mˇeˇren´ı z´atˇeˇze CPU v port´alu Horizon . . . . . . . . . 73
5.6
Prvotn´ı pˇrihl´aˇsen´ı uˇzivatele . . . . . . . . . . . . . . . . . . . 75
5.7
Zobrazen´ı vyuˇzit´ı zdroj˚ u projektem . . . . . . . . . . . . . . . 77
5.8
Pˇrihl´aˇsen´ı pˇres WebAuth . . . . . . . . . . . . . . . . . . . . . 82
5.9
Hlavn´ı strana port´alu Horizon, uˇzivatel se m˚ uˇze pˇrep´ınat mezi projekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.10 Volby pˇri zakl´ad´an´ı nov´eho serveru . . . . . . . . . . . . . . . 85 5.11 Chybov´e hl´aˇsen´ı pˇri pˇrekroˇcen´ı kv´ot . . . . . . . . . . . . . . . 86
91
Literatura [1] Amazon: Web Services - About AWS. [cit. 2014-02-10]. URL http://aws.amazon.com/about-aws/ [2] Armbrust, M.: Above the Clouds: A Berkeley View of Cloud Computing. 02 2009 [cit. 2014-03-03]. URL http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/ EECS-2009-28.pdf [3] Bowen, B.; Gessau, H.; LeBlanc, D.; aj.: What’s new in Neutron for OpenStack Havana. 10 2013 [cit. 2014-01-29]. URL http://www.slideshare.net/kamesh001/ whats-new-in-neutron-for-open-stack-havana [4] Brady, P.: The life of an OpenStack libvirt image. 02 2013 [cit. 2014-0318]. URL http://www.pixelbeat.org/docs/openstack_libvirt_ images/ [5] Brandon, J.: Harvard, MIT Broad Institute deploys OpenStack for private cloud. 04 2014 [cit. 2014-04-20]. URL http://www.businesscloudnews.com/2014/04/22/ harvard-mit-broad-institute-deploys-openstack-for-private-cloud/ [6] Butler, B.: Open source cloud battles: OpenStack leveling off as CloudStack interest gains. 01 2013 [cit. 2014-02-28]. URL http://www.networkworld.com/news/2013/ 010713-openstack-cloudstack-265556.html [7] Cannao, R.: Benchmarking NDB vs Galera. 10 2012 [cit. 2014-05-03]. URL http://www.palominodb.com/blog/2012/12/10/ benchmarking-ndb-vs-galera
92
LITERATURA
LITERATURA
[8] Chellappa, R. K.: Intermediaries in Cloud-Computing: A New Computing Paradigm. In INFORMS Annual Meeting, 1997. [9] Clark, C.; Fraser, K.; Hand, S.; aj.: Live Migration of Virtual Machines. In NSDI, USENIX, 2005. URL http://dblp.uni-trier.de/db/conf/nsdi/nsdi2005.html# ClarkFHHJLPW05 [10] CloudStack: History. 2013 [cit. 2014-04-25]. URL https://cloudstack.apache.org/history.html [11] Danjou, J.: Ceilometer, the OpenStack metering project. 07 2012 [cit. 2014-05-02]. URL https://julien.danjou.info/blog/2012/ openstack-metering-ceilometer [12] Dialogic: Introduction to Cloud Computing. 07 2010 [cit. 2014-01-19]. URL http://www.dialogic.com/~/media/products/docs/ whitepapers/12023-cloud-computing-wp.pdf [13] Dierks, T.; Rescorla, E.: RFC 5246: The Transport Layer Security (TLS) Protocol. 08 2008 [cit. 2014-04-12]. URL http://tools.ietf.org/html/rfc5246 [14] Eucalyptus: Cloud Computing Architecture. [cit. 2014-03-08]. URL https://www.eucalyptus.com/eucalyptus-cloud/iaas/ architecture [15] Eucalyptus: Datasheet. [cit. 2014-03-08]. URL https://www.eucalyptus.com/sites/all/files/ ds-eucalyptus-iaas.en.pdf [16] Feuerlicht, G.; Burkon, L.; Sebesta, M.: Cloud Computing Adoption: What are the Issues. Syst´emov´a integrace, roˇcn´ık 18, ˇc. 2, 2011: s. 187– 192. [17] Flexiant: Common considerations when selecting your hypervisor. 02 2014 [cit. 2014-03-01]. URL http://www.flexiant.com/2014/02/12/ hypervisor-comparison-kvm-xen-vmware-hyper-v/ [18] FSN: The economy is flat so why are financials Cloud vendors growing at more than 90 percent per annum. 03 2013 [cit. 2014-02-25]. URL http://www.fsn.co.uk 93
LITERATURA
LITERATURA
[19] Furht, B.; Escalante, A. (editoˇri): Handbook of Cloud Computing. Springer New York Dordrecht Heidelberg London, 2010, ISBN 978-1-44196523-3. [20] Garfinkel, S.: The Cloud Imperative. 10 2011 [cit. 2014-01-13]. URL http://www.technologyreview.com/news/425623/ the-cloud-imperative/ ˇ [21] Grolmus, P.; Svamberg, M.: Single Sign-On ˇreˇsen´ı pro webov´e aplikace. Vyˇslo ve sborn´ıku XXVII. konference EurOpen, 2005: s. 87–100. [22] Gupta, R.: Request Flow for Provisioning Instance in Openstack. 04 2013 [cit. 2014-04-12]. URL http://ilearnstack.com/2013/04/26/ request-flow-for-provisioning-instance-in-openstack/ comment-page-1/ [23] Haas, F.: OpenStack High Availability Guide. 04 2014 [cit. 2014-05-03]. URL http://docs.openstack.org/high-availability-guide/ content/index.html [24] Hefner, K.: Definition OpenNebula. 11 2013 [cit. 2014-01-25]. URL http://searchcloudstorage.techtarget.com/definition/ OpenNebula [25] Hof, R. D.: Jeff Bezos’ Risky Bet. 11 2006 [cit. 2014-02-12]. URL http://www.businessweek.com/stories/2006-11-12/ jeff-bezos-risky-bet [26] Hufferd, J. L.: ISCSI: The Universal Storage Connection. AddisonWesley Professional, 2003, ISBN 978-0201784190. [27] IBM: Taking the Sting Out of Virtualization Licensing Costs with KVM. 09 2012 [cit. 2014-03-25]. URL https://www.ibm.com/developerworks/community/ blogs/ibmvirtualization/entry/taking_the_sting_out_of_ virtualization_licensing_costs_with_kvm?lang=en [28] Jiang, Q.: CY13-Q4 Open Source IaaS Community Analysis. 01 2014 [cit. 2014-03-01]. URL http://www.qyjohn.net/?p=3432 [29] Klep´aˇc, M.: Private IaaS cloud comparison. Diplomov´a pr´ace, Czech Technical University in Prague. 94
LITERATURA
LITERATURA
[30] KVM: Main Page. [cit. 2014-02-25]. URL http://www.linux-kvm.org/page/Main_Page [31] Marko, K.: iSCSI vs. Fibre Channel: A Cost Comparison. [cit. 2014-0215]. URL http://www.processor.com/editorial/article.asp? article=articles/p3014/31p14/31p14.asp [32] Mell, P.; Grance, T.: The NIST Definition of Cloud Computing. 09 2011 [cit. 2014-01-25]. URL http://csrc.nist.gov/publications/nistpubs/800-145/ SP800-145.pdf [33] Meyer, D.: Here’s why CERN ditched OpenNebula for OpenStack. 05 2013 [cit. 2014-03-13]. URL https://gigaom.com/2013/05/31/ heres-why-cern-ditched-opennebula-for-openstack/ [34] Meyer, D.: OpenNebula 4.0 guns for the vCloud crowd. 05 2013 [cit. 2014-03-15]. URL https://gigaom.com/2013/05/08/ opennebula-4-0-guns-for-the-vcloud-crowd/ [35] MySQL: Overview of MySQL with DRBD/Pacemaker/Corosync/Oracle Linux. [cit. 2014-03-12]. URL https://dev.mysql.com/doc/refman/5.0/en/ha-drbd.html [36] OpenNebula: An Overview of OpenNebula. [cit. 2014-04-02]. URL http://docs.opennebula.org/4.6/design_and_ installation/building_your_cloud/intro.html [37] OpenStack: How to Perform an Upgrade from Grizzly to Havana. 12 2013 [cit. 2014-03-25]. URL http://docs.openstack.org/trunk/openstack-ops/content/ ops_upgrades_grizzly_havana-ubuntu.html [38] OpenStack: Hypervisor Support Matrix. [cit. 2014-01-25]. URL https://wiki.openstack.org/wiki/ HypervisorSupportMatrix [39] OpenStack: Documentation. [cit. 2014-03-20]. URL http://docs.openstack.org/
95
LITERATURA
LITERATURA
[40] Parkhill, D.: The Challenge of the Computer Utility. Addison-Wesley Educational Publishers Inc., 1966, ISBN 9782017700593. [41] Patka, L.: Virtualizaˇcn´ı technologie. Diplomov´a pr´ace, Masarykova univerzita, 2009. [42] Popek, G. J.; Goldberg, R. P.: Formal Requirements for Virtualizable Third Generation Architectures. Communications of the ACM, 1974. URL http://www.logos.ic.i.u-tokyo.ac.jp/~tau/lecture/ operating_systems/gen/papers/p412-popek.pdf [43] QArea: Cloud Computing Outlook: IaaS, PaaS and SaaS. [cit. 2014-0301]. URL http://www.qarea.com/articles/ cloud-computing-outlook-iaas-paas-and-saas [44] Reese, G.: Cloud Application Architectures. O’Reilly Media, Inc., 2009, ISBN 9780596555481. [45] Renski, B.: VMware Vs. KVM: OpenStack Hypervisor Race Heats Up. 12 2013 [cit. 2014-02-27]. URL http://www.mirantis.com/blog/ vmware-vs-kvm-openstack-hypervisor-race-heats-2/ [46] Rhoton, J.: Cloud Computing Explained: Implementation Handbook for Enterprises. 2009, ISBN 978-0956355607. ˇ vede v zav´adˇen´ı ICT ve stˇredn´ı a v´ [47] Ryba, A.: CR ychodn´ı Evropˇe. 03 2014 [cit. 2014-04-10]. URL http://www.ictmanazer.cz/2014/03/ cr-vede-v-zavadeni-ict-ve-stredni-a-vychodni-evrope/ [48] Sedl´ak, J.: Radiokomunikace stav´ı druh´ y cloud, pobˇeˇz´ı na otevˇren´em OpenStacku. 03 2014 [cit. 2014-04-30]. URL http://connect.zive.cz/bleskovky/ radiokomunikace-stavi-druhy-cloud-pobezi-na-otevrenem-openstacku/ sc-321-a-172912 [49] Severalnines: Clustering MySQL Backend in OpenStack. 08 2013 [cit. 2014-05-01]. URL http://www.severalnines.com/blog/ clustering-mysql-backend-openstack
96
LITERATURA
LITERATURA
[50] Sim, P.: OpenStack Networking - with Open vSwitch VLAN, GRE. 12 2013 [cit. 2014-01-12]. URL http://www.slideshare.net/janghoonsim/ open-stack-networking-vlan-gre [51] Solinea: OpenStack Grizzly Architecture (revisited). 06 2013 [cit. 2014-03-29]. URL http://www.solinea.com/blog/openstack-grizzly-architecture-revisited [52] Traeger, A.: OpenStack Cinder Deep Dive. 2013 [cit. 2014-02-20]. URL https://wiki.openstack.org/w/images/3/3b/ Cinder-grizzly-deep-dive-pub.pdf ˇ e republice [online]. Disertaˇcn´ı [53] Veber, J.: Sluˇzby cloud computing v Cesk´ pr´ace, Vysok´a ˇskola ekonomick´a v Praze, 2009 [cit. 2014-04-10]. URL http://theses.cz/id/58ov2m/ R [54] VMware: Understanding Memory Resource Management in VMware ESXTM Server. 2009 [cit. 2014-04-05]. URL http://www.vmware.com/files/pdf/perf-vsphere-memory_ management.pdf
[55] William, S.; Stallings, W.: Cryptography And Network Security, 4/E. Pearson Education, 2006, ISBN 9788177587746. URL http://books.google.cz/books?id=qKcrce0x\_2YC
97
A Obsah CD config ... Obsahuje konfiguraˇ cn´ ı soubory OpenStacku z pilotn´ ıho nasazen´ ı. doc ... Obsahuje PDF verzi t´ eto diplomov´ e pr´ ace. script ... Obsahuje skript pro zakl´ ad´ an´ ı uˇ zivatel˚ u z WebAuth/Orion.
98