Intro
Van de drie grote cloudleveranciers is Amazon de enige die echt platformonafhankelijke IT-resources aanbiedt. Gebruikers kunnen op afstand virtuele machines configureren, starten en beheren. Daaromheen zijn allerlei aanvullende faciliteiten voor de veiligheid, beschikbaarheid en schaalbaarheid georganiseerd. In dit artikel laten we zien hoe de gebruikersinterface van Amazons Elastic Compute Cloud er uitziet.
Als het gaat over cloudcomputing, dan worden Amazon, Google en Microsoft meestal in één adem genoemd, maar alleen die eerste biedt echte infrastructure-as-a-service. De andere twee leggen zich toe op platform-as-a-service. Googles App Engine biedt gebruikers de mogelijkheid om Java- en Python-programma's te uploaden en te runnen, en Microsoft levert met Azure een op de cloud gebaseerde Windows-omgeving. Amazon daarentegen laat zijn gebruikers complete virtuele machines draaien op zijn EC2-infrastructuur.
Volledige controle
Het verschil tussen PaaS en IaaS lijkt misschien een detail, maar is dat geenszins. Cloud computing op basis van IaaS geeft de klant namelijk de volledige controle over zijn omgeving. Bij Google maakt een gebruiker zich al gauw afhankelijk van de App Engine-libraries en bij Microsoft zit de gebruiker nog steeds vast in diezelfde lock-in waar velen al zo lang van af willen. Dat terwijl de transitie naar cloudcomputing bij uitstek een gelegenheid is om je minder afhankelijk te maken van leveranciers van proprietary-omgevingen. Dat kan door 'de knip' niet op platformniveau, maar op infrastructuurniveau te zetten.
Voor deze bespreking hebben we een account geopend en twee virtuele Linux-machines geactiveerd. Vervolgens hebben we die twee machines voorzien van een load balancer en aan een publiek internetadres gekoppeld. Daarbij hebben we ook gekeken naar de mogelijkheden voor beveiliging en beheer.
Aanmelden en de eerste stappen
Management Console
Werken met EC2 begint met het openen van een account voor Amazon Web Services (AWS). Naast je persoonlijke gegevens vul je ook je creditcarddata en eventueel een btw-nummer in. Daarna krijg je een pincode op je scherm en word je gebeld door een computer. Op die manier controleert Amazon of je telefoonnummer klopt. Daarna kun je direct aan de slag in de AWS Managament Console.
Het gemakkelijkst is het om in eerste instantie de bestaande AMI's te gebruiken. Dat zijn voorgebakken images die direct kunnen worden gestart.
Een AMI bestaat uit een bootpartitie en gegevens over de virtuele machine. De technologie is gebaseerd op Xen-virtualisatie, dus AMI's zijn ook prima zelf te maken.
Dat doe je door een bestandssysteem met een virtuele machine te bundelen. Amazon levert de tools daarvoor. Ondersteund worden de belangrijkste Linux-distributies, Sun Solaris en Windows Server. Maar let op: bestaande Windows-licenties mogen niet in de cloud worden gebruikt.
Regio's
Voordat je de virtuele machines (Instances) in de lucht brengt, kies je eerst
nog een Regio. Amazon heeft EC2-clouds aan de Amerikaanse oost- en westkust, in Azië (Singapore) en in Europa (Ierland). Je moet je dus wel afvragen of de interactie tussen cloud en gebruiker nog snel genoeg is. Elke honderd kilometer voegt immers minstens één milliseconde aan een web-klik toe.
In de Europese EC2-cloud zijn meer dan 1700 kant-en-klare AMI's beschikbaar, vergelijkbaar met virtuele appliances. En die kun je maar beter gebruiken ook, want de basisimages zijn sterk verouderd: Fedora 8 en Windows Server 2008.
Service level
Voor een hogere beschikbaarheid kun je de Instances nog over verschillende Availability Zones binnen de regio verdelen. Availability Zones
zijn datacenters die compleet onafhankelijk van elkaar zijn wat power-backup, koeling en rampen betreft. Zo kun je bijvoorbeeld je databasereplicatie organiseren. Daarbij draai je op veilige afstand een tweede databaseserver die in realtime een actieve kopie van de primaire server bijhoudt.
De sla van Amazon zelf is verder heel simpel. Het bedrijf heeft alleen een inspanningsverplichting. Zit de uptime onder de 99,95 procent (een halve dag per jaar), dan krijg je tien procent korting. Het grote verschil met traditionele dienstverleners is natuurlijk dat je niemand kunt bellen. Cloudcomputing is in dit geval een commodity business zonder dienstverlening. Dat maakt dat deze manier van werken voor echt belangrijke zaken niet voor de hand ligt.
Configuratie en virtuele machines
Configuratie
Na het kiezen van de AMI geef je aan welk Instance-type je wil gebruiken en hoeveel je er wil starten. De kosten voor een Instance zijn afhankelijk van het soort virtuele server. Amazon biedt daarvoor een tiental verschillende configuraties.
De gebruiker kan kiezen voor meer of minder processoren, elk met een tot vier kernen, 32 of 64 bits, extra veel geheugen, en tussen verschillende hoeveelheden local storage. Om de (virtuele) processoren met elkaar te kunnen vergelijken, heeft Amazon op elk Instance-type een andere EC2 Compute Unit-waarde geplakt.
Daarna kan je eventueel nog een specifieke Kernel en RAM Disk uitzoeken, en CloudWatch Monitoring aanzetten. Die laatste feature biedt een eenvoudig overzicht van processorbelasting, netwerkverkeer en disk I/O.
Om veilig met je servers te kunnen communiceren, genereer je een Key Pair. Daarmee is via ssh op virtuele machines in te loggen. Op die manier krijg je als beheerder een cryptografisch versleutelde ingang op je serversysteem.
Naast de beveiliging van de servers zelf met behulp van een firewall, zijn de virtuele servers ook op netwerkniveau te beschermen. Dat gebeurt door Instances in aparte groepen (Security Groups) te plaatsen. Elk daarvan heeft weer zijn eigen firewallinstellingen (vergelijkbaar met een screening router). Op die manier kun je er bijvoorbeeld voor zorgen dat de databaseservers wel door de webservers kunnen worden benaderd, maar niet door de buitenwereld. Zo wordt bijvoorbeeld een getrapte LAMP-infrastructuur opgebouwd (Linux met Apache, MySQL en PHP/Perl/Python).
Virtuele machines
Als laatste krijg je van Amazon nog een overzicht van de gekozen instellingen en dan is het alleen nog een kwestie van de startknop indrukken. Binnen een paar minuten zijn je virtuele machines online. En wie onderweg CloudWatch Monitoring heeft aangezet, kan zijn servers nu in wat simpele grafieken volgen.
Amazon geeft publieke webadressen terug, zodat de buitenwereld je servers kan bezoeken, maar stop je een virtuele machine, dan ben je zijn ip-adres kwijt.
Om dat te voorkomen, kun je Elastic IP-adressen aanvragen en die aan een Instance koppelen. Als het later nodig is om een andere server in de lucht te brengen, dan kun je datzelfde adres weer aan de nieuwe Instance toewijzen. Zo kun je die ip-adressen in je eigen DNS-server opnemen. Amazon heeft zelfs een formulier om de reverse DNS in stellen. Maar gebruik je ze niet, dan kost elk ip-adres wel een dollarcent per uur.
Heb je zo veel verkeer dat een enkele webserver niet meer voldoende is of wil je een redundante infrastructuur opzetten, dan gebruik je de Elastic Load Balancer. Net als de Instances zelf zijn deze heel gemakkelijk in een wizard aan te maken.
Opslag en capaciteit
Permanente opslag
Voor wie verder geen statusinformatie op zijn virtuele machine bijhoudt, hoeft het bestandssysteem niet te worden bewaard bij het afsluiten van een Instance. Verander of bewaar je gegevens op disk, dan moet je partitie wel worden bewaard. Amazon biedt daarvoor de Elastic Block Storage. Die wordt gesaved en weer gemount als een AMI opnieuw wordt gestart. Gebruik je geen EBS, dan staat het bestandssysteem in de local instance store en die gaat verloren zodra een Instance wordt uitgezet. Een alternatief is om data op te slaan in S3, een andere clouddienst van Amazon, die ook wordt gebruikt om de AMI's zelf in op te slaan.
Je kunt ook snapshots van een EBS-partitie maken, zelfs terwijl de virtuele machine loopt, maar het is beter om te unmounten, zodat ook de caches van applicaties en besturingssysteem worden bewaard. Gaat het om een root device, dan kun je het beste een shutdown geven. Die snapshots zijn weer terug te halen door ze naar EBS te kopiëren, maar ze kunnen ook tussen gebruikers onderling worden uitgewisseld.
Capaciteit reserveren
Naast de gewone (On-Demand) Instances zijn er ook Reserved Instances. Deze worden op dezelfde manier geconfigureerd, maar nog niet daadwerkelijk gestart. Ze kunnen voor een of drie jaar worden ingekocht en draaien dan tegen een gereduceerd tarief. Op die manier kan Amazon hardware inkopen en inplannen voor gereserveerde, en deels betaalde, capaciteit. Omdat Microsoft in de tussentijd de prijzen kan verhogen, kan Amazon de kosten voor Windows Instances echter niet voor de gereserveerde periode garanderen.

