U bent nu hier: » Home » Technologie » Draai Ubuntu-servers op Amazon EC2

Draai Ubuntu-servers op Amazon EC2

Gepubliceerd: 27 mei 2009 om 13:19 uur
Auteur: Koen Vervloesem

Canonical heeft zich in de nieuwste release van Ubuntu, versie 9.04 of Jaunty Jackalope, duidelijk gefocust op cloud computing. Vooral de mogelijkheid om met Eucalyptus een privé-cloud op te zetten viel daarbij in de kijker, maar je kunt ook gewoon Ubuntu op Amazon EC2 draaien. Dat werkt vrij eenvoudig, en we laten je zien hoe.

Amazon EC2 (voluit Elastic Compute Cloud) is al snel na zijn ontstaan een de facto standaard voor cloud computing geworden. In feite is het gewoon een verzameling virtuele servers die op de Xen-hypervisor draaien. Het voordeel van EC2 is dat je on-demand onmiddellijk heel wat virtuele servers kunt opzetten. Je betaalt gewoon voor de tijd dat je servers op EC2 draaien, dus je 'huurt' computertijd bij Amazon.

Als gebruiker van EC2 creëer of download je een Amazon Machine Image (AMI). Dit is een voorgeconfigureerd pakket met besturingssysteem en software, waarmee je dan een virtuele machine kunt instantiëren op EC2. Ubuntu heeft officiële AMI's voor versies 8.04 (een LTS-versie) en 8.10, en het zal nog hoogstens enkele weken duren voordat Ubuntu 9.04 ook officieel ondersteund is. Het gaat hierbij telkens om de serverversies. Je kunt ook zelf een aangepaste AMI aanmaken met het programma vmbuilder.

De Ubuntu-images zijn gratis te gebruiken, maar je moet natuurlijk een account hebben bij Amazon Web Services om ze te draaienl En dan wordt je gebruik ook aangerekend. De virtuele Ubuntu-servers hebben dezelfde ondersteuning als de normale versies, dat wil zeggen 18 maanden voor een normale release en vijf jaar voor een LTS-release. Ubuntu Server Edition op Amazon EC2 draaien gaat in vier stappen: maak eerst een account aan bij Amazon, installeer dan de Amazon EC2 API-tools, instantieer je images en configureer tot slot je server instance. We loodsen je hier door deze stappen.

Amazon account

Maak dus eerst een Amazon account aan op http://aws.amazon.com en ga daarna naar http://aws.amazon.com/ec2 waar je "Sign up for Amazon EC2" kiest. Hier moet je je kredietkaartgegevens ingeven, zodat je verbruik kan worden betaald. Nadat je zo bent geregistreerd, krijg je de vraag om een X.509-certificaat aan te maken of te uploaden. Als je er nog geen hebt, kun je dit laten aanmaken. Daarna moet je de private sleutel downloaden (dat kan later niet meer opnieuw, dus verlies deze niet!) en kun je het certificaatbestand downloaden (dat kan later wel nog). Hou ook je 'Account Number' bij de hand. Dat een getal is van de vorm XXXX-XXXX-XXXX. Als je ingelogd bent op de website, zie je het onder "Welcome, naam".

Installeer de EC2-tools

Nu je account klaar is, hoef je op Ubuntu alleen nog de EC2-tools installeren. Doe je dat op Ubuntu 9.04, dan gaat dat heel eenvoudig. Schakel de multiverse repository in (Amazons EC2-tools zijn immers niet open source) en installeer de tools:

sudo apt-get install ec2-api-tools

Om de tools te gebruiken, moeten we een aantal omgevingsvariabelen klaarzetten met de juiste informatie, zoals je private sleutel en je certificaat. Plaats daarom de volgende opdrachten in een bestand .ec2rc:

export EC2_PRIVATE_KEY=$HOME/plaatsvansleutel/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem

export EC2_CERT=$HOME/plaatsvancertificaat/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

Telkens als je EC2 wilt gebruiken, kan je de juiste omgeving klaarzetten met het volgende commando:

source .ec2rc
Controleer nu of alles werkt:
ec2-describe-images -o self -o amazon

Als alles in orde is, krijg je nu een lange lijst met alle beschikbare images die je kunt draaien op EC2. Als je daarentegen een foutmelding "Client.AuthFailure" krijgt, dan is je account bij Amazon Web Services nog niet in orde, of heb je niet naar de juiste private sleutel en certificaat gewezen in het bestand .ec2rc.

Om de publieke AMI's te gebruiken, moet je een ssh-sleutel genereren. Dat kan als volgt:

ec2-add-keypair ec2-keypair > ec2-keypair.pem

Zet de permissies daarna goed, en ook bij je private sleutel en certificaat:

chmod 600 *.pem
Draai een EC2-instance

Nu heb je alles om een instance te draaien op EC2. Het enige wat je nog moet weten is het AMI-getal van de publieke image, dit identificeert de image op een unieke manier. Voor Europa zijn de Ubuntu images de volgende:

Versie 32 bit 64 bit
Hardy ami-30c0e844 ami-3ac0e84e
Intrepid ami-80c0e8f4 ami-84c0e8f0

