Virtualisering för hela slanten

04 september 2010

Det har varit en stor fokus på virtualisering de senaste åren. Ett flertal företag lägger ner miljonbelopp på att producera och sälja virtualiseringsmjukvara. Trenden är utan tvekan rätt så tydlig. Applikationer som tidigare huserade på företags interna servrar. Blir i dag placerade på virtuella maskiner som kan ligga precis var som helst i världen.

Personligen var jag väldigt skeptisk till virtualisering från första början. Det är lätt att se hur enkelt man placerar ett flertal driftkritiska maskiner på en gemensam hårdvara. Denna maskin får sedan helt enkelt inte gå sönder. Den måste ha "five nine" uptime för att inte kunder skall ringa och klaga.

Tack och väl så finns det lösningar på dessa problemen. Lösningar som alltid har funnit där. För hårdvara har alltid gått sönder, och kommer fortsätta göra så. Ett system som lider av en driftkritisk "single point of failure". Är helt enkelt ett dåligt designat system.

I ett par veckor framöver tänkte jag försöka beskriva mina erfarenheter kring virtualisering av datorer. Hur jag under en vecka förra året migrerade hela serverparken på det företaget jag jobbar. Från att köra på sex fysiska maskiner till att köra på fyra fysiska och 16 virtuella. Allt tack vare en Debian baserad lösning som kostade företaget noll kronor.

Samtliga maskiner på jobbet kör Debian, både servrar och arbetsstationer. Det finns en oskriven policy som säger att man har två val av system på sin dator, Ubuntu eller Debian. Vill man köra något annat så är man fri att göra så. Men jag finns inte tillgänglig för att lösa eventuella problem som uppstår. Det finns inte heller kapital som går att lägga på mjukvarulicenser. Vi tycker att det är trevligare att lägga de pengarna på löner och nyutveckling. Detta är en miljö som jag är mestadels skyldig för, och den underlättade väldigt mycket för mig när jag ville prova på virtualisering.

Situationen var sådan att jag hade ont om datorer. Mailsystemet, webbservern, OpenVPN maskinen, SVN arkivet med mera, låg på samma maskin. På andra maskiner rullade instanser av kundsystem som av design inte borde husera under samma tak. Detta gjorde att jag under en period när mina kolleger var på semester, utförde öppen hjärtkirurgi på hela vår serverpark.

Sedan en tid tillbaka hade jag lekt med KVM (Kernel based Virtual Machine) och tyckte väldigt mycket om lösningen. Utvecklingen skedde med rask takt och nya versioner verkade strömma till på veckobasis. På min arbetsdator hade jag vmx stöd och kunde därför leka med KVM precis så mycket som jag ville. Så det första jag gjorde var att testa Red Hats lösning för att hantera virtualiseringsparker. Virtual Machine Manager var utan tvekan ett enkelt system att komma igång med. Bortsett från ett par buggar så funkade det förvånansvärt bra. Dock så hade programmet en svaghet som jag inte kunde komma över. Det krävde att man hade virt-manager installerat på den datorn som skulle kontrollera parken.

Detta var något som jag inte gillade. Det tillhör inte ovanligheten att jag behöver kunna administrera vår serverpark utanför kontoret. Visst kan jag tunnla in med hjälp av SSH. Eller brygga mitt hemmanät med jobbet via OpenVPN. Men detta krävde fortfarande att jag hade specifik mjukvaran installerad för att kunna administrera.

En terminal hade egentligen räckt för mig. Men jag behövde tänka på de andra på jobbet. I läget då jag skulle vara ledig, sjuk eller för den delen omkommit i en tragisk zeppelinarolycka. Så behövs en system där man lätt kan förstå vad som behövs göras och hur man gör det.

Tack och väl så hittade jag ett sådant system. Till min stora förvåning så var det allt jag letade efter för stunden. Ett system som bygger på Debian och hade en "bare metal installer". Det vill säga att man installerar det från grunden på en tom burk. Proxmox Virtual Environment, eller PVE som det förkortas, är ett enkelt system som bland annat har stöd för följande saker.

  • Kluster
  • OpenVZ
  • KVM via QEMU
  • DRDB
  • Automatisk backup
  • Webbadministrering
  • System mallar

Det finns mycket saker att vara nöjd över med det systemet. Men likt alla andra system så har det vissa brister som blev uppenbara för mig under installationen.

Det fanns tyvärr inget stöd för att placera systemet på ett mjukvaru RAID. Skulle man kräva RAID så behövs en hårdvarulösning. Något som jag är starkt motståndare till av flera olika anledningar. Problemet går säkerligen att lösa då PVE kan installeras på ett existerande Debian system. Dock så ville jag börja om från noll och var inte intresserad av att ge mig i kast med något sådant.

Vid installation så kräver även systemet att man tilldelar maskinen ett statiskt IP. Detta är säkerligen ett krav för att underlätta vid hanteringen av kluster. Men något som betydde att jag var tvungen att gå in i DHCP servern och markera den adressen som upptagen väldigt tidigt.

För övrigt så gick installationen väldigt snabbt. Maskinen som jag hade valt att utföra testet på hade följande hårdvara.

  • Intel Core2 Quad CPU Q6600
  • 4GB RAM
  • 320GB HDD
  • 10/100/1000 NIC

Maskinen var inte på något vis ett monster. Det är praktiskt taget en helt vanlig arbetsstation.

Med systemet installerat så var det dags att sätta upp mina första maskiner och se hur det hela fungerade. Tyvärr så utförde jag aldrig några prestandatester för att se förlusten av övergången till virtualisering. Detta var dock inte något allvarligt problem för mig då mitt största bekymmer var mängden maskiner, inte prestanda.

Jag hade aldrig testat OpenVZ tidigare och hade därmed ingen uppfattning över varken fördelar eller nackdelar med den lösningen. KVM hade jag däremot lekt med en hel del så mina första maskiner fick bli av den typen.

Efter att man hade specificerat saker som namn, diskstorlek, mängd RAM samt övrig hårdvara. Så var bara att välja vilken ISO avbild man ville boota från samt att starta maskinen. I min sedvanliga process så hade jag hämtat hem Debians netinstall ISO. En fil som ligger på kring 150MB och är enligt min mening det bästa sättet att installera Debian.

Maskinen startade i bakgrunden och det var bara att klicka på länken "Open VNC console" för att få upp vad den virtuella datorn tror är sin skärm. Detta krävde dock att man hade Java installerat då VNC klienten som startas är en Java applet.

För övrigt var det bara att installera som vanligt.

Det dröjde inte många timmar innan jag hade beslutat att migrera samtliga maskiner till den här lösningen. De av er som jobbar på stora företag tänker säkerligen just nu.

- Men vad *** tänker han med? Detta kräver ju minst sex månaders testning och utvärdering innan ett beslut kan fattas.

Till svar har jag bara tre saker att säga:

  • Vill man få något utfört så måste det ske utan att någon ovanför har en aning om att man gör det.
  • För det andra så är vi ett litet företag. Samt att jag sitter högst upp på stegen gällande drift och utveckling. Alla problem som kunde uppstå är saker som jag hade fått fixa på min fritid om något skulle gå fel.
  • För det tredje, vad tror ni man har backups till ;-) .

Sagt och gjort så tog jag tag i processen, fullt medveten om att det här skulle bli ett par sena kvällar

Det första jag tänkte göra var att använda ett p2v (Physical-to-Virtual) verktyg för att konvertera existerande maskiner till virtuella. Den enda lösningen som skulle passa för mig verkade vara Red Hats "virt-p2v Live CD". Den var dock experimentell och jag kände inte för att skada något vitalt. Den andra lösningen hade varit att dd:a hela disken till en fil. Men detta skulle producerat en fil på 320GB av vilken jag nyttjar ca två procent.

Nej, den enda vettiga lösningen var att utföra rena installationer av samtliga maskiner och återskapa dem från den nattliga backupen. Visst skulle jag gå miste om ett par timmars data. Men det är inget som vårt ostabila elnät inte redan hade medfört vida andra tillfällen.

Processen att återskapa samtliga maskiner från backup är inte något som behövs beskrivas här. Däremot så finns det en hel del till att skriva om hur man hanterar kluster i PVE. Hur man hanterar migrering av virtuella maskiner mellan fysiska. Det finns en hel del att säga om vad som är bra och mindre bra gällande hur man sätter upp och kopplar all hårdvara. Men det sparar jag till nästa gång.

Som en avslutning så tänkte jag nämna priset för hårdvaran. Varje maskin gick på ungeför 5000 kronor stycket. Det är 15000 spänn för att emulera en park med 16 maskiner. Inte fy skam för en veckas arbete.

Dela med dig

RSS Twitter Epost Facebook Delicious Epost

Liknande Inlägg

