Proxmox: Installation 2 Node Cluster mit Replikation und Live-Migration
Aus znilwiki
Changelog:
- 29.09.2024 erste Version
Vorwort
Ich habe mir einen 2 Node Cluster mit Replikation der VMs und möglicher Live-Migration aufgebaut.
Das ganze läuft auf 2 Mini-PCs mit folgender Ausstattung:
- Intel N95 Prozessor (4 Kerne, max 3.4GHz)
- 16GB RAM DDR4
- 512GB M.2 SATA SSD
- 2 x GigaBit-LAN
Die Büchsen kosten um die 200 Euro pro Stück, die Hardware stelle ich separat vor.
Es gab einige Hürden bis ich beide in einem Cluster am laufen hat UND erfolgreich replizieren und eine Live-Migration machen konnte.
Das fing schon damit an das ich beim ersten Setup immer nur Weiter geklickt habe, damit wurde das System mit LVM und 2 Partitionen im EXT4 Format installiert.
Funktioniert an sich - aber ohne ZFS keine Replikation, ohne Replikation keine Live-Migration.
Voraussetzungen
Für ein Failover Cluster mit 2 Nodes, Replikation und Live-Migration brauchen wir folgendes
- 2 Hardware System, möglichst identisch ausgestattet, gleiche CPU-Familie / Generation
- Ein separates Linux-System als Quorum (Es wird nur ein Dienst installiert), dieses darf NICHT mit auf den Proxmox-Servern laufen
- Alternativ ein 3. Proxmox-Server.
USB-Stick für Installation vorbereiten
Wir legen einen USB-Stick mit mindestens 2GB bereit und laden uns die Installations-ISO herunter (dort die neueste Version):
https://www.proxmox.com/de/downloads/proxmox-virtual-environment/iso
und RUFUS:
https://rufus.ie/de/
es reicht die Portable Version.
Wir starten Rufus, ja es richtig das das Programm Administrationsrechte anfordert (wir wollen einen USB-Stick partitionieren):
Unter (1) sollte der USB-Stick eingestellt sein, unter 2 wählen wir die ISO mit Proxmox, z.B. proxmox-ve_8.2-2.iso.
Es kommt einen Warnung
Dann auf START klicken:
Wenn er fertig ist können wir mit der Installation loslegen!
Installation der Nodes von USB-Stick
Wir booten das System vom USB-Stick:
Jetzt kommt der wichtige Teil:
Hier unbedingt auf Options klicken:
und eines der zfs
Dateisystem auswählen. Habt Ihr nur die eine Festplatte so sollte das
zfs (RAID0) sein.
Falls Ihr eine Boot-Festplatte habt und die VMs später auf einer separaten Festplatte liegen sollen, so braucht ihr das nicht extra von ext4
ändern, müsste aber dann unten die richtige Festplatte gewählt haben.
Das mit dem zfs
ist wichtig - ohne ist keine Replikation möglich.
Dann auf Next und die Sprache auswählen + Passwort und Email setzen.
Beim Netzwerk:
Wählt Ihr - falls mehr als eine Netzwerkkarte die richtige aus. Ggf. beim Setup nur ein Netzwerkkabel stecken.
Diese Netzwerkkarte landet dann automatisch in einer Linux Bridge mit dem Namen vmbr0
über welche dann später unsere VMs laufen. Und das Management ist darüber erreichbar.
Danach startet das System neu und ist unter
https://IP-Adresse:8006
im Webbrowser erreichbar:
Der Benutzername ist root
, das Passwort hattet Ihr während des Setups festgelegt.
Repository anpassen und Proxmox Updaten
Ihr verbindet euch per SSH mit dem frisch installierten Server,
Benutzername ist wiederum root
mit eurem Passwort:
Dann bearbeiten wir folgende Dateien:
nano /etc/apt/sources.list
und unten folgende 2 Zeilen anhängen (für Proxmox 8.x.x / basierend auf Debian Bookworm:
# Community Repository deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
Ggf. müsst Ihr bookworm
durch das Wort ersetzen was hinter den anderen dort aufgeführten Repositorys steht
Jetzt noch die vorhandenen Enterprise Repos deaktivieren:
nano /etc/apt/sources.list.d/ceph.list
und ein #
vor die Zeile setzen:
sowie
nano /etc/apt/sources.list.d/pve-enterprise.list
und ebenfalls alles auskommentieren:
Jetzt können wir die Repository-Informationen aktualisieren:
apt update
und die Updates einspielen:
apt full-upgrade -y
Im Anschluss neu starten:
reboot
Optional: 2 Netzwerkkarte für Cluster und Replikation/Migration verwenden
Proxmox ab Version 8 kann mit mehren Netzwerkkarten / IP-Adressen umgehen, siehe auch
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pvecm_redundancy
Ich aktiviere deshalb die 2 Netzwerkkarte in meinen Mini-PCs und weise diesen separate IP-Adressen aus einem anderen Netzwerk zu.
Wir melden uns am Proxmox-Host per Webbrowser an und navigieren zu den Netzwerkeinstellungen:
In diesem Fall sehen wir 3 Netzwerkgeräte, die Namen der einzelnen Netzkarten variiert je nach Hardware:
vmbr0
vom Typ Linux Bridge. Ist Active: Yes und enthält die Netzwerkkarteens192
. Dahinter steht die IP-Adresse über welche wir auchh gerade auf das System zugreifenens192
vom Typ Network Device. Die Kartte ist Active: Yes aber Autostart: No und hat keine IP-Adresse da diese zum Gerätvmbr0
gehörtens224
vom Typ Network Device. Diese Karte ist noch ungenutzt! Active: No und Autostart: No
In meinem Fall kann ich also eine 2. IP-Adresse auf ens224
legen und nutzen.
Wenn Ihr ein Netzwerkkabel in den Port steckt so wird dieser nicht aktiv / hat keinen Link. Weil der Port noch nicht konfiguriert ist.
Wir klicken die Karte an / markieren diese und oben auf Edit:
Hier trage ich eine IP-Adresse aus einem anderen Netzwerk ein, es sollte NICHT das gleiche Netzwerk wie die andere IP-Adresse des System sein. Nur so können wir gezielt routen.
Das Gateway lasse ich frei da es keines in diesem Netzwerk gibt:
172.31.0.231/24
entspricht
IP.........: 172.31.0.231 Subnetmaske: 255.255.255.0
Den Haken bei Autostart nicht vergessen!
Dann auf Apply Configuration und die Netzwerkkarte wird online geschaltet:
Das ganze wiederholen wir nun auf den weiteren Proxmox-Hosts.
Wir melden uns wieder per SSH an beiden Hosts an und prüfen ob diese sich auf allen Adressen gegenseitig erreichen können:
Cluster erstellen aus 2 Nodes
Wir gehen auf die Weboberfläche des ersten Host und erstellen einen neuen Cluster unter
Datacenter => Cluster => Create Cluster
Bei nur einer Netzwerkkarte vergebt Ihr den Namen, als Link sollte da die IP-Adresse des Systems stehen:
Falls Ihr eine 2. Netzwerkkarte eingerichtet habt, sollte es so aussehen:
per Add fügt Ihr einen Eintrag hinzu. Der Link mit der Nummer 0 sollte die IP-Adresse des separaten Netzwerks enthalten, das wird dann primär bevorzugt / der Datenverkehr zwischen den Proxmox-Hosts primär darüber geleitet.
Nach einem Klick auf Create dauert es nur wenige Sekunden und wir haben unser Cluster mit dem ersten Node:
Wir klicken auf Join Information und im neuen Fenster unten links auf Copy Information:
Nun wechseln wir auf den zweiten Proxmox-Host in die Cluster-Einstellungen. Statt einen neuen zu erstellen, klicken wir nun auf Join Cluster:
In dem Fenster fügen wir nun ein was wir vom anderen Host kopiert haben, sofort ändert sich die Ansicht:
Tragt das Passwort des Benutzer root
ein und wählt unten die zueinander passenden Netzwerkadressen.
Dann auf Join 'Clustername':
Es erscheint das Statusfenster ... und dann geht es nicht weiter:
Alles ok! Er hat gerade das Zertifikat ausgetauscht, die Sitzung ist ungültig! Auf dem ersten Host sieht es auch komisch aus:
Jeweils F5 löst das Problem in beiden Browsersitzungen:
Optional: Migrationsnetzwerk setzen bei 2 Netzwerkkarten
Wir wechseln zu den Cluster-Optionen und bearbeiten den Eintrag Migration Settings:
Im Feld unten wählen wir das gewünschte Netzwerk und speichern:
Quorum hinzufügen
Die beiden Proxmox-Host arbeiten zusammen in einem Cluster. Sie könnten also z.B. Hochverfügbarkeit bieten. Fällt Host A aus so könnte man die VMs die auf diesen liefen auf dem Host B wieder starten. Das Problem bei 2 Hosts ist festzustellen, wer das Problem hat.
Fällt Host A aus, kann Host B nicht wissen ob A nun ausgeschaltet ist - oder ob nur die Netzwerkverbindung unterbrochen wurde.
Oder ob vielleicht sogar Host B selbst das Problem ist weil diese seine Netzwerkverbindung verloren hat.
Im schlimmsten Fall würden dann die gleichen VMs dann auf beiden Hosts laufen und deren Daten sich auseinander entwickeln. Das wird auch als Split Brain bezeichnet.
Quellen: