Halmos Dávid (2020) Openstack és fizikai hálózati eszközök integrációja. Pénzügyi és Számviteli Kar.
PDF
Halmos_David_szakdolgozat_BMKUSO_1738.pdf Hozzáférés joga: Csak nyilvántartásba vett egyetemi IP címekről nyitható meg Download (930kB) |
|
PDF
BA_TO_Halmos_Dávid_BMKUSO.pdf Hozzáférés joga: Csak nyilvántartásba vett egyetemi IP címekről nyitható meg Download (262kB) |
Absztrakt (kivonat)
Szakdolgozatom kezdetekben meghatározottcélja volt, hogy az olvasó átfogó képet kapjon az OpenStack projektről éskomponenseiről, valamint a DevStack fejlesztői környezet kialakításáról és azExtreme Switchek konfigurációjáért felelős mechanizmus meghajtó fejlesztéséről.Az OpenStack projekt célja egy infrastruktúra-szolgáltatást nyújtó platformmegvalósítása nyílt forráskodú szoftverekkel, a projekt célközönsége pedig az egyszerűfelhasználóktól egészen a rendszerüzemeltetőkig terjed. A választottkomponensek és beállítások függvényében egészen komplex rendszerek kialakításárais alkalmas.Az OpenStack és az ML2 (Modular Layer 2)meghajtó megértéséhez, fontosnak tartottam szakirodalom alapján, rövidenjellemezni a virtualizáció és a felhőalapú számítástechnika legfontosabbfogalmait, típusait. Ezen kívül igyekeztem kifejteni a virtualizációhozszorosan kapcsolódó, hiperfelügyelő fogalmát. Az ezt követő részben rövidenbemutattam az Openstack, jelenlegidolgozatban is használt, főbb komponenseit. Többek között az autentikációértfelelős Keystonet, a képfájlok kezeléséért felelős Glancet, a virtuális gépekkezeléséért felelős Novát, valamint a hálózati szervizekért felelős Neutronkomponenst, amely a jelen fejlesztés részét képező meghajtó segítségévelkommunikál a külső fizikai hálózati eszközzel. Afejlesztés kezdeti lépéseként összegyűjtöttem az eszközök listáját, amelyekszükségesek a fejlesztői környezet kialakításához, valamint a fejlesztésimplementálásához:· Devstack: Egy szkript éssegédprogramkészlet, OpenStack felhő fejlesztői környezet gyors létrehozásátteszi lehetővővé, egyéni konfigurációs lehetőségekkel. Szakdolgozatomban amulti-node OpenStack telepítésére használtam fel. Részletesebben a 4.1fejezetben írtam róla.· Libvirt:Szoftvergyűjtemény, amely képes különböző virtuálizációs technológiákkezelésére, mint például háttértár, hálózati interfész. A virtuális gépek, hálózatoklétrehozására használtam a fejlesztői környezet kialakításakor. Részletesebbena 4.2 fejezetben írtam róla.· KVM:Hiperfelügyelő, amely képes kihasználni a processzorokban rejlő hardveresvirtualizációt megvalósító technológiát. Az OpenStacket futtató virtuális gépekegyes perifériáinak emulálását látja el. Bővebben a 4.3 fejezetben írtam róla.· QEMU: Processzorbővítményei KVM-mel kombinálva jelentősen megnövelik a virtuális gépekteljesítményét, emellett biztosít egy robusztus hiperfelügyelőt, amely a kernelszintjén fut. A fejlesztői környezetben a virtuális gépek egyes perifériáinakemulálását látja el. A tenant VM-ek virtualizációját a devstack automatikusanellátta, viszont a nodeokat(1 kontroller, 2 compute hoszt) és a Virtual EXOSVM-eket nekem kellett a virtuális képfájlból a virtuális gépet elindítani aQEMU segítségével. Bővebben a 4.4 fejezetben írtam róla.· EXOS SOAP: Az EXOS SOAPegy Extreme Networks által biztosított, python nyelven íródott programcsomag,amellyel a későbbiekben részletezett mechanizmus meghajtó képes a switchhelvaló kommunikációra. Az általam kifejlesztett ML2 Mechanizmus meghajtó ezt aprogramcsomagot használja a virtual EXOS-szel történő közvetlen kommunikációra.Erről a csomagról részletesebben is írok a 8.2 fejezetben.· Virtual EXOS: Ez egyvirtuális képfájl, amit az Extreme Networks fejlesztett és bocsájt rendelkezésre.Segítségével a switch működését lehet emulálni, virtuális környezetben. Afejlesztés során ezt használtam devstack környezetben, annak érdekében, hogy avalós fizikai eszközt emuláljam. A Virtual EXOS virtuális gépet KVM-melindítottam el és a megfelelő konfiguráció eredménye képpen a devstack tudtahasználni, mint hálózati kapcsoló. Dolgozatom 4.6 fejzetében írtam rólarészletesebben.Ezek után megterveztem a fejlesztőikörnyezethez szükséges hálózati topológiát, valamint a kommunikációhozszükséges hálózati interfészeket. Az OpenStack szervizek futtatásához szükségesnodeok, valamint a menedzsment és tenant hálózat létrehozásához a libvirt, kvm,qemu eszközöket használtam. A korábban libvirtben definiált, hosztokonfuttatott virtuális gépek forgalmához használt hálózat kialakítását linuxhálózati hidak létrehozásával oldottam meg, amelyek az exOS virtuális switchegy-egy portjához csatlakoznak – így biztosítottam, hogy a tenantok köztiforgalom a switchen menjen keresztül, szimulálva egy valós, fizikaikörnyezetet. Afejlesztői környezet (Multi-Node konfiguráció) komponensei a következők:- Egy klaszter vezérlő,amelyen az OpenStack szervizek többsége fut, képes hálózati erőforrásoklétrehozására, virtuális gépek hosztolására, illetve indítására a computehosztokon- Két compute hoszt,amelyen az OpenStack worker szervizei futnak. Virtuális gépek hosztolásáraképes.- Extreme switch emulátor,amelyet a klaszter vezérlőn futó neutron szerver konfigurál, a mechanizmus meghajtóimplementálása és integrálása után. A virtuális gépek közötti forgalom ezen futkeresztül.A 6. fejezetben a tényleges rendszerkonfigurációját és tesztelését mutatom be. Első lépésben ismertetem a szükségeshálózat, valamint a virtuális OpenStack hosztok létrehozását és konfigurációját.Ezután következett a Devstack fejlesztői környezet konfigurálása és telepítése- részletesen dokumentálva - az előbb említett topológiának megfelelően. A Devstack telepítését követőenleteszteltem az OpenStack funkcióit – úgy mint képfájl, flavor (a virtuális gépszámítási, memória és tároló kapacitását tartalmazza) hálózat, port, virtuálisgépek létrehozása. Az OpenStack funkcióinak ellenőrzése után akülönböző hosztokon indított gépek között teszteltem a kommunikációt, ezáltalmeggyőződtem róla, hogy a forgalom valóban a switchen megy keresztül. A gépekkizárólag a switch konfigurálása után, az adott VLAN létrehozása, és portokhozzáadása után kaptak IP címet a DHCP kiszolgálótól, így ezen információ és továbbitesztek futtatásával sikerült megerősíteni, hogy sikerült a tervezett hálózatitopológiát megvalósítani. Ezt követően a 7. fejezetben ismertettem aNeutron ML2 beépülő modul működését, amely lehetővé teszi az OpenStackNetworking számára a 2. rétegbeli hálózati technológiák egyidejű felhasználásátaz adatközpontokban. Ez a modul különböző hálózat típusokat támogat – mintpéldául: flat, vlan, vxlan. Ezen hálózati típusokat bemutattam és sajátszerkesztésű ábrákon szemléltettem, majd taglaltam a MechanismDriver szerepétés működését. Ezen kívül szakirodalom alapján, röviden definiáltam amechanizmus meghajtó által használható absztrakt metódusokat, amelyek valamelyhálózati esemény megtörténése esetén, képes a Neutrontól függetlenül működőeszközökkel való kommunikációra.A 7. fejezet utolsó részében aMechanismDriver ismertetése után röviden elemeztem más gyártók megoldásait,ezáltal megismerve a szükséges konfigurációs sémát. Különböző gyártók egyedimegoldásokat nyújtanak annak érdekében, hogy az általuk gyártott hardver képeslegyen a mechanizmus meghajtó által biztosított lehetőségeket kiaknázni, ésezáltal kiváltani a felhasználó által más esetben szükséges manuáliskonfigurációt.A 8. fejezet mutatja be a mechanizmus meghajtó implementálásánaklépéseit az Extreme EXOS switchekhez. Mivel az Extreme Switchekkel SOAPprotokollon keresztül kényelmesen lehet tranzakciókat megvalósítani, ezért énis ezt a protokollt választottam az implementációhoz. Ennek megfelelően részleteztema SOAP protokoll jellemzőit és képességeit, amelynek alapjaira épül az ExtremeSOAP interfész is. Az Extreme SOAP interfész képes a kommunikációhozelengedhetetlen munkamenetek kezelésére, a kéréseket tartalmazó XML fájloklétrehozására és a válaszok feldolgozására. Az XML kérések továbbításához HTTPprotokollra támaszkodik, az ennél szabányos kérés/válasz modellt használja.Ebben a fejezetben ismertettem továbbá a meghajtó Neutronbatörténő integrációjának lépéseit, valamint megterveztem és implementáltam egykonfigurációs sémát, amely a switchhel való kommunikációhoz szükségesadatokat és a portok térképéttartalmazza. Ezt, és a Neutron konfigurációs fájljait használja fel a meghajtóa megfelelő VLAN-ok létrehozásához, a hoszthoz tartozó portok beállításához.A konfiguráció beolvasását ésfeldolgozását, mind a Neutron konfigurációs fájlból, mind a felhő operátoráltal megadott ML2 konfigurációs fájlból (switch adatok, port térkép, VLANintervallum) a meghajtótól függetlenül működő konfigurációs szkript végzi. Azebből kiolvasott információk felhasználásával működik a következőkbenbemutatott meghajtóprogram.Azáltalam kifejlesztett ML2 mechanizmus meghajtó jelenleg a következő hálózati eseményekesetén képes a switch konfigurációjára:- VLAN típusú hálózatlétrehozása esetén felkonfigurálja a switchet a Neutron által kiosztottsegmentation_id alapján- Virtuális hálózattal,vagy porttal indított gép esetén, a kommunikáció biztosítása érdekében a megfelelőVLAN-hoz hozzáadja a gép hosztjaként szolgáló – switchet tartozó portot- Ha a gép nem a klaszterkontrolleren kerül indításra, azaz nem éri el közvetlenül a DHCP kiszolgálót,akkor a DHCP szervizeket futtató hoszt portját is hozzáadja a konfigurációhoz- Migrálás/Evakuáció eseténfrissíti a switch konfigurációt- Virtuális gép törléseesetén törli a hoszt portját a konfigurációból, természetesen csak akkor, haezt más gép már nem használja- Hálózat törlése eseténeltávolítja az adott taggel rendelkező VLAN-t Amechanizmus meghajtó bemutatása és a tesztesetek kidolgozása után, részletesen dokumentáltama használati esetek megvalósítását és ezek eredményeit.Utolsólépésként felsoroltam olyan továbbfejlesztési lehetőségeket, melyek túlmutatnaka jelenlegi fejlesztésen, de elviekben lehetséges implementációjuk. Például:- Trunkportok támogatása, amely lehetővé teszi hálózati alagút megoldások támogatását- VXLANhálózat támogatása- Virtuálisrouter támogatása
Intézmény
Budapesti Gazdasági Egyetem
Kar
Tanszék
Gazdaságinformatika Tanszék
Tudományterület/tudományág
NEM RÉSZLETEZETT
Szak
Mű típusa: | diplomadolgozat (NEM RÉSZLETEZETT) |
---|---|
Kulcsszavak: | hálózat tervezése, meghajtó, ML2, openstack, telekommunikáció |
SWORD Depositor: | Archive User |
Felhasználói azonosító szám (ID): | Archive User |
Rekord készítés dátuma: | 2020. Nov. 27. 04:40 |
Utolsó módosítás: | 2021. Már. 29. 10:54 |
Actions (login required)
Tétel nézet |