7 kommentarer

  1. NoName skriver:

    Hej

    Du pratar om att komma undan att ha ett program installerat för att hantera de virtuella servrarna. En lösning kan vara att ha en virtuell dator med det programmet installerat.
    Den virtuella datorn kommer man åt då med vnc/rdp.

    Du väljer att fortsätta med PVE trots att du inser en del brister, varför fortsätter du?

    Du funderade aldrig över vad de stora företagen som vmware, xenserver osv. har att erbjuda? Är det av kostnad skäl?

    Att göra fel val idag kan bli jobbigt i framtiden. Det kanske visar sig att du måste byta till en annan hypervisor pga du saknar en speciell feature.

    Jag väntar nu spänt på fortsättningen.

  2. miga03 skriver:

    Flera olika lösningar finns och det är sant en virtuell maskin som hanterar systemet är en lösning, till den dagen den maskinen buggar. Att nå maskinen via VNC/RDP är en annan lösning. Fördelen med ett system som är administrerat via ett webbinterface över VNC är tillgängliheten. Jag kan till och med göra saker via mobiltelefonen.

    Alla system har brister. De brister som PVE lider av i dagsläget är ett bra sätt att hantera redundans. Hur man åstadkommer en hygglig hög nivå av HA, är något jag kommer att ta upp i en senare del :-)

    Jag funderade på vad de stora gossarna har att erbjuda. Kostnad är en av de största sakerna, den andra är flexibilitet. PVE är ett Open Source projekt som drivs av ett företag. Fördelen med detta är bland annat att jag med enkla medel kunde bygga vidare på deras kod. Något som jag nyttjade en tid tillbaka då jag skulle sätta upp ett system med agent liknande virtuella maskiner.

    Fördelen med valet är att det inte riktigt finns en hypervisor som krånglar till saker. KVM maskiner kan jag sätta upp på vilken x86_64 maskin som har en Linuxkernel där stöd finns. Jag kan starta en KVM maskin på under 20 sekunder på min laptop om jag vill. Vill man sedan gå över till Xen, VirtualBox, VMWare eller något annat så finns det verktyg för att göra den flytten.

    Tänkte gå in lite djupare nästa gång på specifika funktioner så som Live Migration och DRBD (Distibuted Replicated Block Device).

    Ha det gott.

  3. Chris skriver:

    Hej,Intressant läsning. Har sedan en längre tid önskat komma igång med virtualisering på server men saknat inspirationsläsning för att komma igång. Denna artikel är just sådant innehåll att man känner att det "kittlas" i fingrarna att försöka. Tack...

  4. Emil skriver:

    Även jag har valt PVE som host för min virtuella miljö. KVM är mycket trevligt och det sätt PVE har implementerat det tycker jag är grymt.
    Ett annat intressant projekt är annars shepherd som även det bygger på kvm, helt klart värt att titta på - enklare än så blir det inte att bygga kluster.

    Men vad är det för maskiner du kör din virtuella miljö på?

  5. miga03 skriver:

    Jag har i dagsläget fem maskiner som jag virtualiserar på. De tre maskinerna som är kvar sedan förra året är vanliga Intel Core 2 Quad Q6600 @ 2.40GHz. 4GB RAM och en 320GB HDD. Med två RAID1:ade diskar för virtuella maskiner.

    De två senaste är Intel Core i7 920:or med 16GB RAM, 500GB systemdisk och samma RAID1 lösning som på de gamla. Kör RAIDen med SATA kontroller kort och i software. Specen för maskinen fick jag från HAK5: http://www.hak5.org/episodes/episode-519.

    Nästa del är på väg btw.

  6. Emil skriver:

    Menar du att man vågar köra kritiska applikationer på desktopkomponenter? En bra guide, men jag är skeptisk till hårdvaran faktiskt....

  7. miga03 skriver:

    Det har du all rätt att vara. Man skall alltid vara skeptisk till hårdvara. Det brukar vara så att man får vad man betalar för.

    Men saker går alltid sönder oavsett om man använder dyra saker eller ej. Det du får med riktig dyra färdiga servrar är oftas service.

    Personligen föredrar jag det högre segmentet av desktop marknaden. Under de tre åren jag har jobbat här så har två saker gått sönder, om man bortser från hårddiskar som har blivit lite av en förbrukningsvara. Detta är ett styck nätverkskort samt ett moderkort.

    Som ett exempel så har ju nissarna på Backblaze (http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/) lyckats bygga petabyte stora lagringsmaskiner med hjälv av "desktop hårdvara" och lite hemmabyggda chassin.

Lämna ett svar