KVM-Hosting

Gammal info, det projektet är nerlagt till förmån för nyare saker. Det är nog dock lämpligt att i framtiden återanvända den här sidan när den nya lösningen är "klar" ... om det blir det nån gång :)

Består i dag av tre system, en filserver med två blad som funkar som hypervisors.

KVM Hypervisors

    blade-a-server-3      blade-a-server-4

File Servers

    mount-kilimanjaro

Design

Systemet kör hypervisors som kör KVM på CentOS 7.1. I dag har vi två blad i Eken som är hypervisors. Själva OS disken ligger via en GlusterFS montering från filservern Mount-Kilimanjaro. I framtiden är förhoppningen att vi ska ha två filservrar för att skapa ett HA-par (mirror, och alla hypervisors klarar av att en maskin går ner).

Då alla hypervisors har samma delad disk så kan vi göra enkel out-of-the-box live migration mellan de fysiska maskinerna vilket gör det möjlighet för oss att migrera runt och uppdatera/boota om/installera om maskiner vid behov utan att ta ner något VM. Det finns dock en del begränsningar, vi har bara 16G RAM på ett blad och om vi använder för mycket så kanske alla VM:s inte får plats på de andra bladen (om vi behöver tömma ett blad för att boota om det). Något annat som är viktigt att veta är att vi kan inte migrera från HostA till HostB om HostB's CPU inte stödjer samma instruktioner. Oklart vad som händer om man försöker. Alla blade-* är identiska.

Det finns ett privat nätverk mellan samtliga maskiner på 10.0.32.x/24 nätet, där x är samma som i 130.237.234.x. Det nätverket används för glusterfs för att dela ut disken privat och säkert så ingen kan lyssna.

Skapa ett VM

Fråga

Enklast är att fråga maila staff och be om hjälp, jag (nsg) hjälper gärna till. Antingen hjälper jag dig att skapa det, eller så sätter jag upp det åt dig.

Gör det själv

Använd libvirt för att skapa ett VM. Jag gillar när det är enkelt så jag använder det utmärka verktyget virt-manager. Men innan vi börjar, hämta ut dina root biljetter och kolla att du kan logga in.

$ kinit nsg/root
$ ssh root@blade-a-server-3.stacken.kth.se hostname

virt-manager sätter själv upp en ssh-tunnel åt dig, så funkar ssh så ska det funka i virt-manager med. Här under ser du ett exempel där jag är ansluten till båda bladen:

Virt-manager.png

Exempel på hur man lägger till en maskin, svårare än så är det inte....

Add-virt-manager.png

Hur du sedan skapar ett VM tror jag att du listar ut själv, men några saker som är bra och veta:

  • Du vill lägga din disk på storage poolen "glusterfs".
  • Lägg ditt nic på bridge0, det är en brygga som ligger direkt på Stackens nät (förmodligen default).
  • Välj gärna virtio om ditt OS stödjer det, det går fortare.
  • Slutligen, stäng av cache på disken. Vi behöver ha den av om live migration ska funka (se bild).

No-cache-virt-manager.png

Bra och veta

Om du har ett VM så förutsätt följande saker:

  • OS kan bootas om, det bör hända mycket sällan men se till att alla tjänster startar korrekt igen. T.ex. det här kan hända om vi får strömavbrott, eller om ett blad går sönder. Nertiden kommer troligtvis bli mycket kort då vi kan starta upp VM:et på ett annat blad.
  • Jag förutsätter att du har cache avstängt på disken, kan jag inte göra live migration på grund av det så kommer jag stänga av ditt vm (utan att fråga) och slå av cache åt dig.
  • Svarar inte ditt VM på ACPI och stänger av sig snyggt så kommer jag stänga av det brutalt.
  • Gör inga dumheter

Några andra bra saker och veta är:

Vi har gott om disk, men RAM och CPU är en begränsad resurs så försök att vara återhållsam här. Klarar du dig på 256M RAM så välj inte 2G o.s.v. Det är trivialt att lägga till mer RAM senare om behovet finns.

Starta inte ett VM 2 gånger! Se bilden nedan:

Virt-manager.png

Jag har skapat VM:et på blade-a-server-4 och sedan gjort en live migration till blade-a-server-3, där den som synes nu kör. Maskinens konfiguration blir dock kvar på den gamla hosten och det finns inget som hindrar dig från att starta den en gång till på 4:an, gör du det så kommer filsystemet dock bli korrupt så det är en mycket dum ide! (de flesta filsystemen kan dock rädda det mha jornalen).