Proxmox & HA: De cluster optuigen
Het is tijd om de handen vuil te maken! Spreekwoordelijk natuurlijk, want ICT’ers zijn zo vuilafstotend als teflon. Node nummer 1 hebben we natuurlijk al, die staat thuis. De andere twee nodes moeten nog aangeschaft worden en daar zijn een aantal eisen/wensen aan verbonden, namelijk:
- Ze moeten klein zijn; grote computerkasten kan ik niet bij de buurvrouw neerzetten
- Het moet stil zijn
- Het moet een sober uiterlijk hebben
- Het moet goedkoop zijn: Niet meer dan 100 Euro
- Het liefst een lage power draw
- Inbouwmogelijkheid voor een SSD is een dikke +
- Wifi-capable is ook fijn.
2.1: Voorbereiding van de nodes
Na lang zoeken op marktplaats is de keuze gevallen op een HP Prodesk 400 G5. Bewapend met een i3-9100 en 8GB RAM is dit een ideale computer voor het gebruiksdoel wat ik in ogen heb. De ingebouwde M.2 SSD van 256GB mag er uit, die is te klein: We willen namelijk rekening houden met het feit dat ~25% van onze opslagcapaciteit gebruikt wordt door pariteit-bits en niet als effectieve opslag ingezet kan worden.

Gelukkig had ik nog een M.2 SSD van 1 TB op de plank liggen, deze kan dan mooi ingezet worden als zowel boot-device en opslag voor de virtuele machines en containers. De SSD was eenvoudig te wisselen. Ik heb meteen het voltage gemeten van de batterij die alle BIOS-instellingen vast moest houden, Met een uitlezing van 2,9 V van de 3 V vertrouw ik erop dat deze voor een lange tijd meegaat.
Het systeem is klaar om te booten, we gaan meteen de BIOS in om te kijken of alles naar wens is ingesteld. Virtualisatie staat aangevinkt, het systeem staat zo ingesteld dat hij na een stroomonderbreking niet automatisch boot. Dat is iets wat we niet willen dus ik heb deze functie maar uitgeschakeld. Ook de “No keyboard detected” melding hebben we uitgezet en forceren we deze box om te booten vanaf de SSD. Als laatst stellen we een BIOS wachtwoord in en zijn we klaar om het besturingssyteem te installeren.
4.2: Installatie van de hypervisor
Gezien de tijd van Compact Disc (CD) gelukkig ver achter ons ligt, gaan we een bootable flashdrive maken. Als blauwdruk gebruiken we daarvoor de image van Proxmox. Ik heb op een windows computer de tool Rufus gedownload die de bootable image kan wegschrijven.

Nu we een bootable USB hebben kunnen we proxmox installeren op Foxbox. Tijdens de installatie worden de regional settings gevraagd, een wachtwoord voor het root account en op welk IP-adres of domeinnaam de server te bereiken is. Gelukkig ben ik eigenaar van het domein lionel.wtf via de provider Strato. Ik kan via hun webportal ook subdomeinen aanmaken waar ik zelf DNS records kan toewijzen. Strato biedt ook een DDNS service aan, hierover later meer.
Als we hetzelfde herhalen bij de 3e node, oxbox, komen we tijdens de installatie tegen een zee van foutmeldingen aan.

Hoewel de installatie wel netjes is afgerond en de oxbox boot, zit het me toch niet helemaal lekker. De SSD geeft geen Self-Monitoring, Analysis and Reporting Technology (SMART)-errors. Aan de installatiebestanden kan het ook niet liggen omdat ik dezelfde installatie heb gebruikt op foxbox. Na het wisselen van de SSD’s tussen foxbox en oxbox blijven de foutmeldingen verschijnen op oxbox. Het enige wat nog overblijft is het falen van de hardware. Na oxbox weer uit elkaar gehaald te hebben kwam ik tot de conclusie dat ik waarschijnlijk de flatcable heb beschadigd tijdens het uitbouwen van de drive tray.

