Apache CloudStack is één van de toonaangevende open source cloudplatforms, die door veel van de grootste public en private clouds wordt toegepast. Na een donatie van Citrix aan de Apache Foundation is een ontwikkeling in gang gezet, met als resultaat de Apache CloudStack. Citrix levert vanaf het begin al de grootste geldelijke bijdrage aan de ontwikkelgemeenschap. Zelf geeft Citrix de CloudStack software uit onder de naam Citrix CloudPlaform.

 

Wat is CloudStack?

Een belangrijk voordeel van CloudStack is dat het geen proprietary software is en er geen licentiekosten aan verbonden zijn. Het is bovendien ideaal geschikt voor een proof of concept (pof) van een cloudomgeving. Andere belangrijke open source concurrenten van CloudStack zijn onder meer OpenStack en Eucalyptus.

Apache CloudStack biedt de mogelijkheid om een bestaande virtuele infrastructuur naar een cloud-gebaseerde infrastructuur, Infrastructure-as-a-Service (IaaS) platform, te transformeren. Daarom is het niet zo verwonderlijk dat bij het ontwerp van CloudStack de Amazon-architectuur model heeft gestaan. CloudStack is een management platform waarmee private, public of hybride IaaS computing clouds zijn te bouwen en te beheren. Het platform is gebaseerd op een geïntegreerde omgeving, bestaande uit storage, netwerk en computer resources. Als gebruiker kun je daarmee on-demand een ‘elastic cloud’ computing service configureren van waaruit de verschillende resources zijn toe te wijzen aan eindgebruikers. CloudStack is hypervisor ‘agnostic’, dus geschikt voor zowel VMware vSphere, Hyper-V, LXC, KVM, XenServer en Oracle VM. Het CloudStack platform heeft zijn eigen API’s en ondersteunt AWS Elastic Compute Cloud (EC2) en S3 APIs. CloudStack ondersteunt netwerk services op de data link layer (L2) en sommige op de applicatie layer (L7), waaronder DCHP, NAT, Firewalls, VPN, enzovoort. Het biedt een gebruikersvriendelijke webbrowsers (Dashboard) voor het beheer van de cloudomgeving.

 

 

Architectuur CloudStack

Een minimale CloudStack-installatie bestaat uit een systeem waarop de CloudStack Management server draait en op een ander systeem de cloud infrastructuur. Een uitgebreide CloudStack-omgeving bestaat uit een high-available multi-node Management server en tienduizenden hosts. De Management server draait doorgaans op een dedicated server of een virtual machine. De server bestuurt de allocatie van virtual machines aan hosts en de toewijzing van IP-adressen. De Management server draait in een Apache Tomcat container in combinatie met een MySQL database. Zowel beheerders als eindgebruikers hebben via een webinterface toegang tot de Management server. Verder zorgt de server voor het toewijzen van storage aan een virtual machine, beheert het de snapshots, templates en ISO images.

 

CloudStack infrastructuur

Een volledig uitgebouwde cloud infrastructuur bestaat uit verschillende organisatorische lagen: regions, zones, pods en clusters. De grootste organisatorische eenheid in een CloudStack-omgeving is de region. Deze dient om de betrouwbaarheid van de cloud te verhogen door resources in meerdere geografische regions in te delen. Regions bieden de cloud een “fault tolerance” en “disaster recovery” voorziening. Een region bestaat uit meerdere beschikbaarheidszones, waarbij een zone ongeveer het equivalent is van een datacenter. Elke region wordt vanuit zijn eigen Manager server beheerd, die in één van de zones draait. Zones in een region bevinden zich doorgaans dicht bij elkaar.

De groepering van zones in regions biedt de cloud een hogere beschikbaarheid en schaalbaarheid. Zo kunnen user accounts Virtual Machines (VM’s) toepassen in meerdere, ver van elkaar verwijderde regions. Als één van de regions niet beschikbaar is, dan zijn de services nog steeds beschikbaar via VM’s in de andere region. Regions zijn zichtbaar voor de eindgebruiker.

Een zone is de tweede grootste organisatorische eenheid. Hoewel het is toegestaan om meerdere zones in een datacenter op te nemen, correspondeert een zone meestal met een enkele datacenter. Het voordeel om de infrastructuur in zones op te nemen is de het bieden van fysieke isolatie en redundantie.

Een zone bestaat weer uit één of meer pod’s en een pod kan weer uit één of meer hosts en storage servers bestaan. Een zone kan één of meer primaire storage servers bevatten, die door alle pod’s in een zone worden gedeeld. Secondaire storage wordt door alle pod’s in de zone gedeeld. Zones kunnen public of private zijn. Public zones zijn zichtbaar voor alle gebruikers en private zones zijn gereserveerd voor een specifiek domain. Een pod vertegenwoordigd meestal een enkel fysiek rack. Pod’s bevinden zich binnen de zones en bestaan uit één of meer clusters met hosts en één of meer primaire storage servers. Pod’s zijn voor de gebruiker niet zichtbaar.