Tenslotte zijn er nog de Spot Instances. Daarbij kun je bieden op beschikbare capaciteit en wordt jouw Instance gedraaid zolang je bod het hoogste is. Deze manier van werken is vooral interessant voor niet-interactieve batchklussen. Hoe meer de gebruiker betaalt, des te eerder het werk is gedaan.
Om de controle over zijn resources te houden, heeft Amazon het aantal On-Demand Instances tot maximaal twintig per regio beperkt. Het aantal Spot Instances is maximaal 100. Er zijn wel formulieren om meer Instances aan te vragen.
Na de kennismaking
Betalen voor Instances gaat per uur. Een gebruiker betaalt dus niets zolang hij geen virtuele servers heeft draaien. Om een idee te geven: de prijs voor een standaard Linux-machine ligt tussen de twee en zeventig dollarcent per uur. De prijzen voor Windows zijn gemiddeld anderhalf keer zo hoog.
Het dataverkeer binnen een Availability Zone is gratis. Verkeer met de buitenwereld en andere Availability Zones wordt in rekening gebracht. Dat kost ongeveer tien dollarcent per gigabyte voor zowel inkomend als uitgaand verkeer.
Het gebruik van EBS kost tien dollarcent per Gigabyte per maand. Een Load Balancer kost drie cent per uur en CloudWatch Monitoring kost anderhalve cent per Instance per uur.
Alles bij elkaar gaat het toch om een behoorlijk ingewikkeld prijsmodel. Dat maakt vergelijken lastig. Volgens analisten is het voor systemen die je continu gebruikt goedkoper om zelf te kopen. Zij verwachten dat dit soort clouddiensten vooral door grote organisaties en start-ups zullen worden ingezet. Die eerste doen dat als reservecapaciteit en voor (tijdelijke) projecten, die tweede vanwege de schaalbaarheid en omdat ze dan geen eigen investering in hardware hoeven te doen.
Even een snel sommetje voor wie overweegt zijn eigen serversysteem door een virtuele machine in de cloud te vervangen. Dertig dollarcent per uur is meer dan 2500 dollar per jaar. Uitgaand van een afschrijvingstermijn van drie jaar kan van dat geld een mooie server worden gekocht en gehost.
Automatisch beheer
De interface voor EC2 is drieledig. Alles is via de webinterface te bedienen. Dat zullen de meeste gebruikers ook zo doen, maar wie de uitrol en het beheer van virtuele servers wil automatiseren doet dat via de Web Services API of door de CLI-commando's in zijn scripts te integreren. Er zijn ook interfaces voor PHP, Ruby, Java en Windows.
Juist voor wie snel wil kunnen opschalen of al veel systemen te beheren heeft, verdient automatisering de voorkeur. Op dit moment worden de automatische uitrol en het beheer op hybride cloudinfrastructuren in de bestaande beheeromgevingen van de grote leveranciers ingebouwd. Voorbeeld daarvan is Redwood, een uitbreiding op de VMware-beheerstack, waarbij externe clouds met de interne gevirtualiseerde infrastructuur kunnen worden geïntegreerd. De software is nu in bèta en verschijnt in dit najaar. Amazon zelf biedt Auto Scaling als onderdeel van CloudWatch Monitoring.
Getting Started
Een eerste kennismaking met EC2 op basis van de Getting Started Guide is prima te doen. Daarna kun je verder met de User Guide. Over het algemeen zijn Amazons interfaces behoorlijk uitgebreid, maar goed gedocumenteerd. Wie bekend is met de virtualisatie-managementinterface van bijvoorbeeld VMware of Red Hat, zal geen enkele moeite hebben met het doorgronden van Amazons Management Console. Alles is heel intuïtief in de bediening.
Over de prijzen van Amazon zijn we minder enthousiast. Gaat het om een tijdelijk project of heb je simpelweg het kapitaal niet om eigen systemen aan te schaffen, dan is EC2 een prima optie. Gaat het om permanente servers en kun je die ook betalen, dan is het beter om eigen systemen te kopen en die bij een goede colocation-provider onder te brengen.