Sunday, May 24, 2009

Amazon EC2 - nu är vi uppe och rullar

Nu har vi äntligen tagit klivet fullt ut och efter en veckas provtid och en vecka av mindre justeringar så ligger nu Shoppinggatan helt på EC2.
Som jag har beskrivit tidigare finns det många anledningar som gör Amazon till en lämplig host för Shoppinggatan. Skalbarheten, enkelheten, låga priser på såväl datorkraft som utrymme gör det helt enkelt tryggt för oss att välkomna nya kunder, nya produkter och nya språk.

Tuesday, May 19, 2009

Amazon EC2 - Prestanda och Raid

Medan jag skriver det här förs den senaste versionen av databasen så sakteliga över från våra gamla servrar till Amazon - vi närmar oss slutspurten i migrationen av Shoppinggatan till Amazons roliga och intressanta EC2.

Under veckan som har gått så har vi testat, utvärderat och ändrat i våra konfigurationer mot EC2, med blandade resultat och bara några få riktiga snedsteg.

Godbitar från veckan:
EC2 disk performance - det är otroligt lätt (och billigt) att sätta upp ett raidsystem, med stor förbättring av prestandan. Det betyder att backup måste göras lite annorlunda (enkel snapshot räcker inte), men hastigheten ökar dramatiskt.
All about Linux Swapspace - utrymmet på EC2 är billigt, så lagom stort växlingsutrymme känns som ett måste.
Sysbench - yum install sysbench är ett underbart litet kommando för att snabbt kunna utvärdera din server.
Recursive text file find and replace - Ett litet script som jag gjorde för att snabbt söka och ersätta i flera textfiler, bra att ha verktyg om jag är tvungen att flytta tex databasservern till en ny instans med ny ip, och därför behöver ändra mina konfigurationsfiler på apacheservern.

Uppdaterat: Raid kan, precis som med fysiska diskar, vara rätt struliga. Jag vill bara poängtera att jag bara rekommenderar RAID på ec2 till den som är väl insatt i det.

Monday, May 11, 2009

Amazon EC2 revisited

Nu i helgen har vi arbetat ytterligare lite med Amazons elastiska moln, Amazon EC2. Den trogna läsaren vet att vi gillar Amazon och kör CloudFront och S3 (för statiska filer). Dessbättre har vi under den senaste tiden drabbats av ett angenämt problem - besökarna ökar på Shoppinggatan samtidigt som våra kunder blir fler och större. Trevligt som sagt, men det innebär också att vår flytt från vår nuvarande serverlösning har blivit än viktigare, och en flytt till Amazons EC2 känns som ett rätt stabilt och prisvärt alternativ med tanke på deras stabilitet och skalbarhet.

När jag kikade på EC2 senast var den europeiska parken relativt ny, och det var lite strul med Amazons verktyg framförallt kring arbetet med AMI'er.
Idag är situationen delvis annorlunda - Amazon har skapat ett trevligt litet webinterface som gör det lätt att hantera instanser, och även deras java-tools fungerar numera som förväntat.

Så här såg vår process ut:
1) Vi valde en bra start-ami (centos) och skapade en ny instans
2) Skapade en stor volym (50 gig) och mountade den mot vår instans
3) Konfigurerade ami så att LAMP fanns och levde tillsammans med alla nödvändiga extensions (Tack gode gud för Yum!)
4) Konfigurerade LAMP så att all data ligger på den mountade volymen.
5) Importera data och se att allt fungerar
6) Skapade en ami av den fungerande instansen med ec2-bundle-vol, ec2-upload-bundle och ec2-register.
7) Reservera en eller två ip-adresser så att vår DNS kan pekas rätt
8) Stoppa instansen och starta en ny - fungerar allt som förväntat?
8) Done - allt klart för att köras - och behövs en ny instans så är allt förberett.

Och det härligaste med EC2 - vi bestämde oss för att lägga databasen på en egen instans. Och en timme senare är det klart, allt hänger bara på din initiala AMI!

Några tips:
* Se till att volymerna är tillräckligt stora. 50 gig i en volym är billigt. Ingen fara om de inte är det förstås, då det är superenkelt att skapa nya volymer och skicka över datan dit.
* Dokumentera allt du gör - ordentligt. Linux kan ibland vara lite som en Minoisk labyrint och du vet aldrig när du måste börja om från början.
* Se till att imagen som du skapar med ec2-bundle-vol är tillräckligt stor, för en AMI ändrar du inte lika snabbt som en volym. (Det tar minst 30 minuter, det vet jag av egen erfarenhet när sda plötsligt var tomt på utrymme imorse :-))
* Lägg inte privata nycklar på AMI'n, lägg dem på en volym
* Ha all data utom temporär på volymen (så försvinner inte allt varje gång du stoppar en instans ;))
* Slösa inte tid på iptables - Amazon har ett fullgott skydd med sina inbyggda zoner.
* Rent praktiskt så ändrade jag i /etc/my.conf för att sätta databas till min mountade volym som alltid mountades på samma ställe.
* Samma sak för httpd, jag la till /etc/httpd/conf.d/fnl.conf som i sin tur inkluderade conffiler från den mountade volymen.
På så sätt kan jag alltid ändra uppställningen via den mountade volymen.
* Tänk på regionerna - en dator i usa ger långsam access för oss svenskar. Själva ligger vi i eu-west-1, eller för att vara mer exakt eu-west-1a.
* Googla som en tokig. Det mesta har gjorts förr. Men tack vare Amazons snabba utveckling är en stor del av dokumentationen obsolet, så förvänta dig ingen 1-2-3 tutorial.