Joacim Melin
Pappa, sysadmin, skribent, poddare, chipsentusiast.

Proxmox-kluster på Raspberry Pi, del 3: ytterligare observationer

Efter att mina två första bloggposter (del 1, del 2) om mitt lilla Pimox-kluster (Raspberry Pi + Proxmox = Pimox) så har jag gjort ytterligare observationer och även fått en del frågor.

"I'm Givin' Her All She's Got, Captain!"

Den första observationen jag gjorde var rätt omedelbar: att ansluta en SSD-disk via USB-3 och låta en Raspberry Pi mata ström till SSD-disken är en dum ide. Jag upptäckte detta när jag ville försöka migrera tillbaka en virtuell maskin från SSD-kortet till min NAS där alla andra virtuella maskiner körs. SSD-disken försvann helt enkelt som monterad enhet, och den virtuella maskinen kunde "räddas" genom att jag anslöt SSD-disken till min laptop som kör Linux. Så när jag i del två av denna artikelserie skrev detta:

Har du inte möjlighet att sätta upp en NFS-server hemma kan du ansluta en SSD eller snurrdisk via USB-3-porten och skriva allt du behöver skriva där istället.

... så borde jag ha lagt till detta: se till att hårddisken har en separat strömmatning. Jag har lagt till det nu.

Prestanda så det räcker

Den andra observationen jag gjort är att det faktiskt går att köra hyfsat tunga grejer på en virtuell maskin på en Raspberry Pi. Ett exempel på detta är min Mastodon-instans som sakta men säkert börjar få allt fler användare. Mastodon är inte supertungt att köra som sådant men det är rätt mycket synkande av text och bilder fram och tillbaka, vilket är en del av att köra en Mastodon-server i federerat läge. Detta kräver nätverksprestanda och gott om läsningar och skrivningar på disk.

Detta är användadegrafen på den Raspberry Pi som jag bland annat kör Mastodon-maskinen på. Som synes är lasten hyfsat konstant (som alla laster, verkar det som.. hö hö), minnesanvändningen likaså och nätverkstrafiken är ibland hög men för det mesta ganska låg.

Jag kan ärligt säga att Mastodon i en virtuell maskin på en Raspberry Pi inte känns särskilt mycket (om ens alls) långsammare jämfört att köra det hela på en virtuell maskin under VMware ESXi på en Xeon-processor som jag gjorde tidigare.

Kabeldragning och strömmatning

Min tredje observation är att kabeldragning till en bunt Raspberry Pi är en aning knepigare än man kan tro. Detta eftersom de kablar jag använder är av modell KAT-6 och de är så styva så de kan välta stativet med mina fyra Raspberry Pi. Detta är en aning suboptimalt.

Jag har därför bestämt mig för att investera i fyra PoE-hattar för mina fyra Raspberry Pi. Det kombinerat med mindre vridstyva nätverkskablar och en PoE-switch kommer sannolikt göra underverk för min installation.

Det enda jag måste tänka på då är att fläktarna som är inbyggda i stativet måste tas bort då de helt enkelt inte får plats längre. Jag kan leva med det och samtidigt hoppas på att mina Raspberry Pi i övrigt inte blir för varma. Jag har valt att inte överklocka processorerna på mina Raspberry Pi, åtminstone inte ännu. Känner inte att det behövs, faktiskt.

Temperatur

-"Hur varma blir de?" är en fråga jag fått. Jag har själv också funderat på hur varma mina Raspberry Pi-enheter egentligen blir, kylflänsar och fläktar till trots. Så här är en liten tabell:

Nod CPU GPU
node01 44,8 45
node02 45,7 49
node03 45,2 47
node04 47,2 47

Under 50 grader får väl anses vara okej.

Jag kommer sannolikt att fortsätta posta små och lite större observationer gällande mitt PiMox-kluster i framtiden. Se till att lägga till denna blogg i din RSS-läsare för att inte missa det... eller något annat som jag får för mig att skriva.



Proxmox-kluster på Raspberry Pi, del 2: konfiguration och slutsatser

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

Så var då det lilla "stativet" för mitt kluster på plats, ihopmonterat och klart för drift. Det är ganska omvälvande att se hur detta lilla paket faktiskt ger mig 16 CPU-kärnor och 32 gigabyte minne att leka med.

Den skarpsynte noterar att det går små sladdar till varje Raspberry Pi på dess vänstra sida, och det är fläktar. Det sitter en liten fläkt ovanför varje Raspberry Pi och detta, utöver kylflänsarna som är monterade på de kretsar som blir varmast under kontinuerlig drift (både fläktar och kylflänsar medföljde i paketet som stativet levererades i).

Jag ska inte hymla med att detta är en aning pilligt att få ihop, och man måste tänka igenom varje steg några gånger innan det sitter i och med att nästa "hylla" ovanför den du just monterat in din Raspberry Pi i ska ha ett antal skruvfästen monterade, och en fläkt.

