Nyt minullakin on oma pilvi. Se oli melko helppoa rakentaa Eucalyptuksella, joka tarjoaa Amazon EC2 -yhteensopivan pilvirajapinnan.
Tyypillinen Eucalyptus-pilvi muodostuu kolmenlaisista komponenteista:
- Cloud Controller
- Keskitetty webbikäyttöliittymä koko pilveen. Klusterit, käyttäjät, sertifikaatit ja avaimet rekisteröidään tänne.
- Cluster Controller
- Yhtä klusteria (IP-aliverkkoa) hallinnoiva kontrolleri. Jakaa noodeille IP-osoitteet DHCP:llä ja tarkkailee niiden kuormitusta.
- Node Controller
- Yksittäinen noodi, joka ajaa varsinaisia virtuaalikoneita Xenin tai KVM:n alla. Näitä voi olla vaikka kuinka paljon.
Käytössäni oli tähän melko vanhoja Xeon-palvelimia, jotka eivät tukeneet rautapohjaista virtualisointia. Sen vuoksi jouduin käyttämään Xeniä, joka osaa virtualisoida pelkällä softalla. Tämä kuitenkin edellyttää, että noodin host-käyttöjärjestelmää ajetaan erityisellä xen-kernelillä. Ubuntu 9.04:stä löytyy kaikki muu tarvittava, mutta ei tätä kerneliä. Siksi piti asentaa tämän ohjeen mukaan Debianista tarvittavat xen-paketit kaikille noodeille ja buutata ne Xen-Linuxiin. Xenistä pitää myös muistaa enabloida http-kuuntelija, jotta Eucalyptus voi ohjata sitä.
Toinen vaatimus paravirtualisoidulle Xenille on, että myös guest-käyttöjärjestelmät on mukautettu. Eucalyptukselta löytyy onneksi valmiina Xen-versio Ubuntusta. Sillä saa helposti kokeiltua, että virtuaalikoneet tosiaan käynnistyvät ja niihin saa yhteyden ssh:lla. Kannattaa muistaa luoda ensin ssh-avainparit Eucalyptukseen, sillä rootilla ei ole salasanaa.
Kun koko homma on pystytetty ja imaget ladattu järjestelmään, voi alkaa käynnistellä instansseja tuttuun tapaan Amazonin EC2-työkaluilla. Aktiivisten instanssien listaus näyttää tällaiselta:
INSTANCE i-3F1F07DF emi-E98814EC 10.42.211.245 10.42.211.245 running eucadev 0 c1.medium 2009-07-17T05:03:08+0000 eki-3E5F15E4 eri-386F15C2
INSTANCE i-524B08B3 emi-E98814EC 10.42.211.244 10.42.211.244 running eucadev 0 c1.medium 2009-07-17T05:01:33+0000 eki-3E5F15E4 eri-386F15C2
Mikä tässä kaikessa sitten on ideana? Lyhyesti se, että pilvessä kaikki fyysiset koneet on standardoitu identtisiksi Xen-alustoiksi. Niitä on helppo lisätä ja poistaa. Sovellukset taas on paketoitu imageiksi, joita säilötään keskitetysti. Niitä voidaan ajaa siellä missä kulloinkin on vapaata tilaa. Eucalyptus huolehtii siitä, että sovelluksen image noudetaan ja käynnistetään Xeniin automaattisesti. Käyttäjän tarvitsee vain päättää, kuinka monta kopiota sovelluksesta käynnistetään.
Perinteinen virtualisointi esimerkiksi VMwarella muistuttaa tätä, mutta siinä imageja ei yleensä valmistella etukäteen ja varastoida keskitetysti. Sen sijaan imageista tehdään virtuaalisia kovalevyjä, joihin asennetaan käyttis ja konfiguroidaan sekä asennetaan ohjelmia tapauskohtaisesti. Tällaisia imageja ei voi monistaa kuten pilvessä, koska imageja ja itse sovellusta ei ole suunniteltu siihen tarkoitukseen.