450 likes | 585 Views
Intelligens rendszerfelügyelet. Szerver oldali virtualizáció. Tóth Dániel, Micskei Zoltán. Motivációs példa. Emlékszünk még?. Vegyünk több vasat!. Új üzleti szolgáltatást akarok beindítani. Biztos, hogy ez segít? Biztos, hogy ez a költséghatékony megoldás?. Motivációs példa.
E N D
Intelligens rendszerfelügyelet Szerver oldali virtualizáció Tóth Dániel, Micskei Zoltán
Motivációs példa • Emlékszünk még? Vegyünk több vasat! Új üzleti szolgáltatást akarok beindítani Biztos, hogy ez segít? Biztos, hogy ez a költséghatékony megoldás?
Motivációs példa • Emlékszünk még? Nem lehetne akkor valahogy egy gépre felrakni több szolgáltatást? Hát… Idáig a monitorozással foglalkoztunk és feltűnt valami… Sok gépen nagyon kicsi a CPU kihasználtság Egyiknek Linux kell a másiknak Windows… ráadásul különböző verziók…
Motivációs példa • Emlékszünk még? Biztonsági okokból nem szabad egy gépre rakni őket! Nem lehetne akkor valahogy egy gépre felrakni több szolgáltatást? (Ő a biztonsági felelős a cégnél) Egyiknek Linux kell a másiknak Windows… ráadásul különböző verziók…
Motivációs példa • „Now for something completely different…” Több platformon kell fejlesztenem, tesztelnem… az időm nagy része az ide-oda váltogatással megy el. Ráadásul folyton széthomokozom az oprendszeremet (Az első előadásban ő volt a szoftverfejlesztő avatarja) Egyiknek Linux kell a másiknak Windows… ráadásul különböző verziók… Ooop, ez már volt… Szóval nekem is mindenféle sokgépes bonyolult tesztkörnyezetet kell csinálnom a ti cuccaitokhoz
Virtualizáció • Mi az a virtualizáció? • „Az erőforrások elvonatkoztatása az erőforrást nyújtó elemektől” - kellemesen sejtelmes általános definíció • Jellemzően: • fizikai erőforrásokból logikai erőforrások képzése, amik függetlenek a tényleges fizikai elemektől • korlátos erőforrások szétosztása több részre • Ez egy új ötlet? • Korántsem – az oprendszerek is ezt csinálják…
Tartalom • Ismétlés (lásd Operációs rendszerek) • Virtualizáció fajtái • Platform virtualizációs megoldások • Kliens oldali virtualizációs igények • Szerver oldali virtualizáció
Mi micsoda a virtualizáció világában? Backend Livemigráció Hypervisor Emuláció Paravirtualizáció Jail Seamlesswindowmanagement Erőforrás- menedzsment Tárhely virtualizáció Figyelem! Gyakran nincs egyértelmű terminológia, a gyártók is néha következetlen elnevezéseket használnak! BinaryTranslation Desktopvirtualizáció Container Konszolidáció Exokernel Mikrokernel Hardveres virtualizáció Alkalmazás virtualizáció
Rétegek közötti interfészek Interfész a hardverhez: CPU, Memória:ISA(InstructionSetArchitecture) Szolgáltatások HDD ==== Alkalmazások Perifériák:I/O vagy memória-tartományban regiszterek, megszakítás, DMA Operációs rendszer Hardver
Rétegek közötti interfészek Interfész az alkalmazások és a rendszermag között Rendszerhívások (System calls) Szolgáltatások Interfész Adatszerkezetek Alkalmazások Operációs rendszer IPC mechanizmusok Hardver
Rétegek közötti interfészek Interfész az alkalmazások szintjén, illetve az OS magasszintű szolgáltatásai között Könyvtár hívások (call) Szolgáltatások Futtatókörnyezetek Alkalmazások Operációs rendszer Konfig fájlok, Registry, stb… Hardver
Rétegek közötti interfészek Interfész a nyújtott szolgáltatások felé Hálózati protokollok Szolgáltatások Felhasználói felület Alkalmazások Operációs rendszer stb… Hardver
A virtualizáció különböző fajtái „Desktop virtualizáció” „Alkalmazás futtatókörnyezetek” (Runtimeenvironments) Alkalmazás virtualizáció(packagedapplications…) Szolgáltatások Alkalmazások „Operációs rendszer szintű virtualizáció” - Containerek, Jailek Operációs rendszer „Platform Virtualizáció” Hardver
Platform virtualizáció • Amikor a „virtualizáció” buzzword elhangzik leggyakrabban erről van szó • „Szerver virtualizáció”, „Hardver virtualizáció”, „Számítógép virtualizáció” szinonim fogalmak • De nem összekeverendő a „hardveres” virtualizációval! • Cél: megosztani a hardver erőforrásokat: • Nem végzünk finomítást, az eredeti(hez hasonló) interfészen maradnak elérhetőek (exokernelnek hívják azt, ami ilyet csinál) • Izolált környezeteket („sandbox”) biztosítunk • Célok gyakorlatiasabban megfogalmazva: • Több operációs rendszer példányt futtatni egyazon gépen
Platform virtualizáció • Miért lesz ez jó nekünk? • Tesztrendszer kiépítése • HW konszolidáció • Régi rendszerek (legacysystems) • On-demand architektúra • Rendelkezésre állás, katasztrófa védelem • Hordozható alkalmazások • …
Platform virtualizáció • Kétféle megközelítés: GUEST App. App. Menedzsment App. App. App. App. OS OS Menedzsment OS OS OS Oprendszer Virt. szoftver Virt. szoftver Hardver Hardver Neve: VMM – VirtualMachine Monitor Hypervisor Fő komponense: VMM – VirtualMachine Monitor vagy Hypervisor Hosted (Type2) virtualizáció HOST Bare-metal (Type1) virtualizáció Jellemzően desktop megoldások: VMware Workstation, Server, Player, Sun VirtualBox,MS VirtualPC, KVM, UML Jellemzően szerver megoldások: VMware ESX Server, XenEnterprise, MS Hyper-V
Platform virtualizáció • Operációs rendszerekből érdemes átismételni • Hogy is működik? • Elfogás és emuláció elve • Tiszta emuláció • Miben különbözik a virtualizációtól, hol kerül elő a virtualizáción belül • Virtualizáció (Popek & Goldberg értelmezése szerint) • Szoftveres virtualizáció (Trap and Emulate + bináris fordítás) • Paravirtualizáció • Hardveres virtualizáció (Trap and Emulate, teljesen hardveres támogatással)
Platform virtualizáció desktopon • HF kapcsán már találkoztunk vele • Tipikus követelmények • Egyszerűen telepíthető legyen meglévő operációs rendszerre • Egyszerűen kezelhetőek legyenek a virtuális gépek (fájl szinten) • Egyszerre jellemzően kevés virtuális gép fut • Jó legyen az erőforrás-kiosztás (dinamikusan foglaljon CPU-t, memóriát, merevlemezt) • Multimédia: jó grafikus teljesítmény, legyen hang stb. • Könnyen lehessen adatot/perifériát megosztani a host és guest gép között
Speciális grafikus periféria igények • Egérrel ki tudjunk lépni a virtuális gép ablakának szélén • Az egér egyenletes sebességgel mozogjon a hoszt és a vendég gép képernyőjén is • Paravirtualizált egérmeghajtó (vagy tablet emuláció) kell hozzá, ami a hoszt abszolút x-y koordinátáit adja át, nem a relatív mozgást • A grafikus kép legyen gyors, és kövesse az ablak méretét • A grafikus megjelenítést célszerű hoszt-guest között osztott memóriaterülettel megoldani • Kívülről érkező esemény az ablak átméreteződése • Ez is paravirtualizált meghajtót kíván
Speciális grafikus periféria igények… • A grafikus kép legyen gyors, és kövesse az ablak méretét… • A VMware SVGA II de facto szabvány paravirtualizált grafikus meghajtó lett (VirtualBox, QEMU is ezt támogatja) • Desktopon ritkán kell: távoli elérés támogatása (tipikusan VNC felett) • Az ablakok „jöjjenek ki” a keretből (Seamlesswindowing) • Nem triviális megoldani a VMwareUnity pl. VNC-vel csinálja, lassú • Bele kell nyúlni kívülről a vendég OS alkalmazási szintű adatszerkezeteibe is, külön ágenst kíván. • 3D gyorsítás…
Speciális háttértár periféria igények • Háttértárak • Ne kelljen lefoglalni az összes háttértárat előre, csak annyit amennyit éppen ki is használunk • Hogy lehet megoldani? • A diszk tartalom képfájlokban valahogy követni kell, hogy melyik blokk használt, melyik nem… • Első ötlet: allocateonwrite • a fájlrendszerek elhagyogatnak szemetet maguk után… • Kicsit szofisztikáltabb: ha csupa 0x00 vagy 0xff byte-tal van feltöltve egy blokk, akkor ne tároljuk el a tartalmát • Közelebb visz minket? • Ha van secureerase (ami nem random adattal tölti fel a helyet), akkor igen • Új lehetőség az SSD-knél bevezetett TRIM művelet • Egyébként kell egy… waitforit… ágens a vendég gépbe, ami a fájlrendszer alacsonyszintű adatszerkezeteiből lekérdezi az üres helyeket és jelenti a virtualizációs szoftvernek • A VMwareToolsShrink opciója így működik
Speciális háttértár periféria igények • Pillanatkép funkcionalitás (snapshot) • Egy konzisztens állapot lementése (diszk, memória) • Ne kelljen teljes másolatot csinálni… hogy lehet? • A diszk képfájlban csak a legutóbbi snapshot óta változott blokkok tárolása (copy-on-write) • Fa hierarchia építhető belőlünk • Másolatkészítés - „A klónok támadása” • Néha jól jön, ha kis költséggel klónozhatók a gépek • A másolatkészítés után „külön életet kezdenek élni” • Segítségül hívjuk a snapshot funkcionalitást • Csak VMware Workstation támogatja, még az ESX Server sem!
VMware Workstation • talán kevésbé ismert funkciói • Unity • Beépített VNC szerver • Videó rögzítés • CPU virtualizációs üzemmód átállítása • Virtuális perifériák rejtettebb opciói • Szoftverfejlesztést támogató funkciók • Virtuális gép lefutásának rögzítése/visszajátszása • Most nem mutatjuk be: virtuális gépen belül futó alkalmazás debugolása kívülről
Tartalom • Ismétlés (lásd Operációs rendszerek tantárgy) • Virtualizáció fajtái • Platform virtualizációs megoldások • Kliens oldali virtualizációs igények • Szerver oldali virtualizáció • Platform virtualizációs megoldások • Erőforrás-gazdálkodás • Operációs rendszer szintű virtualizáció
Szerver virtualizáció • Jellegzetességek • Távoli elérés központi szerepe • Cél.: Hálózaton nyújtott szolgáltatások ellátása (ez akár távoli asztal is lehet! -> Desktop virtualizáció) • Erőforrás gazdálkodás • Központi menedzsment fontossága (következő előadás…) • Kétféle megoldás(t tárgyalunk most) • Platform virtualizáción alapuló • Operációs rendszer szintű virtualizáción alapuló
Szerver virtualizáció • Platform virtualizáción alapuló megoldások: • VMware ESX Server, ESXi • XenEnterprise • Microsoft Hyper-V • IBM LPAR, DLPAR • Operációs rendszer szintű virtualizáción alapul: • Linux OpenVZ • Linux VServer • ParallelsVirtuozzoContainers (Linux, Windows) • SolarisContainers, Zones • FreeBSDjail • AIX WPAR
Bare metal megoldások architektúrái ESXi • I/O eszközök kezelése a szülő partícióban • Meghajtókat a HW gyártók szállítják Xen / Hyper-V • I/O eszközöket is a hypervisor kezeli • Meghajtókat a VMware szállítja • Extra kis méret: ESXi (32 MB)
VMwareESXi Server architektúrája Alkalmazások Alkalmazások Alkalmazások Guest OS Service Consoleworlds Guest OS Service Consoleworlds Guest OS Service Consoleworlds Driver Worlds HelperWorlds VMkernel Hardver (x86 CPU, SCSI, Ethernet, SATA)
ESXisystem image • Aktív és alternatív verzió • In-memory fájlrendszer • Pl. log fájl elveszik rebootkor • OEM kiegészítések (embeddedESXi)
Tartalom • Ismétlés (lásd Operációs rendszerek) • Virtualizáció fajtái • Platform virtualizációs megoldások • Kliens oldali virtualizációs igények • Szerver oldali virtualizáció • Platform virtualizációs megoldások • Erőforrás-gazdálkodás • Operációs rendszer szintű virtualizáció
Erőforrás gazdálkodás • A virtuális gépek közös erőforráson osztoznak • Jellemző példák: • CPU: gyakran (összesen több vCPU, mint fizikai) • Memória: ritkábban (memoryovercommit) • Háttértár I/O műveletek: itt jellegzetesen osztozás van! • Hálózati áteresztőképesség: itt is osztozás van
Erőforrás gazdálkodás • Versengés az erőforrásokért: • Kis terheléseknél ritka, hogy egyszerre több guest ugyanazt az erőforrást terhelné… • De szerverkörnyezetben gyakran előfordul, hogy valamelyik erőforrás szűk keresztmetszet lesz • A megfelelő ütemező elosztja a hozzáférést, de nem mindig megfelelően • Cél: • A megosztott erőforrásokból való részesedést virtuális gépekre lebontva szabályozni tudjuk • Kemény korlátozások, „lágy” korlátok, prioritások • „Proportional-ShareBasedScheduler”
Erőforrás gazdálkodás • VMware ESX/ESXi esetén 3 beállítási lehetőség: • Resource Limit – kemény felső korlát az erőforrás igénybevételére • Akkor is érvényes, ha egyébként van szabad erőforrás • ResourceReservation – garantált rendelkezésre álló erőforrás mennyiség • Nem feltétlenül használja ki, csak verseny esetén érvényesül, egyébként a keretet más használhatja • ResourceShares– prioritás • Verseny esetén az alapértelmezett „igazságos” elosztás módosítható ezzel
Erőforrás gazdálkodás • Hierarchikus erőforráskezelés • Nemcsak virtuális gépek szintjén lehet korlátozni • Pool-okba szervezhetők a VM-ek • Használati eset példák: • Egy felhasználó összes gépére egy közös korlátozás • Egy feladatot ellátó gépek csoportjára korlát • Kritikus/nem kritikus alkalmazások csoportosítása Host - korlát: fizikai CPU, Memória • ResourcePool • Korlát • Garantált részesedés További ResourcePool • Guest • Korlát • Garantált részesedés
Erőforrás gazdálkodás • Hierarchikus erőforráskezelés • Nemcsak virtuális gépek szintjén lehet korlátozni • Pool-okba szervezhetők a VM-ek • Használati eset példák: • Egy felhasználó összes gépére egy közös korlátozás • Egy feladatot ellátó gépek csoportjára korlát • Kritikus/nem kritikus alkalmazások csoportosítása Host - korlát: fizikai CPU, Memória • ResourcePool • Korlát • Garantált részesedés • Korlátokat szab: • Host • ResourcePool • Guest Egymásba ágyazott korlátoknál szűkítés, konfliktusnál prioritás szerinti feloldás További ResourcePool • Guest • Korlát • Garantált részesedés
VMwareESXi • Teljesen távoli elérésen alapul • „Nagyjából” kompatibilis a Workstation/Player/Server virtuális gépeivel (VMwareConverter… most nem demózzuk) • Fejlett erőforrás-gazdálkodás • Távoli menedzsment PowerShell segítségével • Get-VM, Get-Stat… • Inftech laboron mindenki kipróbálhatja
Tartalom • Ismétlés (lásd Operációs rendszerek) • Virtualizáció fajtái • Platform virtualizációs megoldások • Kliens oldali virtualizációs igények • Szerver oldali virtualizáció • Platform virtualizációs megoldások • Erőforrás-gazdálkodás • Operációs rendszer szintű virtualizáció
Operációs rendszer szintű virtualizáció • Kezdetben volt a chroot… • A fájlrendszer gyökerét átirányíthatjuk egy alkönyvtárra (egy folyamatra vonatkozik!) • Ez nem teljes körű izoláció, de sok esetben működik • Kernel minden adatszerkezete közös (folyamatlista, hálózati interfész, IP, routing, sysctl beállítások…) • A chrootból ráadásul ki is lehet navigálni a VFS adatszerkezeten keresztül… • Hogy is néz ki: egy teljes alap OS installációt készítünk egy alkönyvtárba, ami kicsit eltérő is lehet az eredetitől • Problémás könyvtárak: /proc, /sys, /dev, /tmp, /var, …
Operációs rendszer szintű virtualizáció • Megoldás: • Ne látszódjanak ki a kernel singleton erőforrásai… • Ehhez módosítani kell a kernelt • Bevezetni a konténer fogalmát • Minden rendszerhívást ellátni a konténer kontextus szerinti válogatással • Singleton erőforrásokat dinamikusan példányosíthatóvá alakítani • A konténerből kifele mutató referenciák mostantól biztonsági réseknek számítanak! • A módosítások ára: 1-2% teljesítményveszteség
Operációs rendszer szintű virtualizáció • Erőforrás-gazdálkodás • CPU – a kernel beépített ütemezője, prioritáskezelője, kiegészítve szigorú cpuidő-korlátozással • Memória – a kernel beépített memóriakezelője, kiegészítve szigorú méretkorlátozással • Háttértár – a fájlrendszer egy alkönyvtára, quota rendszerrel korlátozható foglalás • Hálózat – a kernel beépített Ethernet hídja vagy routing táblája, pl. IPtablesQoS paraméterekkel korlátozható áteresztőképesség • Egyéb perifériák – a kernelben lévő meghajtón keresztül
Operációs rendszer szintű virtualizáció • Erőforrás-gazdálkodás • CPU – a kernel beépített ütemezője, prioritáskezelője, kiegészítve szigorú cpuidő-korlátozással • Memória – a kernel beépített memóriakezelője, kiegészítve szigorú méretkorlátozással • Háttértár – a fájlrendszer egy alkönyvtára, quota rendszerrel korlátozható foglalás • Hálózat – a kernel beépített ethernet hídja vagy routing táblája, pl. IPtablesQoS paraméterekkel korlátozható áteresztőképesség • Egyéb perifériák – a kernelben lévő meghajtón keresztül Tanulság: +Az OS szintű virtualizáció nagyon kis költségű, +erőforrás virtualizációs és +erőforrás gazdálkodási szempontból problémamentes.- Biztonsági szempontból kevésbé jó izoláció- Közös kernellel kell élni (azonos verzió, fordítási paraméterek)
OpenVZ architektúrája VirtualPrivate Server VirtualPrivate Server alkalmazások alkalmazások OpenVZ izolációs réteg (vzctl) alkalmazások Linux kernel (+OpenVZ patch) Hardver
OpenVZ • Képességek • A VPS belsejében „komplett” telepített OS található • Egy VPS indításakor a kernel teljesen inicializálatlan állapotban mutatja magát -> saját init scripteket futtat minden VPS • A VPS-be telepített OS környezet sablonokból (templates) telepíthető le még a VPS indítása előtt • A VPS-ben lévő fájlok akár meg is oszthatóak több VPS között (hard link!)
A következő rész tartalmából • Szerver virtualizációs megoldások központi menedzsmentje – avagy hogyan építsünk egy teljes infrastruktúrát virtuális gépekre • Finom funkciók • Livemigration • Hibatűrés • Terheléselosztás • Sablonkezelés • …és a már megszokottak: monitorozás, hozzáférés-kezelés…
Összefoglalás • Virtualizáció alap funkció lett • Kliens és kiszolgáló oldalon is • Fejlett megoldások • Hypervisor egyre inkább alap komponens • További információ: • Virtualizációs technológiák és alkalmazásaik választható tárgy (VIMIAV89)