Open source is sexy. Dat is helaas nou niet echt direct wat je denkt. Als je een beeld moet vormen van open source, denk je toch al snel aan nerds en echte ICT mannetjes. Gelukkig is dit beeld niet correct. Bijna alle grote bedrijven doen tegenwoordig wel iets in open source. Maar waar zijn ze precies mee bezig? Welk open source project is nou zo sexy dat iedereen mee wil doen? Dit project heet OpenStack. OpenStack is één van de grotere open source producten en hét open source cloudplatform. Maar wat is er nou zo bijzonder aan OpenStack en waarom wil iedereen mee doen?

Geschiedenis
In 2010 waren Rackspace en NASA allebei op zoek naar een cloudplatform. Rackspace wilde hun eigen platform gaan bouwen. NASA had geëxperimenteerd met Nebula en was tot de conclusie dat dat toch niet echt was wat ze wilde. Gezamenlijk zijn ze begonnen met OpenStack. OpenStack is opgebouwd uit verschillende projecten. De eerste twee projecten waren Object Storage (de code naam hiervan is Swift, ontwikkeld door NASA) en Compute (met de codenaam Nova, ontwikkeld door Rackspace). De eerste versie van OpenStack werd op 21 oktober 2010 uitgebracht en had de naam Austin.

Elke paar maanden wordt er een nieuwe versie van OpenStack uitgebracht, met elke keer weer nieuwe verbeteringen en soms ook nieuwe projecten. In de afgelopen jaren waren dit Glance (image store), Keystone (identity management), Horizon (online dashboard), Cinder (block storage), Neutron (networking), Heat (automatische uitrol van services) en Ceilometer (metering van systemen).

Projecten
De projecten van OpenStack zijn in principe losstaande componenten die samengekoppeld kunnen worden voor een betere ervaring van het geheel. Deze projecten communiceren onderling door middel van API’s. Een voordeel hiervan is dat een beheerder zo het hele proces kan nabootsen, zoals een service dat ook doet. Ook is het hierdoor mogelijk om een project te vervangen door ander software, dat dezelfde functionaliteit bied.

Nova
Nova is waarschijnlijk het meest bekende project. Dit project is in 2010 opgezet door Rackspace. Zij wilden hun interne omgeving opnieuw opbouwen en besloten toen de code onder de Apache License 2.0 uit te brengen. Nova is het gedeelte dat voor de virtualisatie zorgt binnen OpenStack. Het maakt gebruik van bestaande virtualisatie-systemen zoals KVM, Xen, VMware en HyperV. Ook wordt LXC en Docker ondersteund, waarbij aparte systemen gemaakt kunnen worden door middel van Linux Containers. 

Nova is de managementlaag die dit alles aanstuurt en heeft de mogelijkheid om diverse acties te ondernemen op een instance. Hierbij kan gedacht worden aan het starten, stoppen, aanmaken en verwijderen van instances. Ook het resizen van een instance (meer of minder geheugen en/of CPU) en het migreren van een instance naar een andere fysieke host is een taak van Nova.

In het bijzondere geval van VMware en HyperV, zal Nova de verbinding leggen met het managementgedeelte van de bestaande omgeving en zal Nova soortgelijke acties kunnen doen als dat het direct onder Linux zou kunnen doen. Helaas kan Nova nog niet alles, maar hier wordt wel hard aan gewerkt. Hierdoor is het bijvoorbeeld mogelijk om een bestaande omgeving te koppelen met een cloudomgeving en een migratietraject te starten.

 

Een compleet overzicht van de mogelijkheden van Nova met een bepaalde ‘Hypervisor’ is te vinden in de wiki van OpenStack (zie links).

Swift
Het project Swift is ontwikkeld door NASA als een Object Storage en is vergelijkbaar met S3 van Amazon. Hierdoor is het mogelijk om door middel van een HTTP request data op de schijf toe te voegen, te verwijderen of te veranderen. Dit kan door middel van het veel gebruikte REST protocol. Swift heeft minimaal drie servers nodig om de data op te slaan. Door middel van een algoritme weet de Swift proxy (dit is de service die de koppeling verzorgt tussen OpenStack en het Swift-cluster) waar de desbetreffende data staat. De data zelf wordt in verband met redundancy op drie verschillende locaties opgeslagen.

Deze vorm van opslag wordt vooral gebruikt om grote hoeveelheden data op te slaan, zoals bijvoorbeeld bootable images van instances. Object Storage wordt niet gebruikt als disk voor een instance.

Glance
Als er een cloud instance gestart moet worden, zal er een disk image opgehaald worden vanuit Glance. Glance beheert deze disk images en kan deze ook doorgeven aan een instance. Voor de meeste Linux distributies zijn er disk images beschikbaar, die gedownload kunnen worden vanaf het internet. Deze disk images kunnen geüpload worden in Glance en sinds kort is ook mogelijk dat Glance zelf de bestanden ophaalt vanaf internet en deze in de Image Store zet.

Glance kan zijn bestanden opslaan in Swift, Cinder en vSphere, maar ook lokaal op de disk.

