Proxmox-kluster på Raspberry Pi, del 1: installation

11 Jun 2022

Proxmox cluster

(You want this in English? Here you go.)

Detta är en serie om tre artiklar. Läs även del 2 och del 3.

Sommaren är här och med det värmen. Jag har “förmånen” att bo i en bostadsrätt som blir varm som en masugn oavsett om elementen är avstängda eller inte (faktum är att jag inte ens behöver ha elementen på om vintern när det är -15 ute…) och att då ha ett antal om än små men ändå värmealstrande HP Microserver-maskiner igång dygnet runt gör inte saken bättre under sommarhalvåret.

Sveriges ständigt högre elpriser gör också att jag alltid är på jakt efter lösningar som gör det möjligt för mig att leka med virtuella servrar samtidigt som jag kan hålla elkostnaderna nere. Detta gjorde att jag började fundera på om jag kunde ersätta min nuvarande HP Microserver generation åtta (med en Xeon E3-processor och maximalt 16GB RAM och fyra 1TB SSD-diskar) med fyra Raspberry Pi 4 model b med 8GB RAM vardera. Fyra sådana hade gett mig dubbelt så mycket minne att leka med jämfört med en Microserver till en betydligt lägre elkostnad och dessutom kan värmealstrandet hållas till ett minimum.

Ett inköp senare (eller två, faktiskt – fyra Raspberry Pi från Webhallen och en monteringssats för fyra enheter samt fyra strömadaptrar från Amazon, de två senare var inget som Webhallen antingen sålde eller hade på lager) så kunde jag börja leka virtualiseringskluster.

Det hela är dock inte så enkelt som att installera detta på fyra x86-maskiner. Först tänkte jag köra VMware ESXi, vilket numera stöds även för ARM och Raspberry Pi, åtminstone i labbsyfte men eftersom jag helst vill kunna köra det hela i en klusterkonfiguration där jag kan migrera maskiner mellan noderna i klustret utan att behöva avregga dem, och sedan importera dem till en annan nod så fick VMware ESXi stryka på foten. Detta på grund av att vCenter, VMware:s programvara för att just hantera kluster, inte är porterat till ARM. Även om programvaran hade funnits så hade den i praktiken tagit upp allt minne på en Raspberry Pi då vCenter kräver åtta gigabyte internminne. Jag övervägde också att bygga det hela på Kubernetes, jag kom en bit med det tidigare när jag satt och labbade med det i vintras, men det känns än så länge som ett eventuellt framtida projekt för en regnig sommar… och kanske fyra Raspberry Pi till.

Jag vill ha igång denna lösning ganska snabbt så istället fick det, lite motvilligt, bli Proxmox igen. Pimox, som porteringen heter, är inte heller den egentligen gjord för produktionssyfte på något sätt men det fungerar att sätta upp det hela i en klusterkonfiguration och det räcker för mig. Givetvis ska man förstå och acceptera att detta är mjukvara som kan paja precis när som helst och inte ha några som helst illusioner om att det är något som kommer fungera 24 timmar om dygnet, 365 dagar om året.

Att installera Pimox är rätt enkelt egentligen. Man laddar ner en aningen patchad version av Raspberry Pi OS (tidigare kallat Raspian) som sedan skrivs till ett SD-kort. All kod och alla instruktioner man behöver finns här och det är rekommenderat att följa guiden på denna sida och inte från någon annan källa då utvecklingen inom detta går snabbt och guider som postats för några månader sedan kan vara inaktuella och därmed gör att installationen inte går igenom.

Proxmox cluster

Efter ett par försök är den första noden i mitt kluster uppe. Eftersom man absolut inte under några som helst omständigheter vill varken skriva loggfiler, ISO-filer eller diskfiler för virtuella maskiner på SD-kortet som är monterat i en Raspberry Pi så kan man antingen köra med SSD-diskar anslutna via USB 3-gränssnittet eller mot en NFS-enhet på exempelvis en Truenas (vilket körs i min andra HP Microserver).

Proxmox cluster

Jag började med att testa det senare och även om en Raspberry Pi endast har ett enda 1Gbit nätverkskort så fungerar det, men det ska i ärlighetens namn sägas att snabbt går det inte. Att köra med en USB-disk som är lokalt ansluten går givetvis betydligt snabbare men där tappar man två saker: redudans i form av en raid-funktion som finns i Truenas-maskinen, och också möjligheten att migrera maskiner mellan noder i klustret automatiskt då detta kräver att alla enheter i klustret opererar utifrån samma lagringsyta (i detta fallet alltså Truenas över NFS från samtidiga klusternoder).

Installera en virtuell maskin

Jag testar att installera Ubuntu Server 22.04 LTS för ARM i en virtuell maskin och eftersom jag tänkte att det kommer fungera precis som vanligt så skapade jag den virtuella maskinen precis som när jag gjorde det i just x86-versionen av Proxmox.

Proxmox cluster

Det visar sig snart att det inte fungerar. Det enda man ser i konsolen för den virtuella maskinen är det ovanstående. Lite efterforskning ger vid handen att alla maskiner måste boota från en UEFI-partition vilken måste skapas när man konfigurerar den virtuella maskinen, och det går heller inte att använda VirtIO eller IDE för hårddisk eller virtuell CD/DVD-enhet utan det är SCSI som gäller. Du hittar instruktioner för detta här.

Proxmox cluster

Efter att fadäsen med fel bootläge och gränssnitt till de virtuella enheterna är avklarad startar faktiskt servern upp och jag kan börja installera Ubuntu Server. Man ska ha i åtanke att Ubuntu Server inte är särskilt snabbt att installera även på en snabb maskin med snabb lagring och/eller snabbt nätverk, och det går inte i blixtens hastighet här heller. 90 minuter efter att jag påbörjat installationen pågår den fortfarande. Det är lätt att tro att installationen hängt sig men både CPU-lasten och I/O på hårddisken är aktiv varför man helt enkelt få ha tålamod. Massor med tålamod…

Varför inte testa andra distributioner då? Jodå – en favorit hos undertecknad är Rocky Linux 8 (tidigare CentOS 8 som numera är död och begraven). Den går faktiskt att installera utan problem i Pimox då den släppts i ARM64-version. 32- eller 64-bitarsversioner av operativsystem är en viktig faktor i det hela – 32-bitars operativsystem går inte att använda över huvudtaget i Pimox. Allt från operativsystemet som allt bygger på till de operativsystem man kör i de virtuella maskinerna måste vara 64-bitars dito, annars går de inte att installera. FreeBSD är en annan favorit och jodå – även den finns i 64-bitarsvariant för ARM (även kallat ARM64) och skall också den testas.

När den första noden nu är uppe och jag kan konstatera att jag kan installera, om än långsamt men ändå, virtuella maskiner i Pimox så kommer nästa steg i installationen: installera de tre andra noderna. För att det ska fungera måste samtliga noder i klustret vara tomma, det vill säga, inte innehålla några virtuella maskiner för då får de inte bli medlemmar i klustret. Det får jag dock be att återkomma till i del två av denna bloggpost som du kan läsa här.

Lägg gärna till denna blogg i din RSS-läsare för att inte missa nästa del… eller något annat som jag får för mig att skriva.