Een cluster bestaat uit een aantal hosts (meestal 8 tot 15 stuks), bijvoorbeeld KVM servers of opgenomen in een XenServer pool, in een VMware cluster op basis van vCenter. De hosts hebben dezelfde hardware, draaien onder dezelfde hypervisor, op dezelfde subnet en delen dezelfde shared primary storage.

Op de hosts draaien onder de hypervisor de verschillende guest VM’s. Als host kan een Citrix XenServer, Linux KVM-enabled server, ESXi of een Windows Hyper-V server dienen. Hosts zijn voor de eindgebruiker niet zichtbaar en het weet niet op welke host zijn guest draait.

Het primaire storage systeem is aan een cluster gekoppeld of (bij KVM en VMware) aan een zone. Het storage systeem dient voor alle disk volumes voor alle VM’s op de hosts. CloudStack beheert de toewijzing van de guests virtuele disken aan een bepaald primair storage systeem. CloudStack is compatibel met alle standaard-compliant iSCSI- en NFS-servers, mits ondersteund door de onderliggende hypervisor (en onder Hyper-V bovendien de SMB- en CIFS-protocollen). Het secondaire storage systeem wordt gebruikt voor de opslag van templates, ISO images en disk volume snapshots.

Op het gebied van netwerken ondersteund Cloudstack, naast de traditionele methoden, verschillende Software Defined Networking (SDN) implementaties. Het ondersteunt een native SDN-implementatie op basis van de GRE isolatiemethode. GRE is een eenvoudig protocol dat packets inkapselt voor de routing naar andere protocollen over IP-netwerken. Het biedt de mogelijkheid om een geïsoleerd guest netwerk te creëren en additionele services als NAT, port forwarding en load balancing. Verder ondersteunt CloudStack nog een andere SDN-implementatie: de Nicira Network Virtualization Platform (NVP) Plugin.

 

**** Figuur 2: CloudStack Region (bron: Apache Cloudstack) ****

 

Installatie CloudStack

Een minimale CloudStack-installatie bestaat uit een Management server, database en storage systeem. Je kunt zowel de Management server als de MySQL database op dezelfde fysieke of virtuele systeem installeren. Maar je kunt ook meerdere Management servers installeren en een aparte node voor de MySQL database gebruiken, mits ze voldoen aan de volgende eisen: minimaal een 64-bit x86 CPU, 4 GB RAM, 250 GB disk en tenminste 1 NIC. Deze systemen kun je ook verbinden met primaire en secondaire storage, via een lokale disk of NFS. Als operating system wordt CentOS/RHEL 6.3+ of Ubuntu 12.04 (.1) aanbevolen.

Op een aparte host draaien de cloud services in de vorm van guest virtual machines. Elke host moet aan de volgende eisen voldoen: ondersteuning van Hardware Virtualization Machine (HVM) Intel-VT of AMD-V, 64-bit x86 CPU, ondersteuning met hardware virtualisatie, 4 GB geheugen, 36 GB lokale disk en tenminste 1 NIC. Je kunt verschillende virtualisatie-omgevingen gebruiken voor het draaien van de CloudStack VM’s, waaronder Hyper-V, KVM, vSphere, XenServer en LXC.

 

Wat is een cloudplatform?

Een cloudplatform is een softwareplatform, dat bestaat uit een pool met computer resources. Op basis waarvan public, private en hybride Infrastructure as a Service (IaaS) clouds zijn te bouwen. Het platform beheert zowel het netwerk, storage als computing nodes en tezamen vormen ze een cloudinfrastructuur.

In de loop van de tijd zijn er twee type application workloads in de cloudomgeving van datacenters naar boven gekomen. Het eerste type is de traditionele enterprise workload. De meeste van de bestaande enterprise applicaties vallen hieronder (zoals Microsoft, SAP en Oracle). Dergelijke applicaties draaien meestal op een enkele server of op een cluster en applicaties server nodes en ondersteund door een database. Deze traditionele workloads zijn doorgaans gebaseerd op technologieën, zoals middleware clusters en verticaal-schaalbare databases.

Internetondernemingen, zoals Amazon, Google en Facebook ondervonden dat de traditionele enterprise infrastructuur onvoldoende capaciteit bood om miljoenen gebruikers te kunnen ondersteunen. Ze zochten naar een nieuw applicatie-architectuur: de cloud-gebaseerde omgeving. Deze architectuur is niet langer gebaseerd op clusters met servers, maar op een groot aantal ‘loosely-coupled’ computing en storage nodes. De daarop ontwikkelde applicaties maken meestal gebruik van technologieën als MySQL sharding, NoSQL en geografische load balancing. Cloudomgevingen kunnen verschillende type workloads en applicaties ondersteunen, waaronder: webservices, webapplicaties, social media, ‘rich’ internetapplicaties (video, online gaming, mobile apps) en disaster recovery.

