Drupal ja Amazon EC2

Edellisessä miitissä oli lyhyesti puhetta Drupalin käytöstä Amazon Elastic Compute Cloud:ssa (EC2). EC2 ei vielä mielestäni sovellu Drupalin tuotantokäyttöön kovinkaan hyvin ja varsinainen tuotehan on edelleen virallisesti beta. Kehitykseen ja testaamiseen EC2 on puolestaan aika loistava jo tällä hetkellä ja Amazonin ilmoittama lähiaikoina julkaistava persistentti tietojen säilytysratkaisu parantaa tilannetta entisestään. Perusidea EC2:ssa on tarjota virtuaalisia servereitä jotka voi käynnistää ja sammuttaa hetken varoitusajalla tarvittaessa jopa automatisoidusti web services rajapinnan kautta. Vain käytetystä kapasiteetista maksetaan ja hinnat ovat erittäin kilpailukykyisiä. Esimerkiksi oma pieni serveri maksaa 10snt (USD) per tunti. Käytännössä kehitysympäristöjä voi esimerkiksi pystyttää eri saitin versioille nopeasti ja kustannustehokkaasti. Yhdessä Amazon Simple Storage Service:n (S3) tarjoaman edullisen levytilan kanssa konsepti on myös tuotantokäytössä houkutteleva. Tällä hetkellä keskeinen ongelma on kuitenkin se että kun virtuaalinen serveri sammutetaan kaikki sen tiedot katoavat. EC2:lle löytyy valmis Drupal AMI (levy image) jolla alkuun pääsee todella nopeasti. Amazonin lisäksi useita muitakin palveluntarjoajia löytyy vastaavankaltaisten palveluiden kanssa, mutta Amazon on parhaiden tunnettu ja ehkä pisimmällä kehitystyössään. Henkilökohtaisesti uskon että suurin osa hosting-palveluista tulee katoamaan tämän kaltaisiin "pilvissä" ajettaviin virtuaaliservereihin pidemmän päälle.

Mitä tuossa keskeisessä

Mitä tuossa keskeisessä ongelmassa on oikeastaan eroa kaikkiin muihin ratkaisuihin, koska image ei kuitenkaan häviä? Jos laittaa S3:een säännöllisesti koko imagen talteen, niin eikös tämä ole ihan kelpo backup?

EC2 imagea käsiteltävä manuaalisesti

On siinä se ero että nykytilassa tuo imagen tallettelu on nyt aika manuaalista touhua. Amazonin ilmoituksen mukaan jatkossa pitäisi onnistua virtuaaliselle levylle imagen tallentaminen automaagisesti. Koko ideahan tässä on ollut että kaikki tietovarastot on pidettävä EC2:n ulkopuolella (S3 tai ulkopuolinen palvelin) jolloin varsinaisen työn tekeviä palvelimia voi aika vapaasti käynnistellä ja sammutella tarpeen mukaan. Drupalin näkökulmasta käyttö ei kuitenkaan ole ihan niin helppoa, koska S3 ei varsinaisesti ole sama asia kuin verkkolevy ja MySQL:n fiksuun asennukseen nykyversiossa en ole nähnyt hyvää ratkaisua. Palveluhan on tosiaan vielä beta..

>Palveluhan on tosiaan vielä

>Palveluhan on tosiaan vielä beta.. Niinhän se tosiaan on ja siellä saattaa olla vielä läsnä vaatimus kutsua omaakin palvelua betaksi, jos sen perustaa noiden varaan (muistelisin tuollaisen lukeneeni joskus viime vuoden puolella). Mutta ajattelin kuitenkin laittaa cronilla pyörimään scp backupin koko tietokannasta säännöllisin väliajoin ja pitää myös kopiota ympäristöstä saatavilla, ja kokeilla betavaiheessa olevalle palvelulle amazonia jo nyt. Tai miten itse lähtisit varmistamaan tässä vaiheessa?

MySQL + files backup

Jos meinasit jotain edes tuotannolta haiskahtavaa ajaa EC2:ssa kannattaisi varmaan ajaa tiedostojen osalta ssh + rsync 1-30 minuutin välein cronissa ja MySQL:n osalta replikointia master-slave setupissa siten että EC2 on (luonnollisesti) master ja backup on slave. Suoraa SCP backuppia kannattaa kannan osalta välttää sen hidastuessa (ja EC2:n tapauksessa kallistuessa) tietomäärän kasvaessa. Tuotantokäytössä välttäisin itse tuota vielä, mutta kehitys ja testikäytössä kiinnosta ratkaisu tälläkin hetkellä. Luultavasti jo vuoden päästä tuo voi olla kovin kiinnostava ratkaisu tuotantokäytössä varsinkin palveluille joissa on tarve päästä kasvattamaan kapasiteettiä nopeasti ja kustannustehokkaasti.

Kiitoksia neuvoista. Kyllä

Kiitoksia neuvoista. Kyllä ihan tosissaan harkitsen "tuotannolta haiskahtavaa" kokeilla. 8) Olisiko antaa muuten suositusta siitä, mitä palvelua käyttää .fi domainin nimipalvelimiin osoittamaan Amazonille? Amazon ei kai nimipalvelimia tarjoa?

EC2, nimipalvelut ja aloittaminen

EC2 instanssit käynnistyvät oletuksena dynaamisella IP-osoitteella, joten joudut tilanteen mukaan joko käyttämään dynaamista dns:ää (esim DynDNS) tai hakemaan "elastisen IP:n". Nimipalvelut joudut joko osatamaan muualta tai jos olet riittävän rohkea voit kahden eri elastisen IP:n kanssa ajaa EC2 instansseilla myös omia nimipalvelimiasi. Tag1 Consulting muuten julkaisi juuri todella helpon lyhyen ohjeen siitä miten Drupalin ja EC2:n kanssa pääsee alkuun.