Konzeptionalle Frage: Proxmox Ceph-HA-Cluster -> VMs mit Docker, +CephFS als Datenspeicher für Container/VMs, +Backups?

Frazze

Cadet 1st Year
Registriert
Okt. 2011
Beiträge
9
Hallo Zusammen,

mein Erster Post hier im Forum und gleich sowas :D (ich lese aber schon seit Jahren hier sowie PRO-User).
Ich möchte mir ein "Homelab" aufbauen um mal wieder bisschen Dinge zu testen und einiges selbst hosten.

Bevor ich die Frage stelle muss ich erstmal kurz ausholen was geplant ist, ich erhoffe mir einfach ein bisschen Input und Ideen oder Anregungen und ggfs. andere Sichtweisen:

Folgendes ist geplant:

3x Minisforum MS-01 als Hardware auf welchen jeweils Proxmox laufen wird (sind schon bestellt).

In jedem MS-01 werden 3 SSD's sein:
  • eine kleine 1. SSD für den Host-Proxmox (500GB)
  • eine größere 2. SSD für die VMs/LXC's (2-4 TB)
  • sowie nochmal eine größere 3. SSD als Datenspeicherort für die "Nutzdaten" die durch die VM's(+Docker)/LXC's ebenen genutzt werden (Paperless Scans, *arr stack Dateien, Bilder, Videos, Vaultwaren DB usw, einfach alle Daten die man so hat) (4-8 TB).

Da das Ganze als 3-Node-Proxmoxcluster mit HA (high availability) laufen soll wird natürlich Ceph verwendet (Ceph auch deshab da ich keinen SingePointofFailure (SPoF) haben möche wenn ich stattdessen als Datastore ein NAS über iSCSI oder sowas verwende).


Der Plan ist die 2. SSD auf welcher die virtuellen Festplattenimages der VMs/LXCs liegen ganz "traditional" durch Proxmox und Ceph als RBD Volume zu nutzen.