Er zijn twee belangrijkste verschillen tussen de traditionele en cloudgebaseerde workloads: schaalbaarheid en betrouwbaarheid. De schaalbaarheid van de traditionele omgeving is beperkt tot enkele tienduizenden gebruikers, die van een cloud-omgeving tot miljoenen. De traditionele omgeving biedt een vijf of meer negens ‘uptime’, de cloudomgeving een ‘assumes failure’.

CloudStack en CloudPlatform ondersteunen zowel de traditionele enterprise als de cloudomgeving. Door meerdere zones te creëren met verschillende hypervisors, storage en netwerken zijn beide type architecturen in een gemeenschappelijk cloudplatform toe te passen. Een belangrijk voordeel is dat de zones, met daarin de verschillende traditionele- en cloud-gebaseerde omgevingen, vanuit de CloudStack Management Server zijn te beheren.

 

*** Figuur 4: Management Multiple Zones (bron: Citrix) ***

 

 

CloudStack configuratie

De CloudStack software is te downloaden van de officiële mirror-site. Pre-build DEB en RPM packages kun je downloaden vanaf: http://cloudstack.apache.org/downloads.html. Deze packages bevatten zowel de Management Server als de KVM Hypervisor packages. Na het downloaden en installatie kun je beginnen met de configuratie van de zones, pod’s, clusters, hosts, storage en netwerken van de CloudStack omgeving. Als je ondersteuning wilt voor VMware, NetApp, F5, NetScaler, SRX of elke andere niet-open source software plugins moet je een paar extra componenten downloaden. Je volgt dan een iets andere procedure om de CloudStack omgeving vanaf de source op te bouwen. Als dat niet het geval is, kun je de ‘Quick Install Guide’ volgen. Voor alles dat meer is dan een eenvoudige trial installatie moet je een keuze maken uit verschillende configuraties, waaronder: architectuur, type hypervisor, netwerk en storage systeem. Voor de installatie en configuratie komt de nodige kennis over Linux om de hoek kijken. De installatie vindt namelijk volledig vanaf de command line plaats. Na de installatie van de Management Server (single of multi-node) kun je via de user interface inloggen. Daarin voeg je een zone toe, de eerste pod en een host; optioneel kun je meer pod’s, hosts en clusters toevoegen. Je voegt zo nodig ook extra primaire en secondaire storage toe. Daarna is de CloudStack klaar voor gebruik.

 

Open source of gesloten proprietary platform?

Bij de keuze voor een cloudplatform kun je kiezen tussen een open source en een gesloten, proprietary, platform. Er bestaan talrijke verticaal geïntegreerde cloud oplossingen, die je in bepaalde omgevingen gevangen houden (locked-in). Het is belangrijk om eerst te onderzoeken welke API’s een product ondersteund. Als je bijvoorbeeld AWS aan de architectuur wilt toevoegen, dan moet je controleren of het cloudplatform een AWS-compatibele API heeft. Kun je ook kiezen uit bepaalde netwerk, storage en hypervisor technologieën? Dit zijn belangrijke overwegingen bij de keuze voor een cloudplatform, want eenmaal gekozen, is het moeilijk om naar een andere cloudomgeving over te stappen. Met open source heb je als gebruiker de keus om zelf de cloudomgeving aan te passen, of zelfs een bijdrage te kunnen leveren aan de ontwikkeling van de code. Bij een gesloten oplossing ben je gebonden aan wat de leverancier je voorschotelt.

 

*** Figuur 3: CloudStack Dashboard ***

 

Epiloog

De installatie en implementatie van een CloudStack omgeving is bepaald geen sinecure. Naast een gedegen kennis van Linux heb je kennis nodig van virtuele omgevingen, virtuele netwerken en virtuele storage. Voor gebruikers, die geen Linux kennis hebben en moeite hebben om met de CLI te werken, die kunnen beter uitkijken naar de gestroomlijnde Windows GUI-gebaseerde cloudplatforms als VMware vCloud Air of Microsoft Cloud!

Wat is Infrastructure as a Service?

IaaS is een vorm van cloud computing dat via Internet gevirtualiseerde computing resources aan gebruikers aanbiedt. Naast Software as a Service (SaaS) en Platform as a Service (PaaS) behoort ook Infrastructure as a Service (IaaS) tot één van de drie belangrijkste categorieën van cloud computing services. In een IaaS-model biedt een derde partij via internet de gebruiker verschillende hardware, software, servers, storage en andere infrastructurele componenten. IaaS-providers kunnen ook de applicaties van gebruikers hosten en andere taken voor haar rekening nemen, waaronder onderhoud, backup en 24×7 beschikbaarheid. Ook andere (meer gespecialiseerde) taken worden ondersteund, zoals dynamische schaling van resources, desktopvirtualisatie en policy-gebaseerde services. IaaS-gebruikers betalen naar gebruik van de resources, per uur, week of maand. Sommige providers belasten de gebruiker naar de hoeveelheid gebruikte opslag van virtual machines. Toonaangevende IaaS-providers zijn: Amazon Web Services (AWS), Google Compute Engine, IBM SmartCloud Enterprise, Windows Azure en Rackspace Open Cloud.