Draai je je virtuele servers liever in Amerika (bijvoorbeeld omdat EC2 daar iets goedkoper is), dan kan dat ook:

Versie 32 bit 64 bit
Hardy ami-5d59be34 ami-2959be40
Intrepid ami-5059be39 ami-255bbc4c

Willen we bijvoorbeeld een 32 bit Hardy-instance in Europa draaien, dan is dat heel eenvoudig:

ec2-run-instances ami-30c0e844 -k ec2-keypair

Als alles goed gaat, krijg je nu te zien dat de instance 'pending' is, en als je na een tijdje ec2-describe-instances uitvoert, verandert de status naar 'running' en zie je een IP-adres.

Autoriseer nu ssh-toegang:
ec2-authorize default -p 22

En daarna kan je inloggen op de virtuele Ubuntu-machine met verwijzing naar de juiste ssh-sleutel en het publieke IP-adres dat je in de uitvoer van ec2-describe-instances ziet:

ssh -i ec2-keypair.pem ubuntu@ip-adres

Vanaf nu begint je rekening overigens te tikken, dus als je de server wilt stoppen doe je dat met:

ec2-terminate-instances instance_id

Dit instance_id vind je in de uitvoer van ec2-describe-instances en begint met een i.

Overigens: als je een 64 bits virtuele machine wilt draaien op EC2, moet je bij ec2-run-instances de optie -t c1.xlarge gebruiken.


Amazon en Eucalyptus

Als je de EC2-commando's in dit artikel vergelijkt met degene uit onze uitleg over Eucalyptus, dan zie je dat deze gewoon hetzelfde zijn. Dat is niet toevallig: de makers van Eucalyptus hebben ervoor gekozen om hun privé-cloudsoftware volledig interface-compatibel te maken met EC2, omdat die laatste nu eenmaal de facto de cloud computing-standaard is. Voor de gebruiker is dat handig: de commando's die je leert voor gebruik met EC2 kun je ook toepassen op Eucalyptus en andersom, op enkele verschillen na. Bij Amazon spreekt men bijvoorbeeld van AMI's, terwijl die images bij Eucalyptus EMI's heten (Eucalyptus Machine Image).

Intern werken beide systemen helemaal anders, maar die verschillen worden mooi afgeschermd van de gebruiker. Wel een groot verschil is dat het nog vrij omslachtig is om een eigen Eucalyptus-cloud op te zetten, terwijl je bij Amazon EC2 betaalt voor het gemak van een ready-to-use cloud. Je kunt ook nog niet eenvoudig een image migreren van EC2 naar Eucalyptus of andersom. EC2 gebruikt immers Xen als hypervisor en Eucalyptus op Ubuntu gebruikt KVM, waardoor de images verschillend zijn opgebouwd. Images kunnen wel geconverteerd worden van het ene systeem naar het andere, maar dat is niet triviaal en vereist wat kennis van beide hypervisors. De Eucalyptus-ontwikkelaars gebruiken intern tools om die conversie automatisch uit te voeren en ze zijn van plan deze aan een toekomstige versie toe te voegen, waardoor het nog gemakkelijker wordt om een virtuele server van EC2 naar een privé-cloud te migreren en andersom.

Is EC2 wel interessant voor mijn server?

Overigens heeft Ubuntu Server 9.04 een nieuwe functie die vooral op EC2 interessant is: zogenaamde profielen voor het programma GNU screen waarmee je terminalsessies kunt draaien. Deze profielen tonen onderaan in de terminal een statusbalk met allerlei systeeminformatie. Eén van de mogelijkheden om daar te tonen is de geschatte kosten om je systeem op Amazon EC2 te draaien. Deze schatting houdt rekening met de uptime van het systeem, het aantal processoren en de netwerkactiviteit.

Handig is dat dit script ook werkt op servers die niet op EC2 draaien. Zo kun je van een bestaande fysieke of virtuele server laten schatten hoeveel het zou kosten om die op EC2 te draaien. Je kunt het ec2-cost script ook afzonderlijk aanroepen voor een gedetailleerdere berekening met /var/lib/screen-profiles/ec2-cost --detail. Dan worden de kosten ook nog opgesplitst in in- en uitgaand netwerkverkeer en uptime.


De toekomst: Ubuntu in de wolken

Tegen dat versie 9.10 ("Karmic Koala") van Ubuntu uitkomt, zullen er heel wat ready-to-run virtuele appliances beschikbaar zijn voor specifieke doeleinden, die dan op EC2 gebruikt kunnen worden. Een soort portfolio van standaard-images voor taken zoals een mailserver, VoIP-server, enzovoort. Een EC2-instance starten zou dan even gemakkelijk moeten worden als het installeren van een lokaal pakket nu is met apt-get. Hierdoor wil Ubuntu hét platform voor cloud computing worden.

Peiling

Steve Jobs heeft de iPad geintroduceerd. Laat jij het nieuwe speeltje van Apple toe op je netwerk?

 
 
 
 
 
 
 
 
 
 
 

Een eerste blik op Google Chrome OS