"Fläktar?!", kanske du tänker. Jo, jag tänkte samma sak. Man ska inte sticka under stol med att det förtar en del av charmen med en Raspberry Pi men samtidigt ser jag hellre att jag förlänger livslängden på varje Raspberry Pi snarare än att köra dem fläkt- och kylflänslösa för en mer estetisk framtoning. Ska man vara ärlig så spelar det estetiska mindre roll eftersom det efter att man kopplat in alla kablar blir en aning rörigt.

Jag kommer, givetvis, att jobba på kabelhanteringen under sommaren när jag har semester och mer tid. Fläktarna är för övrigt inte knäpptysta men det är heller inte så att de stör oerhört mycket. Kopplar man dem till rätt pinnar på GPIO-anslutningen så kan man också kontrollera och styra dem mer effektivt. Jag kör fläktarna på max hastighet tills vidare men här finns det utrymme för justeringar från min sida.

Installera mera

I del ett av denna bloggpost nämnde jag hur installationen av Ubuntu Server tog enormt lång tid:

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...

En sak jag hade missat var att ändra vilket typ av processor den virtuella maskinen skulle använda.

Som synes ska den ställas till "host", annars är risken att den virtuella maskinen antingen inte startar alls eller tar extremt lång tid på sig att starta. Som exempel kom jag inte förbi den initiala bootskärmen för Rocky Linux 8 utan att ställa in processortypen korrekt. När det väl var gjort tog det inte många sekunder innan man var inne och kunde börja konfigurera saker på allvar:

Installationen av Rocky Linux tog strax under tio minuter. Under den tiden hade inte Ubuntu Server-installationen kommit förbi "sökning efter tredjeparts-drivrutiner"...

Jag tror det blir Rocky Linux för hela slanten för mig även i fortsättningen. Den startar upp snällt under Pimox och mer än så kan man inte begära.

Blir en stackars Raspberry Pi varm under all last? Jo vars, den är ju inte sval direkt. Extra kylning rekommenderas om den ska köras dygnet runt under längre tid. Intressant nog är det inte så att processorkärnorna i denna fantastiska enkortsdator jobbar ihjäl sig även när den står och installerar tre virtuella datorer samtidigt:

Det ska bli intressant att se hur lasten på systemet ter sig senare när det är igång i vardaglig drift.

Nederlag

Det finns, givetvis, saker som inte fungerar som det var tänkt. Ett exempel är den utmärkta övervakningsprogramvaran Zabbix som i kombination med Grafana är ett riktigt trevligt system att köra när man har ett nät med lite servrar och annat. Zabbix agentprogramvara finns, givetvis, för ARM64-plattformen men serverprogramvaran gör det inte. Åtminstone inte ännu.