Een nieuwe kabel kost 5 euro, de moeite waard om uit te sluiten. Tot op heden moet de kabel nog binnenkomen.
4.3: Backup server configureren & de eerste VM installeren
Nu Proxmox eenmaal geinstalleerd is kunnen we de server benaderen via een web interface. Tijd om de backup server toe te voegen die thuis draait. We willen een back-up van een virtuele machine op Routerbox inladen op Foxbox: Ubuntu desktop. Deze VM hebben we in de toekomst nodig om via een web Graphical User Interface (GUI) port forwarding toe te passen op de modem/router waar Foxbox komt te staan.

De backup server wordt gehost op BasDeNAS. Nu ik er over nadenk twijfel ik of Bas benaderbaar is voor Foxbox als deze eenmaal op een andere plek wordt gehost. Misschien wordt de verbinding tussen Bas en Foxbox gefaciliteerd door Routerbox. De tijd zal het leren. We moeten niet vergeten om het Media Access Control (MAC)-adres en hostname te veranderen van de VM. Twee identieke kopieën op 1 netwerk is vragen om problemen.

4.4: DDNS instellen
We hebben het eerder gehad over welk probleem DDNS oplost. Dat gaan we in dit hoofdstuk implementeren. Als eerste gaan we een nieuw subdomein aanmaken op de website van Strato; de plek waar ik mijn domein heb gekocht. Zodra het subdomein is aangemaakt willen we Dynamic DNS activeren. Vervolgens even opzoeken wat voor instellingen we de DDNS client willen meegeven, dat staat allemaal hier uitgelegd.
We openen de shell van Foxbox. Daar installeren we de DDNS client ddclient.

Vervolgens geven we de instellingen mee van Strato en forceren we een update. Zoals hieronder te zien is heeft hij netjes mijn externe IP-adres opgehaald.

4.4: Een cluster aanmaken
Het is nu tijd om een cluster aan te maken. Dat wil ik graag doen op Routerbox. Om dit in gang te zetten moeten we eerst een statisch IP-adres toewijzen. Ik heb een netwerkbrug gemaakt die draait op VLAN10 welk gekoppeld is aan de LACP-bond.

Hierna kunnen we de cluster aanmaken. Ik kan meerdere netwerk interfaces toewijzen voor redundantie, echter is dat al ingebouwd in de LACP-bond over vier netwerkpoorten.

Nu de cluster is gemaakt kunnen we Foxbox toevoegen. Het mooie aan Proxmox is dat alle informatie dat een node nodig hebt om een cluster te joinen, opgeslagen is in een digest. Hierdoor hoeven we alleen maar de digest te kopiëren en te plakken en een wachtwoord in te voeren.

Helaas pindakaas. Ik krijg de melding dat we de eerder geïnstalleerde Ubuntu virtuele machine moeten verwijderen. Recovery is geen probleem omdat we een kopie hebben staan op de back-up server.

Uiteindelijk voegen we ook OxBox toe en hebben we een werkende cluster van drie nodes.
De pop-up vertelt ons dat we eigenlijk drie quorum stemmen nodig hebben voor een betrouwbare HA-cluster. Laten we dat maar meteen in orde maken. Als quick fix start ik een SSH-sessie met de Proxmox backup server op BasDeNAS en installeer ik de corosync-onderdelen.


Het installeren is gelukt. Vervolgens wil ik de nieuwe Quorum-deelnemer de cluster laten joinen. Foutmelding, jammer. Het lijkt erop dat de unieke identifier van de server niet overeenkomt met die van het verleden.

Een tip van Reddit: start een SSH-sessie vanaf het nieuwe quorum-lid naar Foxbox en Routerbox. Op deze manier werkt hij de fingerprints bij van de desbetreffende servers. Dit bood helaas ook geen oplossing. Ik heb vervolgens geprobeerd om beide servers (tegen beter weten in) opnieuw op te starten. Hierna werd het quorum niet gehaald doordat de nodes elkaar niet zagen.
Als pleister heb ik besloten het aantal stemmen van routerbox te verhogen naar 5. Het hele netwerkgebeuren is afhankelijk van routerbox. Immers:
- Geen quorum is geen werkende cluster
- geen werkende cluster is geen werkende OPNsense router
- Geen OPNsense betekent geen VPN service
- Geen VPN service is geen intranet
- Geen intranet is geen routering naar cluster nodes buiten het netwerk
