Aktionen

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

ClipCapIt-240929-123204.PNG

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

ClipCapIt-240929-123343.PNG

Dann auf START klicken:

ClipCapIt-240929-123423.PNG
ClipCapIt-240929-123443.PNG
ClipCapIt-240929-123508.PNG

Wenn er fertig ist können wir mit der Installation loslegen!


Installation der Nodes von USB-Stick

Wir booten das System vom USB-Stick:

ClipCapIt-240929-123651.PNG
ClipCapIt-240929-123920.PNG

Jetzt kommt der wichtige Teil:

ClipCapIt-240929-124032.PNG

Hier unbedingt auf Options klicken:

ClipCapIt-240929-124155.PNG

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.

ClipCapIt-240929-124836.PNG

Dann auf Next und die Sprache auswählen + Passwort und Email setzen.
Beim Netzwerk:

ClipCapIt-240929-125058.PNG

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.

ClipCapIt-240929-125418.PNG
ClipCapIt-240929-130704.PNG

Danach startet das System neu und ist unter

ClipCapIt-240929-125735.PNG
https://IP-Adresse:8006

im Webbrowser erreichbar:

ClipCapIt-240929-125844.PNG

Der Benutzername ist root, das Passwort hattet Ihr während des Setups festgelegt.

ClipCapIt-240929-130004.PNG

Repository anpassen und Proxmox Updaten

Ihr verbindet euch per SSH mit dem frisch installierten Server,
Benutzername ist wiederum root mit eurem Passwort:

ClipCapIt-240929-131056.PNG

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

ClipCapIt-240929-131442.PNG


Jetzt noch die vorhandenen Enterprise Repos deaktivieren:

nano /etc/apt/sources.list.d/ceph.list

und ein # vor die Zeile setzen:

ClipCapIt-240929-131641.PNG

sowie

nano /etc/apt/sources.list.d/pve-enterprise.list

und ebenfalls alles auskommentieren:

ClipCapIt-240929-131746.PNG

Jetzt können wir die Repository-Informationen aktualisieren:

apt update
ClipCapIt-240929-131920.PNG

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:

ClipCapIt-240929-135418.PNG

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 Netzwerkkarte ens192. Dahinter steht die IP-Adresse über welche wir auchh gerade auf das System zugreifen
  • ens192 vom Typ Network Device. Die Kartte ist Active: Yes aber Autostart: No und hat keine IP-Adresse da diese zum Gerät vmbr0 gehört
  • ens224 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:

ClipCapIt-240929-140126.PNG

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:

ClipCapIt-240929-140519.PNG

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:

ClipCapIt-240929-140937.PNG

Cluster erstellen aus 2 Nodes

Wir gehen auf die Weboberfläche des ersten Host und erstellen einen neuen Cluster unter

Datacenter => Cluster => Create Cluster
ClipCapIt-240929-141215.PNG

Bei nur einer Netzwerkkarte vergebt Ihr den Namen, als Link sollte da die IP-Adresse des Systems stehen:

ClipCapIt-240929-141416.PNG

Falls Ihr eine 2. Netzwerkkarte eingerichtet habt, sollte es so aussehen:

ClipCapIt-240929-141515.PNG

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:

ClipCapIt-240929-141800.PNG
ClipCapIt-240929-141840.PNG

Wir klicken auf Join Information und im neuen Fenster unten links auf Copy Information:

ClipCapIt-240929-141956.PNG


Nun wechseln wir auf den zweiten Proxmox-Host in die Cluster-Einstellungen. Statt einen neuen zu erstellen, klicken wir nun auf Join Cluster:

ClipCapIt-240929-142110.PNG

In dem Fenster fügen wir nun ein was wir vom anderen Host kopiert haben, sofort ändert sich die Ansicht:

ClipCapIt-240929-142219.PNG

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:

ClipCapIt-240929-142422.PNG

Alles ok! Er hat gerade das Zertifikat ausgetauscht, die Sitzung ist ungültig! Auf dem ersten Host sieht es auch komisch aus:

ClipCapIt-240929-142513.PNG


Jeweils F5 löst das Problem in beiden Browsersitzungen:

ClipCapIt-240929-142606.PNG


Optional: Migrationsnetzwerk setzen bei 2 Netzwerkkarten

ClipCapIt-240929-142812.PNG

Wir wechseln zu den Cluster-Optionen und bearbeiten den Eintrag Migration Settings:
Im Feld unten wählen wir das gewünschte Netzwerk und speichern:

ClipCapIt-240929-142936.PNG

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.
Um das zu verhindern müssen Cluster am besten immer aus 3 Parteien bestehen. Es ginge auch mit einem 3. Proxmox Server (auf dem dann aber keine VMs laufen müssen), alternativ reicht ein Quorum-Dienst.
Ich habe mich für den Dienst entschieden der bei mir auf einem separaten Server läuft. Geeignet ist jedes Linux-System auf dem man das Paket / den Dienst corosync-qnetd installieren kann.
Also auch ein Raspberry Pi. Es sollte nur unabhängig von den beiden Proxmox-Servern sein.
Ich habe hier ein Ubuntu-System das als VM auf einem anderem System läuft.


Quellen:


VM replizieren