Keystone
Eén van de centrale projecten is Keystone. Keystone is de centrale authenticatie-service waartegen de verschillende projecten van OpenStack authentiseren. In Keystone is het mogelijk om diverse backends toe te voegen. Standaard wordt hier een database voor gebruikt, maar het is ook mogelijk om tegen Active Directory te authentiseren. Hierdoor kan je OpenStack integreren in een standaard Windows omgeving, waarbij de migratie van bijvoorbeeld VMware naar OpenStack stap voor stap gedaan kan worden.

Horizon
In OpenStack is het mogelijk om de services te managen via commandline tools. Deze tools communiceren met de API’s van de diverse projecten. Ook is er Horizon (webinterface voor OpenStack) waarin het mogelijk is om acties te verrichten. Zo kan je snel een nieuwe cloud instance aanmaken of de huidige status opvragen van een cloud instance. Tevens is het mogelijk om via Horizon de console te openen van een instance. Door deze webinterface open te stellen voor gebruikers, kunnen gebruikers gemakkelijk hun instances beheren zonder dat een beheerder hier tussen hoeft te komen. Voor de gebruiker is dit fijn aangezien ze zelf snel kunnen schakelen.

Quatum / Neutron
Eén van het meest uitgebreide project van OpenStack is het netwerkgedeelte. Tot de Folsom release van OpenStack was het mogelijk om de verschillende cloud instances door middel van een Linux Bridge en een soort NAT aan te sluiten op het netwerk. Er was geen scheiding tussen de verschillende instances. Wel kon er gebruik gemaakt worden van security groups, waarbij er een firewall geplaatst werd op de compute node. Deze firewall kon dan verkeer wel of niet toelaten tot een cloud instantie.

Sinds Folsom is het netwerkgedeelte van OpenStack erg uitgebreid. Er kan nu gebruik gemaakt worden van bijvoorbeeld de Open vSwitch plugin. Deze plugin biedt de mogelijkheid om een software defined network (SDN) te creëren. Dit type netwerk is sinds een paar jaar erg in opkomst. Met SDN wordt het huidige netwerk doorgetrokken tot in de fysieke servers. Door middel van VLANs of GRE kan je netwerken binnen OpenStack aanmaken, waardoor een netwerk specifiek voor een klant aangemaakt kan worden. Deze netwerken kunnen dan niet bij elkaar komen, maar kunnen wel tussen diverse fysieke nodes gedeeld worden. Door middel van een aparte router node kan dit verkeer gemanaged worden. Eén van de voordelen van SDN is dat dit ook kan communiceren met het normale netwerk als de netwerkapparatuur ondersteuning heeft voor OpenFlow (dit is het protocol wat Open vSwitch gebruikt).

Cinder
Naast de Object Store (Swift) heeft OpenStack ook een project dat Block Storage aanbiedt. Dit wordt Cinder genoemd. Door middel van Cinder kan er een aparte disk aan een instance gekoppeld worden, waardoor de instance er een nieuwe disk bij krijgt (bijvoorbeeld sdb). Als backend gebruikt Cinder een LVM volume groep.

Heat
Eén van de nieuwe projecten is Heat. Met Heat kan je diverse applicaties bovenop de cloud uitrollen. Dit is vergelijkbaar met AWS CloudFormation. Door middel van een template file kan er precies ingesteld worden hoe en met welke instances de applicatie uitgerold moet worden. Je kan ook een template gebruiken, die geschikt is voor AWS CloudFormation.

Ceilometer
Een andere nieuw project is Ceilometer. Heel simpel gesteld, biedt Ceilometer de mogelijkheid om metering te doen in de cloud. Het is hiermee mogelijk om het verbruik van CPU en netwerk te koppelen aan een klant en hier dan, door een geautomatiseerd systeem, een factuur voor te maken.

Generieke componenten
Naast het standaardproject van OpenStack zijn er nog een aantal onderdelen nodig om een OpenStack cloud te draaien. Dit zijn een berichtenwachtrij en een database.

Berichtenwachtrij (RabbitMQ)
Om communicatie mogelijk te maken tussen de verschillende onderdelen van OpenStack wordt er een wachtrij gebruikt. Een bepaald project kan een bericht op de wachtrij zetten. Deze kan dan door een ander project opgehaald worden. Naar aanleiding van dit bericht kan het zijn dat er een actie wordt ondernomen door een bepaald project. Op dit moment worden RabbitMQ, Qpid en ZeroMQ ondersteund.

Database (MySQL)
De database wordt gebruikt om data in op te slaan. Zo staan hier bijvoorbeeld de namen van de hosts en de gebruikers in. Als database kan er gebruikt gemaakt worden van MySQL of PostgreSQL.

Links

https://wiki.openstack.org/wiki/HypervisorSupportMatrix

Over Jasper Aikema
Jasper Aikema is ICT consultant bij JA, waarbij hij gespecialiseerd is in het inrichten van een public en private cloud op basis van OpenStack. JA is een public cloudprovider die gebruik maakt van OpenStack, waarbij de servers en de storage systemen in Nederland staan.