Der Plan für die 3. SSD ist, auf dieser ein CephFS (Ceph Filesystem) laufen zu lassen. Auf diesem CephFS sollen dann eben die ganzen Nutzdaten liegen und in die VM's/LXC's (sowie Dockercontainer in den VM's) gemountet oder eben bereitgestellt werden.

Hintergrund warum ich das gerne so mit CephFS hätte: Ich möchte nicht über Jahre meine Daten von Nexclound, Paperless-ngx, Vaultwaren und allem anderen in einer VM/Docker liegen haben und dort "spezifisch gebunden haben". Angenommen eines Tages will ich die Daten in "Rohform" abziehen dann kann ich das unabhängig von der Funktion/dem Vorhandensein der VM/LXC/Docker tun, da diese eben "normal" auf dem CephFS liegen.
Ich hoffe man versteht meine Beweggründe. Falls diese komplett falsch/unbegründet/dumm sind oder jemand eine Bessere Idee zur Trennung hat, gerne vorschlagen!


Frage 1:
Wie stelle ich das CephFS am besten in die VM's/LXC's und auch Dockercontainer innerhalb von VMs bereit?
Aktuell tendiere ich dazu das CephFS mittels https://docs.ceph.com/en/latest/man/8/mount.ceph/ Cephbordmitteln selbst in den VM's/LXCs zu mounten.

Alternativ hatte ich noch im Kopf das CephFS in einer TrueNAS VM mittels o.g. Cephbordmittel zu mounten und dann durch TrueNAS als NFS/SMB Freigabe an andere Dienste/VMs bereitzustellen. Allerdings bin ich nicht sicher ob das Sinn macht? [auch in Bezug zu Frage 2]


Frage 2:
Was wäre die Sinnvollste Möglichkeit das CephFS dann als Storage an die Dockercontainer (die alle in einer/mehrer VM's laufen) bereitzustellen?
Angenommen ich mounte CephFS mit Cephbordmitteln in die Docker-Host-VM, dann kann ich an die Container dann mittels docker Bind-mounts direkt das gemountete CephFS mit gewünschtem Ordner als Storage einbinden;
ODER mittels Docker Volumes auf dem CephFS arbeiten, dazu müsste dann aber (wenn ich es richtig verstehe?) das "Arbeitsverzeichnis" (z.B. /var/lib/docker/volumes/) von Docker (oder Dockge oder Portainer) selbst auf dem CephFS liegen da Volumes ja von Docker gemanaged werden.


Frage 3:
Wie sichere ich am besten die Daten auf dem CephFS?
Kurz zum Backup-Konzept:
-Backups werden über eine VM auf welcher Proxmox-Backup-Server (PBS) läuft (die VM selbst lauft auf dem zu sichernden oben beschrieben Cluster) auf ein physikalisches NAS laufen. Gesichert wird zuerst die PBS-VM aufs NAS, und dann 1-2 h später mittels PBS alle anderen VMs. Die Proxmox-Hosts werden mittels Proxmox-Backup-Client (https://pbs.proxmox.com/docs/backup-client.html) aufs NAS gesichert. Die Hosts sind aber am unwichtigsten da dieser einfach neu installiert werden könnten.
-Disaster-Recovery würde so laufen: Proxmox-Host(s) mittels Proxmox-Backup-Client wiederherstellen vom NAS (oder Proxmox neu installieren), dann die PBS-VM manuell vom NAS Wiederherstellen, dann aus der nun laufenden PBS-VM alle anderen WMs/LXS wiederherstellen.
-Vom NAS wird noch auf eine externe Festplatte/und/oder RemoteCloud ein Offsite-Backup erstellt
(das Ganze Konzept ist hier auch ganz gut beschrieben:
, wen es interessiert).

ABER: Ich kann mit PBS kein CephFS sichern. Theoretisch kann der Proxmox-Back-Client verwendet werden, der ist aber nicht perfomant für ein größeres CephFS. Wenn ich es richtig verstehe bleibt mir bei CephFS aber leider keine andere Möglichkeit als auf Filesystem-Ebene eine Sicherung durchzuführen, was immer weniger Performant ist als auf Blockdevice-Ebene.

Meine grobe Idee war bisher eine exta VM/LXC in welcher das CephFS gemountet wird, und in dieser VM/LXC dann irgendeine Client-Backup-Software, wie z.B. rSync, Veeam, restic oder sowas in der Art welche dann das gesamte gemountete CephFS ab "root" / aufs NAS sichert. Hat hier jemand Ideen für mich?
Ich weiß dass CephFS auch Snapshots kann und auch snapshot mirroring (https://docs.ceph.com/en/latest/cephfs/cephfs-mirroring/ ) aber dafür benötige einen zweiten CephFS-Cluster und den hab ich nicht, das Setup ist so schon teuer genug ;).
Außerdem ist es immer ganz schön wenn ein Backup auch auf einem anderen "Technologie-Stack" liegt für den fall das Ceph an sich mal einen Bug hat.



Noch ein paar Bemerkungen zum Setup und mir:
-Ceph Netzwerktraffic wird über USB4 mit 20GBit/s im Ringnetzwerk laufen. Alternativ hätte ich auch die Möglichkeit die vorhandenen 2x10GBit Netzwerkanschlüsse zu nutzen
-Meine letzte aktive Proxmox Erfahrung und aktive Arbeit mit Linux usw. ist schon einige Jahre her, habe früher als Sysadmin gearbeteit und war privat auch sehr an solchen Themen interessiert und aktiv. Aber durch eine komplett andere Berufliche Laufbahn habe ich die Entwicklung nur noch am Rande verfolgt (aber nie ganz aus den Augen verloren ;)) Docker ist für mich z.B. Praxis-Neuland). Aber ich arbeite mich in so Themen dann schon ein.




Wie man merkt habe ich schon einiges darüber gegrübelt und gegooglt.


Würde mich freuen wenn hier jemand Input/Ideen hat oder gar schon ein ähnliches Setup gefahren hat und Erfahrungen teilen kann oder meine Fragen beantworten kann.


Vielen Dank!!
 
Frazze schrieb:
Ceph Netzwerktraffic wird über USB4 mit 20GBit/s im Ringnetzwerk laufen
Das wichtigste bei storage ist Latenz. nicht bandbreite. Ethernet ist schon OK, abervorher nochmal durch USB zu gehen wird zu beschissener Performance führen.
Ein billiges kleines NAS wuerde ich bei Ceph auch eher nicht nehmen. Bei Ceph sollte es schon ein paar CPU Kerne und GB RAM mehr haben.
Vor allem ist ceph ohne clustering nicht mega sinnvoll..
Ich wuerde einfach mehr SSDs in die Server stecken und einen ZFS Pool einrichten.
Frazze schrieb:
Hintergrund warum ich das gerne so mit CephFS hätte: Ich möchte nicht über Jahre meine Daten von Nexclound, Paperless-ngx, Vaultwaren und allem anderen in einer VM/Docker liegen haben und dort "spezifisch gebunden haben".
Hast du doch nicht. Die Volumes koennen in jedem Dateisystem an einem beliebigen Ort liegen. ich sehe da 0 Vorteile durch Ceph. Es sei denn du hast noch einen anderen Grund
Frazze schrieb:
Angenommen eines Tages will ich die Daten in "Rohform" abziehen dann kann ich das unabhängig von der Funktion/dem Vorhandensein der VM/LXC/Docker tun, da diese eben "normal" auf dem CephFS liegen.
Tun sie auch bei FAT32, Ext4 und ZFS
Frazze schrieb:
Ich hoffe man versteht meine Beweggründe. Falls diese komplett falsch/unbegründet/dumm sind oder jemand eine Bessere Idee zur Trennung hat, gerne vorschlagen!
ZFS Datasets sind zur Trennung super. 1 Dataset per VM und fertig.




Ich sehe aber auch keinen Usecase fuer Proxmox.
Ich habe die Dienste die du da hast und noch deutlich mehr auf einem einzelnen Singleboard Computer mit nacktem Debian in Betrieb. Unten dran eine NVMe SSD und gut ist.
Kostet um die 150 Euro und kann mehr als aus deinen Anforderungen hervorgeht

Frazze schrieb:
aber dafür benötige einen zweiten CephFS-Cluster und den hab ich nicht, das Setup ist so schon teuer genug .
yep. Single node bei ceph macht 0 Sinn.
auch nur 1 Standort ist nur bedingt sinnvoll.
Wenn ein 2. Cluster bei deinen Eltern und ein 3. bei deinen schwiegereltern steht wird das sinnvoll.
Zum spielen kannst du machen was du willst, aber gerade schießt du mit einer Flak auf Moskitos
 
Zuletzt bearbeitet:
Das wichtigste bei storage ist Latenz. nicht bandbreite. Ethernet ist schon OK, abervorher nochmal durch USB zu gehen wird zu beschissener Performance führen.
Ein billiges kleines NAS wuerde ich bei Ceph auch eher nicht nehmen. Bei Ceph sollte es schon ein paar CPU Kerne und GB RAM mehr haben

Latenz per USB4 passt schon. Ist genauso schnell wie Ethernet. Gibt dazu ein paar Leute die so ein Setup fahren. Falls das aber nicht klappen sollte werde ich einfach auf 2x10GBit Anbindung wechseln, das ist dann gar kein Thema da bin ich flexibel das kann Ceph.
Links zu Ceph und USB4 Ethernet für Ceph storage replication (wenn es interessiert, in keiner speziellen Reihenfolge):
https://forum.level1techs.com/t/3-node-65w-proxmox-thunderbolt-network-cluser/200207
https://gist.github.com/scyto/76e94832927a89d977ea989da157e9dc
https://fangpenlin.com/posts/2024/01/14/high-speed-usb4-mesh-network/


Bei deinem Setup wuerde ich einfach lokales ZFS nehm

Wie meinst du das? Nur für den CephFS-Teil als Ersatz ZFS oder direkt weg von Ceph komplett? Dann wäre es kein HA-Cluster mehr und ZFS kann nur Replication mit x+15 min (oder so ähnlich).
Nur den CephFS-Teil für die Daten durch ZFS ersatzen macht mM keinen Sinn da die VMs ja in HA laufen, wenn dann das in diesen VMs gemountete "Datastore-Dateisysten" nicht-HA ist ist das ganze Setup murks.
 
Zuletzt bearbeitet: (EDIT;)
[hier stand quatsch].

Ich kann iwie meinen oberen Post nicht mehr bearbeiten daher hier neuer Post: Danke für die zusätzlichen Ausführungen madmax2010 bzgl. ZFS.
Dass das Setup natürlich "oversized" ist ist schon klar, aber es soll auch dazu dienen mit den Technologien etwas zu spielen und lernen. Mir ist bewusst dass das alles auch auf viel günstigerer Hardware und Setup ginge. Das ist aber nicht mein primäres Ziel.
 
Ich will dir das nicht vermiesen, aber bei der geplanten Hardware wirst du wenig Freude haben. Ich rate daher auch davon ab Ceph einsetzen zu wollen. Hyperkonvergent ist gut und schön, kostet aber Geld wenn es vernünftig sein soll.

Ceph ist sehr hardwareintensiv. Benötigt wird ausreichend RAM, orientiert sich an am Plattenplatz (gilt auch für ZFS) und eine hohe Bandbreite im Bereich des Datenspeichers und des Storage-Netzwerks.
Bei der Vewendung von Ceph sollten die Nodes mit min. 10 Gbps, besser 40 Gbps untereinander verbunden sein. Bei den SSDs sollte es sich Enterprise NVMe's handeln (das gilt auch für SSD wo Proxmox drauf ist, Consumer SSDs sind mitunter schon nach einem Jahr defekt) - gilt auch für ZFS.
Und ja, Ceph läuft auch mit geringerer Bandbreite, aber eben eher schlecht was zu I/O Problemen führt und im unglüchlichsten Fall das Ceph zerlegt oder zu Fehlern innerhalb der VMs führen kann. Selbst schon erlebt. Mehrfach hat's die Oracle DB zerlegt, insbesondere als das Backup lief.
Die Latenz soll zu jeder Zeit (auch unter Last) unterhalb von 4 ms liegen.

LX-Container:
Würde ich überhaupt gar nicht verwenden (wir haben alle eliminiert):
1. die können nicht live migriert werden
2. aus sicherheitstechnischer Sicht nicht so dolle da sie nicht so vom System isoliert sind wie VM's.

Falls doch unbedingt LXC eingesetzt werden soll: installier eine ProxMox VM in der Umgebung. Dann hast du zumindest Punkt 1 abgehakt.

Backup:
Der Proxmox Backup Server sichert auch Maschinen auf Ceph. Warum auch nicht? Wir setzen zwei PBS ein für unsere Umgebung.

Fun Fact:
Wir betreiben zwei Proxmox Ceph Cluster.
Einer davon ist nebst Backup georedundant verteilt. Für diesen planen wir aktuell den Austausch und sind selbst im günstigen Fall bei ~40 - 45.000 € mit ~8 TB Nutzkapazität - und das ist nicht mal was besonderes an Hardware. Bei Thomas-Krenn beginnen Cephsysteme bei ca. 10 k€.

Der andere Cluster beheimatet einen 5G-Core des privaten OpenRAN 5G-Campus. Dieser besteht aus VMs mit Kubernetes.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: JumpingCat
GrillSgt schrieb:
Ich will dir das nicht vermiesen, aber bei der geplanten Hardware wirst du wenig Freude haben. Ich rate daher auch davon ab Ceph einsetzen zu wollen. Hyperkonvergent ist gut und schön, kostet aber Geld wenn es vernünftig sein soll.

Ceph ist sehr hardwareintensiv. Benötigt wird ausreichend RAM, orientiert sich an am Plattenplatz (gilt auch für ZFS) und eine hohe Bandbreite im Bereich des Datenspeichers und des Storage-Netzwerks.
Bei der Vewendung von Ceph sollten die Nodes mit min. 10 Gbps, besser 40 Gbps untereinander verbunden sein. Bei den SSDs sollte es sich Enterprise NVMe's handeln (das gilt auch für SSD wo Proxmox drauf ist, Consumer SSDs sind mitunter schon nach einem Jahr defekt) - gilt auch für ZFS.
Und ja, Ceph läuft auch mit geringerer Bandbreite, aber eben eher schlecht was zu I/O Problemen führt und im unglüchlichsten Fall das Ceph zerlegt oder zu Fehlern innerhalb der VMs führen kann. Selbst schon erlebt. Mehrfach hat's die Oracle DB zerlegt, insbesondere als das Backup lief.
Die Latenz soll zu jeder Zeit (auch unter Last) unterhalb von 4 ms liegen.

Danke für das Feedback!
Mir ist aber klar dass Ceph grundsätzlich für ganz andere Dimensionen gedacht ist als mein kleines Homelab-Experiment.
Ich habe 64gb ram pro Node, theoretisch gehen auch 96, sollte reichen. Ebenfalls ist mit bewusst das Enterpise NVMe SSD mit PowerLossProtection am besten sind für sowas.
Ich achte bei den SSDs die in Einsatz kommen auf entsprechend hohe TBW pro TB. Ebenfalls wäre der Einsatz einer U.2 7mm Enterprise SSD mit allen gewünschten Features möglich.
Anbindung von Ceph wie gesagt, entwender pro Host 2x 10Gb/s oder 20Gb/s und dann hab ich immernoch theoretisch die möglichkeit per PCIe Slot zu skalieren. Aber es ist ein Homelab da genügt das vollkommen.
(Der restliche Traffic wird über 2x 2.5 Gb/s laufen, also Ceph bekommt ein eigenes Netzwerk).

GrillSgt schrieb:
LX-Container:
Würde ich überhaupt gar nicht verwenden (wir haben alle eliminiert):
1. die können nicht live migriert werden
2. aus sicherheitstechnischer Sicht nicht so dolle da sie nicht so vom System isoliert sind wie VM's.

Falls doch unbedingt LXC eingesetzt werden soll: installier eine ProxMox VM in der Umgebung. Dann hast du zumindest Punkt 1 abgehakt.
Danke für die Idee mit Proxmox in der Proxmox-VM für sichereres LXC mit HA ohne Neustart, kreativ!
LXCs werde ich nur einige im einsatz haben, nichts kritisches was ohne Neustart einen Umzug zwischen den Nodes schaffen muss.
Mir ist bewusst das HA nur mit VMs ohne Unterbrechung geht.

GrillSgt schrieb:
Backup:
Der Proxmox Backup Server sichert auch Maschinen auf Ceph. Warum auch nicht? Wir setzen zwei PBS ein für unsere Umgebung.
Das ist mir bewusst. Aber er kann meines Wissens nicht ein CephFS (Ceph FileSystem) sichern. VMs bekommen unter Ceph ja als "Storage Interface" idR. ein RadosBlockDevice.





Mir ist inzwischen auch die Idee gekommen statt CephFS als Datasore für die Nutzdaten der Docker Container stattdessen eine TrueNAS VM anzulegen, diese nutzt dann wiederrum ein Ceph RBD als Speicherort der Daten. Die TrueNAS VM kann z.B. via NFS share in die VM gemounted werden auf der Docker läuft und die Docker Container könnten per bind-mount auf den mount auf der VM zugreifen.
Hätte den Vorteil dass das Backup einfacher ist nämlich per PBS und auch performanter.
Muss mir dazu aber noch mehr Gedanken machen.
 
Zuletzt bearbeitet:
Das Problem mit den SSDs ist weniger die Power Loss Prevention. Kann sein, dass auch das ein Thema ist, es liegt eher am Wearout was ich meine. Proxmox schreibt jeden Tag enorme Mengen an Daten es sollen IMHO pro Tag ~50 GB sein). Das ist auch eher ein Designthema von Proxmox und hat nichts damit zu tun wie viel auf dem System passiert. Es tun hier aber kleine, olle SSDs auch noch gute Dienste wo lediglich Proxmox drauf ist (z. Bsp. Samsung PM893 mit 480 GB) oder auch gebrauchte aus ausgemusterter Enterprise Hardware. Diese kosten dann auch nicht so sehr viel. Zu der Thematik bzgl. der Consumer SSDs findest du hier ein paar Dinge.

TrueNAS kannst du machen, aber bedenke, dass ZFS auch viel RAM benötigt. Und ob das mit ZFS so toll läuft… . Die VirtIO Treiber unter BSD gelten nicht gerade als wirklich gut. Vielleicht wäre aber auch einfach ein Debian mit Portainer was.

Meiner Meinung nach, sollte man immer vermeiden Platten als RAW Device durchzureichen. Der Umgang mit virtuellen disks gestaltet sich wesentlich einfacher.

Ich habe privat übrigens aus Gründen des Sparens von Ressourcen und weil niemand sonst darauf Zugriff hat ein paar LXCs. Glücklich bin ich in min. einem Fall damit nicht (Nextcloud). Ein anderer Container ist Samba mit einem ZFS Subvol. Dieses große Subvol beherbergt meine Daten und ist in andere Container als Mountpoint im LXC ebenfalls eingehängt. Das allein ist schon ziemlich frickelig wegen der Berechtigungen auf die Files (Gruupe A gibt es Container B, aber in nicht in C) - egal.
Jetzt brauche ich aber einen Restore davon aus dem Backup was aber nicht klappen will weil Proxmox immer etwas von der Größe meckert. Mit einer VM wäre das nicht passiert 😕
 
Die Hardwareempfehlungen für Ceph beziehen sich aber aus missionskritischen Unternehmenseinsatz und nicht auf ein Home Lab.

Und wenn Geld für 3 Spaß-nodes da ist, dann wird es sicher nicht an einer kleinen 700VA USV scheitern.

Ansonsten sind Enterprise SSDs oder SSDs mit solider schreibperformance und -endurance auch zu brauchbaren Preisen zu bekommen.
 
Zuletzt bearbeitet:
Was Hardware angeht bin ich mir wie gesagt schon bewusst was die Vorraussetzungen sind. Als SSDs kommen Samsung PM9A3 jeweils 4 TB als 22110 m2 in Einsatz. Die haben mich in Schnitt über eBay keine 250€ das Stück gekostet mit gerade mal 35 TB written.

Mir ging es eher um die Software bzw Implementierung bzw Speicherart der Nutzdaten. Ob diese auf einem CephFS liegen sollten oder einer anderen Lösung.

Meine zwei Favoriten aktuell sind CephFS oder, falls das klappt wie ich es plane, eine TrueNAS welchem ein zweites (neben dem boot-rbd device) großes RadosBlockDevice als Datenspeicher "durchgereicht" wird. Hätte den Vorteil dass Backups sehr schnell gehen da das virtuelle TrueNAS ebenfalls komplett auf rbd's liegt welche einfach mit PBS gesichert werden können. Weiterhin müsste HA funktionieren da das rbd ja auf allen nodes zur Verfügung steht und es erlaubt mir die Vorzüge von TrueNas was Flexibilität angeht zu nutzen.
 
Kann TrueNAS überhaupt RBDs verwalten? Wenn ich mir diesen Post ansehe fehlten zumindest bis Mai 2022 die entsprechenden Werkzeuge.
 
TrueNas muss kein Ceph/ rbd "können". Es genügt der TrueNas VM in proxmox noch eine weitere "Festplatte" zuzuweisen welche eben ein rbd ist. TrueNas/VMs allgemein behandeln diese dann wie ein normales Blockdevice, d.h. es kann zB mit ext4 oder sonst was formatiert werden und ganz normal behandelt werden. TrueNas / VMs "wissen" gar nicht dass darunter Ceph läuft.
 
Zuletzt bearbeitet:
Verstehe, dann viel Erfolg. Ich bleib bei Disk Images auf den die Nutzdaten kommen.
 
Zuletzt bearbeitet:
Das ist ja weiterhin ein Disk Image zu einer VM, nur eben eines dass separat für alle anderen VMs dienen soll ;)

Ich werde hier berichten wie es läuft!
 
Zurück
Oben