Ett varaktigt moln (EC2 med EBS-boot)

En av de största skillnaderna mellan traditionella servrar och Amazons molnbaserade instanser (EC2) är det faktum att de sistnämnda inte är bestående, utan elastiska. De startas snabbt upp vid behov och det är väldigt enkelt att byta/flytta instanser (om man behöver mer/mindre resurser). Men det innebär även att all data försvinner om en instans stängs ner (termineras).

Det här har man, till viss del, kunnat lösa genom att t ex lägga användardata och konfiguration på bestående lagringslösningar (som S3 och EBS) i kombination med egna anpassade AMI:s (serverkonfigurationer). Men det är inte riktigt lika smidigt som med en traditionell server (som man bara startar upp om den har stängts ner).

Nu finns det dock en riktig lösning till det här: EBS-boot.

EBS-boot innebär att man lagrar en fullständig kopia av sitt operativsystem, med alla programvaror, på en EBS-volym. Utifrån denna volym kan man starta en (eller flera) EC2-instanser, som då omedelbart är rätt uppsatta.

Det går även att stoppa (och starta) EC2-instanser med EBS-boot – till skillnad från vanliga instanser som man bara kan starta om eller terminera – vilket innebär en rejäl besparing (om man inte behöver köra sin instans dygnet runt).

Jag har nyligen konverterat ett flertal vanliga EC2-instanser till EC2-instanser med EBS-boot. För att fler ska få nytta av detta så tänker jag berätta hur man gör. Instruktionerna gäller för Ubuntu i Amazons europeiska moln, men kan enkelt anpassas för de amerikanska molnen.

Du behöver först och främst ha den senaste versionen av EC2 API Tools. Installationen varierar beroende på operativsystem, förslagsvis att du googlar om du känner dig osäker.

1. Börja med att skapa en ny EBS-volym och anslut den till din EC2-instans.

ec2-create-volume --size 10 --region eu-west-1 --availability-zone eu-west-1b
ec2-attach-volume --region eu-west-1 vol-xxxxxxxx --instance i-xxxxxxxx --device /dev/sdh

Logga därefter in på din server.

2. Montera EBS-volymen med ett bestående inlägg i fstab

yes | mkfs -t ext3 /dev/sdh
mkdir /mnt/ebsimage
echo '/dev/sdh /mnt/ebsimage ext3 defaults,noatime 0 0' >> /etc/fstab
mount /mnt/ebsimage

3. Kopiera operativsystemet till EBS-volymen

nohup dd if=/dev/sda1 of=/dev/sdh &

Det här tar tid. Om du vill kontrollera status under tiden kan du göra det på följande sätt:

ps -aef | grep dd
kill -SIGUSR1 $PID

Du kommer att se ett meddelande när det är klart.

4. Avmontera sedan EBS-volymen och logga ut från din server.

umount /mnt/ebsimage

5. Koppla bort EBS-volymen och skapa en snapshot.

ec2-detach-volume --region eu-west-1 vol-xxxxxxxx --instance i-xxxxxxxx
ec2-create-snapshot --region eu-west-1 vol-xxxxxxxx

Notera namnet på din snapshot.

6. Kolla upp din AMI och registrera din EBS-boot.

ec2-describe-images --region eu-west-1 ami-xxxxxxxx

Med de uppgifter du får fram här är det enkelt att registrera din EBS-boot.

ec2-register --region eu-west-1 --snapshot snap-xxxxxxxx --kernel aki-xxxxxxxx --ramdisk ari-xxxxxxxx --description="En valfri beskrivning" --name="ett-bra-namn-med-datum-tex-20091227" --architecture x86_64 --root-device-name /dev/sda1

Så, nu är det bara att starta upp EC2-instanserna med EBS-boot! 🙂

Tyckte du det här inlägget var intressant? Jag arbetar mycket med Amazons molntjänster, men har inte skrivit något liknande inlägg tidigare. Om det finns ett intresse för liknande inlägg så får du gärna skriva en kort kommentar, så ska jag se till att nörda mig mer här framöver.

30 svar på ”Ett varaktigt moln (EC2 med EBS-boot)”

  1. Tack för en utmärkt guide!
    Fungerar perfekt förutom en liten sak om man skall starta en 32b instans. Architecture skall då sättas till i386 och inte –architecture x86_32 som man kan tro.

    ec2-register –region eu-west-1 –snapshot snap-xxxxxxxx –kernel aki-xxxxxxxx –ramdisk ari-xxxxxxxx –description=”En valfri beskrivning” –name=”ett-bra-namn-med-datum-tex-20091227″ –architecture i386 –root-device-name /dev/sda1

    ps1. Gärna fler aws inlägg.
    ps2. Någon som känner till alternativ till Amazon FPS (som endast kan användas för US registrerade företag)
    mvh
    Martin

  2. Det var klart intressant. 🙂 Jag undrar varför man behöver montera och avmontera /dev/sdh då det verkar lite överflödigt. Men jag lärde mig absolut om hur man på ett enkelt (men långsamt) sätt för över en ec2-instans till ebs-boot-enhanced-ec2.
    Tackar för inlägget.

Kommentarer är stängda.