Några tips

  1. Slå av all swappning på SD-kortet med kommandot swapoff -a. Därefter skriver du sync följt av apt-get purge -y dphys-swapfile. Därefter raderar du swapfilen med rm /var/swap och slutligen ger du sync igen.

  2. Sätt upp en server som tar emot loggfiler via syslog och se till att din(a) Proxmox-pajer skickar ALLA loggar dit genom att lägga till raden *.* @@ip-adress-till-syslogserver:port längst ned i /etc/rsyslog.conf. Det innebär att du kommenterar ut raden $IncludeConfig /etc/rsyslog.d/*.conf i samma fil och ser till att Rsyslog körs med kommandot systemctl status rsyslog. Är den inte igång, starta den och se till att den startar automatiskt när systemet bootar med kommandot systemctl enable rsyslog.

Dessa två manövrar kan tyckas vara en aning extrema men om det är något man alltid kan räkna med så är det att ett SD-kort, oavsett om det är det billigaste du hittade på Biltema eller det dyraste som gick att köpa på Webhallen så kommer det gå sönder hyfsat snabbt då SD-kort inte klarar särskilt många skrivningar. Detta innebär också, givetvis, att du under inga som helst omständigheter ska köra några virtuella maskiner direkt på SD-kortet. Har du inte möjlighet att sätta upp en NFS-server hemma kan du ansluta en SSD eller snurrdisk via USB-3-porten och skriva allt du behöver skriva där istället. Se bara till att hårddisken du ansluter har en separat strömmatning. Se även mina noteringar i frågan här.

Summering och framtiden

Ska man summera detta projekt så kan det göras så här: detta är inte svårt. Det är några småsaker man måste lära sig men i det stora hela är det verkligen småsaker, varken mer eller mindre.

Än så länge har jag, förutom i fallet Zabbix, inte stött på en enda programvara som inte låter sig installeras. Att man byter arkitektur från X86 till ARM64 är egentligen en ganska stor grej men i praktiken är det som att sitta med en vanlig PC med en AMD- eller Intel-processor under skalet. Fast nu är det betydligt tystare, betydligt billigare och oerhört mer strömsnålt (kör man en Raspberry Pi 4 model b i 400% belastning, det vill säga alla fyra processorkärnorna i max belastning, drar den 6,4 watt).

Framför allt är det en oerhört trevlig känsla att köra ett hyfsat snabbt virtualiseringskluster för drygt 4000 kronor som gör mitt elbolag lite mer ledsna och i det längre perspektivet min plånbok betydligt gladare. Inte är det helt dumt för miljön heller.

Vad innehåller då framtiden för mitt lilla kluster? Troligen köper jag fler Raspberry Pi och expanderar klustret med.

Möjligen får en av dem hantera lagring åt resten av "pajjerna" i klustret men om det blir snabbt nog vågar jag inte sia om ännu men det blir intressant att testa.

Det vore också trevligt att slippa SD-korten i varje Raspberry Pi och det ska, med lite handpåläggning, fungera att man bootar dem och kör hela operativsystemet över nätverket istället för från en lokal lagringsenhet via PXE-protokollet. Om det är en särskilt smart ide med tanke på all annan nätverkstrafik som redan går över samma nätverksport kan man ju fundera över.

Att mata mina "pajer" med ström via nätverkskabeln a'la PoE är minst sagt tilltalande. Detta kräver dock att man köper ett extra litet kort till varje Raspberry Pi, och en switch som stödjer PoE. Kostnaden för detta kontra att köpa en vanlig strömadapter som fungerar med USB-C är sannolikt högre men kabelröran blir garanterat mer hanterbar. En "PoE-hatt" för en Raspberry Pi 4 model b kostar drygt 300 kronor stycket, och en switch 600-1300 kronor, så drygt 2500 kronor får man räkna med för det kalaset.

En tanke som också slog mig är att jag nu använder ARM-processorer i min Apple Watch, min iPhone, min iPad, mina högtalare och i min Mac. Framtiden anlände snabbare än vad jag hade räknat med, och det känns rätt trevligt för det är kul att hålla på med Raspberry Pi. Man överraskas ständigt med vad den här lilla datorn faktiskt klarar av och än så länge har jag inte "slagit i taket" så att säga.



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

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

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.

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).

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.

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.

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.



Linux är redo för skrivbordet

Jack Wallen:

And with the release of Fedora 36, it's now time to label the distribution for what it has become -- an outstanding operating system, regardless if you've used Linux or not.
That's right, I'm here to tell you that Fedora Linux is ready for prime-time and can be used by anyone, no matter if you've touched Linux or not.

Jag har testat Fedora 36 ett tag och kan bara hålla med. Det är en imponerande Linuxdistribution som är redo för att användas ute på "skrivborden".



Bygg tyst pfSense-router

I takt med att jag börjat revidera min nätverksmiljö och i takt med att elpriset gått upp mer och mer har jag också bestämt mig för att minska två saker i rummet jag sover i: bullernivån och värmeutvecklingen. Inte för att den HP Microserver Gen 8 skapade särskilt mycket av någotdera men det var tillräckligt för att jag ville göra något åt saken och det blev också något av en utmaning att försöka bygga en pfSense-baserad router som är tillräckligt kraftfull, hyfsat sval och samtidigt knäpptyst. Jag har lekt mycket med Mikrotik och även de gör tysta och hyfsat kraftfulla routrar som inte drar särdeles mycket ström men de kräver en del jobb och jag har inte riktigt motivationen att lägga stora delar av min fritid på det längre. Kort sagt - pfSense fyller alla behov jag behöver och är ruggigt stabil, åtminstone för mina behov.

Jag tittade givetvis på de färdiga routrarna från Netgate, företaget som utvecklar pfSense, men deras prisnivåer är alldeles för höga i förhållande till vad man egentligen får för pengarna. Jag började titta på Intels NUC-datorer och andra modeller som finns på marknaden men ingen av dem antingen ser ut och fungerar som jag vill eller har en prisnivå som kändes acceptabel. Då återstod bara en plats ett leta: AliExpress. Efter lite letande hittade jag en Atom-baserad dator på 1,6GHz med två gigabyte internminne och 16 gigabyte SSD-lagring.

Priset? Drygt 1100 kronor plus frakt. Att jag bad leverantören att INTE installera något som helst operativsystem på datorn innan leverans struntade de fullständigt i varvid den faktiskt levererades med pfSense installerat direkt från "fabriken". Jag tog det säkra för det osäkra och raderade SSD:n och installerade om pfSense och lite drygt 45 minuter från att jag packat upp datorn så är min nya router i drift.

Strömadaptern är vad jag kan se inte CE-märkt men den har inte uppfört sig underligt än så länge (troligen kommer jag byta ut den tämligen snart för att vara på säkra sidan) - strömsladden som följde med vet jag inte vilket land den ska användas i...

Finns det mer att säga då? Nej, egentligen inte. pfSense fungerar utmärkt på denna lilla dator, och den hanterar min trafik till och från Internet med bravur. Jag har också en statisk IPSEC-tunnel som går mellan denna brandvägg och en virtuell brandvägg på min server som sitter i ett rack på annan ort och även den fungerar utmärkt.

För drygt totalt 1400 kronor har jag skaffat mig bättre nattsömn, mindre värmeutveckling och en lägre elräkning. När jag passade på att slå av min VMware-server så tappade jag också PiHole som intern DNS hemma varvid jag gjorde slag i saken och installerade upp programvaran på en första generationens Raspberry Pi så även där fungerar strömsnåla lösningar alldeles utmärkt, åtminstone för mig.




© 2003 - 2022 Joacim Melin