Cluster - Corosync - nur 1 nic - VLAN nutzen?

dekiesel

Member
Apr 30, 2023
73
6
13
Hi,

Ich bin dabei einen 3-node-cluster für mein Homelab zu bauen. Zwei der Maschinen haben nur ein NIC (2 Mini PCs), aber alle 3 nodes sind am selben (switch (mikrotik).

Hier eine beispielhafte /etc/network/interfaces
Code:
auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0.100
iface vmbr0.100 inet static
        address  10.1.100.12/24
        gateway  10.1.100.1

auto vmbr0
iface vmbr0 inet manual
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

iface vmbr0 inet6 dhcp
    gateway fd00::1
    accept_ra 2
Der host ist bereits in einem low traffic VLAN (100), da wird nur ein bisschen gestreamt, aber ich nehme an VMs werden über das gleiche VLAN migriert in dem auch der Host sitzt?

Folgende Fragen kamen mir und ich hoffe, jemand kann ein paar beantworten
1) Machen VLANs hier überhaupt einen Unterschied?
2) Falls ja, sollte ich ein eigenes "Corosync"-VLAN erstellen
3) Gibt es andere Einstellungen die die Latenz für Corosync verbessern könnten?

Vielen Dank! :)
 
Der host ist bereits in einem low traffic VLAN (100), da wird nur ein bisschen gestreamt, aber ich nehme an VMs werden über das gleiche VLAN migriert in dem auch der Host sitzt?

Jein, standardmäß ist das VLAN nicht relevant (solange man nichts ändert), es wird für die Migration immer das gleiche Netzwerk genommen, wie corosync, was nicht ganz optimal ist (mehr dazu gleich).

Folgende Fragen kamen mir und ich hoffe, jemand kann ein paar beantworten
1) Machen VLANs hier überhaupt einen Unterschied?

Nein, der Grund für die Empfehlung für corosync ein eigenes Netzwerk zu haben ist, dass corosync sehr empfindlich auf Latenzen reagiert. Wenn also z.B. das Netzwerk durch Streaming, Migrationen oder anderen Datenverkehr komplett dicht ist, wie soll dann das VLAN bei Latenzen helfen?

Meine Empfehlung wäre (so habe ich das bei meinen Mini-PCs gemacht), für die Mini-PCs USB-Ethernet-Adapter zu kaufen und damit dann das Corosync-Netzwerk zu realisieren. Braucht dann halt noch einen dezidierten Switch, aber das muss ja alles keine teure Hardware sein, im Clusternetz hängen ja eh nur die Clusterknoten (braucht also keinen Support für VLANs o.ä.). Zusätzlich richtest dein normales Netzwerk dann als Fallback für Redundanz ein:
https://pve.proxmox.com/wiki/Cluster_Manager#pvecm_redundancy

Achtung: Standardmäßig wird das corosync-netzwerk auch für Migrations- (und wenn man das nutzt) den Traffic der Storage-Replication genutzt, sobald man zwei Netzwerke hat, sollte man das auftrennen, damit wenigstens ein Netzwerk exklusiv von corosync genutzt wird: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_guest_migration

Generell stelle ich mir aber auch die Frage, wozu du einen Cluster brauchst? Willst du die High-Availability-Features nutzen? Dann brauchst du auch shared Storage, also eine NAS o.ä., Ceph oder ZFS Storage-Replication. Ceph macht mit der typischen Netzwerk- und Storage hardware von Mini-PCs keinen Spaß, da man dafür mindestens 10GB und mehrere SSDs haben sollte: https://forum.proxmox.com/threads/fabu-can-i-use-ceph-in-a-_very_-small-cluster.159671/

Für ZFS Storage-Replication oder die Nutzung einer NAS ist das natürlich nicht nötig, eine NAS wird aber auch relativ lahm im Zugriff sein, wenn du darauf die VMs hostest.
Wenn du dagegen die High-Availability-Features nicht nutzen willst, brauchst du auch nicht unbedingt einen Cluster, eine Migration zwischen den Knoten geht auch ohne Cluster mit den ProxmoxDatacenterManager (den man auch gut in einer VM betreiben kann).
Hast du dir Gedanken um ein Backup gemacht? Mini-PCs sind sehr dankbare (weil wenig Strom verbrauchende) Optionen für einen ProxmoxBackupServer.

3) Gibt es andere Einstellungen die die Latenz für Corosync verbessern könnten?

Bei den Standardeinstellungen für corosync sollte man nur was anpassen, wenn man weiß, was man tut (ich tue es nicht). Dafür gibt es im Regelfall keinen Grund. Auf Reddit hat mal jemand geschrieben, dass er einen Cluster mit 30 Knoten betrieb und der mit den Standardeinstlellungen nicht sehr stabil war. Er hat also den Proxmoxsupport eingeschaltet (praktisch wenn man zahlender Kunde ist). Der hat ihn dann erklärt, dass die Standardeinstellungen für Cluster bis 19 Knoten einen stabilen Betrieb garantieren sollten. Hat man mehr Knoten, ist die Empfehlung entweder den Cluster in mehrere aufzuspalten oder bestimmte Einstellungen anzupassen. Der Support hat dann einen ähnlichen Cluster in ihren Labor nachgebaut und damit mehrere Einstellungen getestet und dann dem Kunden (also den Redditer) mitgegeben. Damit hat das dann nach dem finalen Tuning in der Produktion auch geklappt. Aber: Die entsprechende Einstellung sorgte dafür, dass er mehr Knoten benutzen konnte, aber corosync auf Latenzen noch empfindlicher reagierte und das Cluster-Netzwerk auch entsprechend dazu passen musste. Das war da kein Problem, aber davon kann eben nicht bei jeder Umgebung ausgegangen werden, darum sind die Standardeinstellungen wie sie sind. Diese Anekdote sollte verdeutlichen, warum wir Heimuser nichts daran "verbessern" sollten.
 
Last edited:
Wow, vielen lieben Dank für deine ausführliche Antwort!

Ich erzähle wohl besser kurz wie mein bisheriger Plan ist, ich hoffe dann macht der Rest des Textes mehr Sinn.

Ich möchte ein NAS haben (befindet sich im Bau). Auf diesem Nas sollen "ein paar" HDDs als mirrored pool laufen und Daten bereitstellen für user (samba) und an VMs und LXCs (ich denke hier ist NFS am besten?).
Auf dem NAS soll auch eine VM laufen da sie am meisten auf den Speicher zugreifen wird.
NAS-root und die VM sollen auf einer SSD sein.

Alles andere soll auf einem von zwei MiniPCs laufen. Wenn einer dieser MiniPCs ausfällt sollen die wichtigen Services "automatisch" auf dem jeweils anderen MiniPC weiter laufen. Root disks der VMs und LXCs sind auf den MiniPCs und sollen nächtlich synchronisiert werden. Ich habe gelesen das wäre möglich, finde aber jetzt natürlich nichts dazu.
Grösserer Platzbedarf (alles was unter Datengrab fällt) soll von den MiniPCs auf dem NAS abgelegt werden und im Failover Szenario soll der ersetzende MiniPC da weiter machen wo der andere aufgehört hat.

Wenn ich dafür keinen Cluster brauche ist das auch absolut ok für mich, ich dachte nur das wäre unabdingbar?

Die USB-Ethernet-Adapter Idee finde ich fantastisch, vielen Dank!

Code:
Braucht dann halt noch einen dezidierten Switch, aber das muss ja alles keine teure Hardware sein, im Clusternetz hängen ja eh nur die Clusterknoten (braucht also keinen Support für VLANs o.ä.).
Wieso bräuchte ich einen dedizierten Switch? Hat das was mit der Latenz zu tun oder mit den Bandbreiten-Spikes?

Vielen Dank nochmal!!
 
Ich möchte ein NAS haben (befindet sich im Bau). Auf diesem Nas sollen "ein paar" HDDs als mirrored pool laufen und Daten bereitstellen für user (samba) und an VMs und LXCs (ich denke hier ist NFS am besten?).
Auf dem NAS soll auch eine VM laufen da sie am meisten auf den Speicher zugreifen wird.
NAS-root und die VM sollen auf einer SSD sein.

Warum dann überhaupt ProxmoxVE, wenn der Hauptsinn eine NAS + 1-3 VM ist? Die gängigen NAS-Betriebssysteme (UnRaid,TrueNAS, OpenMediaVault) können auch alle VMs hosten. Wenn der Hauptsinn des entsprechenden Systems ist, eine NAS bereitzustellen, wozu dann noch ProxmoxVE und dessen steilere Lernkurve und Komplexität? Was für eine VM und NAS_Software willst du denn einsetzen?

Zu den Daten: Kann man so machen.

Alles andere soll auf einem von zwei MiniPCs laufen. Wenn einer dieser MiniPCs ausfällt sollen die wichtigen Services "automatisch" auf dem jeweils anderen MiniPC weiter laufen. Root disks der VMs und LXCs sind auf den MiniPCs und sollen nächtlich synchronisiert werden. Ich habe gelesen das wäre möglich, finde aber jetzt natürlich nichts dazu.

Ja, das funktioniert so. Relevante Lektüre:
https://pve.proxmox.com/wiki/Storage_Replication
https://pve.proxmox.com/wiki/High_Availability

Für HA braucht man aber zwingend einen dritten Knoten, da man sonst ein Splitbrain-Szenario riskiert (sehr grob erklärt: Knoten im Cluster müssen regelmäßig ein Quorum bestimmen, dafür braucht es Mehrheiten, die ein Zwei-Knoten-Cluster nicht haben kann).
Glücklicherweise braucht es dafür aber nicht zwingend einen dritten ProxmoxVE-Knoten, man kann auch ein Device außerhalb des Clusters dafür nehmen, z.B. einen PI oder eine VM auf einen Server, der NICHT Teil des Cluster ist:
https://pve.proxmox.com/wiki/Cluster_Manager#_corosync_external_vote_support

Selbst als docker-container geht: https://forum.proxmox.com/threads/how-to-run-a-qdevice-in-docker.141679/

Man könnte also das auch in einen schlanken Container oder kleine VM (meine qdevice-VM hat aktuell 512 MB RAM und vermutlich auch weniger gehen) auf dem NAS-Knoten laufen lassen. So ein qdevice braucht auch nicht die gleiche Latenz wie die normalen corosync-Knoten, braucht also auch kein extra Netzwerk, solange die corosync-Knoten nur überhaupt darauf zugreifen können.

Grösserer Platzbedarf (alles was unter Datengrab fällt) soll von den MiniPCs auf dem NAS abgelegt werden und im Failover Szenario soll der ersetzende MiniPC da weiter machen wo der andere aufgehört hat.

Wenn ich dafür keinen Cluster brauche ist das auch absolut ok für mich, ich dachte nur das wäre unabdingbar?

Die USB-Ethernet-Adapter Idee finde ich fantastisch, vielen Dank!

Code:
Braucht dann halt noch einen dezidierten Switch, aber das muss ja alles keine teure Hardware sein, im Clusternetz hängen ja eh nur die Clusterknoten (braucht also keinen Support für VLANs o.ä.).
Wieso bräuchte ich einen dedizierten Switch? Hat das was mit der Latenz zu tun oder mit den Bandbreiten-Spikes?

Naja, wie verbindest du drei Knoten, sodass sich alle erreichen können, wenn du keinen Switch hast? Für ein mesh-Netzwerk bräuchtest du ja pro Knoten zwei Netzwerkkarten (siehe: https://pve.proxmox.com/wiki/Full_Mesh_Network_for_Ceph_Server das beschreibt so ein Setup für Ceph, gilt so aber auch für corosync). Wenn du dagegen nur zwei Knoten im corosync-netzwerk hast, dann braucht es auch keinen Switch ;)

Was mir noch unklar ist, wie du deine NAS und VMs/LXCs sicherst. Ich selbst fahre da zweigleisig (näheres ist hier beschrieben: https://forum.proxmox.com/threads/o...upt-ihr-eure-vms-und-files.174054/post-809135 ), indem ich die Daten auf der NAS unabhängig von den VMs und lxcs sichere. Genauer gesagt backupe ich die VMs und lxcs in einen lokalen ProxmoxBackupServer, dessen Backups wiederum auf einen PBS auf einen vserver gesichert werden. Für die Daten auf der NAS und Notebook nutze ich restic.

In deinen Fall wäre es eine Überlegung, deinen NAS-Knoten auch für den ProxmoxBackupServer zu nutzen. Entweder indem du ihn als VM einrichtest oder (falls du trotzdem ProxmoxVE als Basis nutzen möchtest) parallel zum PVE. Letzteres hätte den Vorteil, dass man (bei knappen Ressourcen) das qdevice auch in einen Debian-Container laufen lassen könnte. Die Idee habe ich vom Proxmox-Entwickler Aaron, der beschreibt sein Setup hier:
https://forum.proxmox.com/threads/planning-advice.169434/#post-791732

So oder so würde ich den NAS-Knoten dann nicht in den Cluster aufnehmen.

Ich würde dann den NAS-Knoten aber trotzdem nicht in den Cluster aufnehmen. Mit den DatacenterManager (der läuft im Cluster) kann man ja im Bedarfsfall auch zwischen dem Cluster und NAS-PVE VMs/Container hin- und herschieben.
 
Warum dann überhaupt ProxmoxVE, wenn der Hauptsinn eine NAS + 1-3 VM ist?
Ich habe tatsächlich anfangs mit dem Gedanken gespielt TrueNas Scale zu installieren, aber:
1) Ich habe keine Erfahrung mit TrueNas, dafür aber mit Proxmox.
2) Ich könnte, wenn Not am Node ist, ein paar LXCs auf das NAS schieben
3) Ich hätte eine dritte Node für das Quorum.
4) Proxmox würde besser zu meiner bestehenden Backupstrategie passen


Was für eine VM und NAS_Software willst du denn einsetzen?
In die VM soll der Arr Stack, während ich an einen lxc mit Cockpit dachte. Eventuell kann ich die Fileshares aber auch "manuell" verteilen. Also mein Plan wäre dem Cockpit-LXC alles an speicher zu geben und das dann im Netzwerk per NFS an andere Nodes zu verteilen und per Samba an Endusergeräte.
Naja, wie verbindest du drei Knoten, sodass sich alle erreichen können, wenn du keinen Switch hast?
Ich habe ja einen Switch, aber ich dachte du meinst mit dediziert einen Switch der nur fürs Corosync-Netzwerk ist?

Ich versuche mal kurz zusammenzufassen wie ich dich verstanden habe: Ich füge das Nas nicht dem Cluster hinzu sondern installiere ein Quorum-Device in einem LXC/VM auf dem Nas. Die beiden Mini-PCs kommen in den gleichen Cluster.
Wegen dem Qdevice brauche ich kein extra Netzwerk/VLAN zu erstellen und dementsprechend auch keine USB-Ethernet-Adapter, richtig?

Was mir noch unklar ist, wie du deine NAS und VMs/LXCs sicherst.
Der eine Knoten den ich habe wird bisher mittels PBS auf einen S3 der bei Hetzner steht gesichert.

it den DatacenterManager (der läuft im Cluster) kann man ja im Bedarfsfall auch zwischen dem Cluster und NAS-PVE VMs/Container hin- und herschieben.
Ich würde den DatacenterManager dann auf einem der MiniPCs installieren und könnte von dort aus LXCs/VMs hin und her verschieben. Ich könnte so allerdings nichts auf das Nas schieben, wenn ich Bedarf hätte, oder?
Am meisten interessiert mich das automatische Failover, geht das in dem Szenario auch?

Vielen VIELEN Dank noch mal für deine Hilfe!
 
Ich habe tatsächlich anfangs mit dem Gedanken gespielt TrueNas Scale zu installieren, aber:
1) Ich habe keine Erfahrung mit TrueNas, dafür aber mit Proxmox.
2) Ich könnte, wenn Not am Node ist, ein paar LXCs auf das NAS schieben
3) Ich hätte eine dritte Node für das Quorum.
4) Proxmox würde besser zu meiner bestehenden Backupstrategie passen

Das sind alles gute Gründe, ich habe halt nachgefragt, weil viele Leute einfach nur ein paar docker-Container, ein NAS und HomeAssistant betreiben wollen und Proxmox nehmen, weil sie das in einen Video gesehen haben. Da frage ich dann gerne nach,
In die VM soll der Arr Stack, während ich an einen lxc mit Cockpit dachte. Eventuell kann ich die Fileshares aber auch "manuell" verteilen. Also mein Plan wäre dem Cockpit-LXC alles an speicher zu geben und das dann im Netzwerk per NFS an andere Nodes zu verteilen und per Samba an Endusergeräte.

Kann man so machen, oder ein anderes lxc fürs Filesharing nehmen (etwa turnkey fileserver oder die zamba-toolbox, die erlaubt auf ZFS-Snapshots über Windows "Vorherige Versionen"-Features zuzugreifen, danke an @UdoB für den Tipp https://github.com/bashclub/zamba-lxc-toolbox ).
Ich versuche mal kurz zusammenzufassen wie ich dich verstanden habe: Ich füge das Nas nicht dem Cluster hinzu sondern installiere ein Quorum-Device in einem LXC/VM auf dem Nas. Die beiden Mini-PCs kommen in den gleichen Cluster.
Wegen dem Qdevice brauche ich kein extra Netzwerk/VLAN zu erstellen und dementsprechend auch keine USB-Ethernet-Adapter, richtig?
Korrekt, die brauchst du für die Mini-PCs. Und da nur die beiden miteinander reden müssen, brauchst du dann auch keinen Switch für das Corosync-Netzwerk. Wenn der Cluster dagegen aus drei Knoten bestehen soll, dann hättest du einen eigenen Switch für das Corosync-Netzwerk gebraucht (oder halt ein mesh-Setup fahren müssen, was weitere USB-Adapter bedingt hätte).
Auf dem NAS könntest du dann halt noch den PBS betreiben, entweder paaralel zum PVE, als LXC oder als eigene VM.
Jede Variante hat ihre Vor- und Nachteile
- Paarallel: Direkter Zugriff auf ZFS und die Daten, beste Performance, dafür können PVE und PBS nicht mehr unabhängig von einander aktualisiert werden. Nach den Release von PVE9 hat es noch etwa einen Monat gedauert, bis auch PBS ein neues Release hatte, erst dann konnte man aktualisieren. Und weiterer Nachteil: Der Backupserver und der Host sind nicht von einander getrennt, kommt also ein Angreifer ins eine rein, tut er es auch ins andere. Bei einen isolierten PBS wäre der Schaden also begrenzter.
- Als lxc: Ist offiziell eigentlich nicht vorgesehen, technisch aber natürlich möglich. Vorteil: Isolierung vom Host, bessere Performance als mit VM, ZFS datasets als Datastores möglich.
- Als VM: Beste Isolierung, erlaubt Updates unabhängig vom Host, der Datastore ist dann aber eine eigene virtuelle Platte, auf die nicht direkt zugegriffen werden kann, bei den anderen Varianten ist der Zugriff auf das ZFS Dataset mit den Datastore weiterhin möglich. Man könnte allerdings auch den Datastore per NFS vom Fileserver-LXC einbinden. Eigentlich werden Netzwerkfreigaben als Speicher für PBS-Datastores nicht empfohlen (da deutlich langsamer, da sie größeren Overhead haben, selbst wenn sie auf den gleichen Host liegen), aber wenn es für deine Zwecke reicht, ist das ja ok ;)

Was du dir noch überlegen könntest, ob du deinen HDD-Pools noch zwei kleinerere SSDs als special device hinzufügst:
https://pve.proxmox.com/wiki/ZFS_on_Linux#sysadmin_zfs_special_device

Das wird dann genutzt, um die Metadaten und (optional) kleine Dateien zu speichern, das hilft auch bei der Performance.
Ich würde den DatacenterManager dann auf einem der MiniPCs installieren und könnte von dort aus LXCs/VMs hin und her verschieben. Ich könnte so allerdings nichts auf das Nas schieben, wenn ich Bedarf hätte, oder?

Doch klar, mit dem DatacenterManager geht das, der kann auch zwischen verschiedenen Clustern oder einzelnen Knoten hin- und her schieben.
Am meisten interessiert mich das automatische Failover, geht das in dem Szenario auch?
Mit dem Datacenter-manager? Nein, das nicht. Man könnte mit pve-zsync aber auch die VMs replizieren, dann muss man die aber von Hand starten:
https://pve.proxmox.com/wiki/PVE-zsync

Für deinen Usecase finde ich den Cluster aus zwei Mini-PCs plus die NAS als qdevice schon ok.
 
  • Like
Reactions: UdoB
Das sind alles ziemlich gut assehende Tools für NFS und Samba, vielen Dank! Wir sind ein Haushalt ohne Windows, aber ich denke Zamba sieht am besten aus.

Korrekt, die brauchst du für die Mini-PCs. Und da nur die beiden miteinander reden müssen, brauchst du dann auch keinen Switch für das Corosync-Netzwerk.
Hier stehe ich leider auf dem Schlauch. Brauche ich die USB-Adapter oder nicht? Ich habe oben "brauche keine Adapter, richtig", deswegen verwirrt mich das "Korrekt" ein wenig.
Ich habe einen Switch, nur falls ich das falsch dargestellt habe.
Wenn ich kein automatisches Failover habe und die Daten der VMs/LXCs automatisch gesynct werden, brauche ich dann überhaupt ein extra Corosync-Netzwerk? Sehe gerade nicht den nutzen eines Clusters wenn ich eh alles entweder ohne (sync) oder manuell machen muss (failover).

Mein PBS läuft im Moment in einem LXC und nutzt den verfügbaren SSD Speicher des LXX als cache. Ich wollte anfangs auch für genau so gelegenheiten noch zwei SSDs im mirror benutzen, aber ganz im Ernst, bei den aktuellen Preisen überlege ich lieber zweimal ob das sein muss. Leider.

Nochmal vielen Dank! :)
 
Moin,

ja sobald du mehr als einen PVE-Host clusters benötigt du eine tadellos laufende Corosync kommunikation. Darüber wird das quorum gebildet und entschieden welcher Host in das Proxmox Cluster Filesystem schreiben darf, um Daten mit den anderen Hosts auszutauschen. (Eine vereinfachte Darstellung)

Die Corosync Kommunikation ist immer Latenz anfällig (5ms).
Die Idee mit zwei Hosts und USB-Adaptern (und/oder USB-Kabeln) ist das man das Kabel direkt von Host 1 zu Host 2 stecken kann ohne über einen Switch zu müssen. Das ist allerdings suboptimal, denn in einem 2 Node Cluster gibt es keine Möglichkeit bei Ausfall ein sinnvolles Quorum zu bilden. Ein Node ohne Quorum wird sich selbst fence. Daher benötigt man dann das Quorums device, was in deinem Setup auch auf der NAS laufen kann. Das bedeutet dann das weitere Kabel notwendig sind. (Wie in einem full meshed cluster - Da ist jeder Node direkt via Kabel mit jedem anderen Node verbunden - 3 Node Cluster = 2 Kabel zu den anderen Nodes (Funktionstrennung für Corosync + ggf. Ceph nicht berücksichtigt))

Um zu deiner ursprünglichen Frage zurück zu kehren. Vlans können in dem Setup ggf. Sinn ergeben, falls dein Switch Priority Vlans unterstützt. (Dies sollte dann auch auf den Hosts konfiguriert werden) - Ich weiß von jemandem der das Setup notgedrungen verwendet, aber mit 2*100G im Bond. Ob das bei niedrigerer Bandbreite sauber funktioniert, würde ich mir vorher im Lasttest anschauen.


---
Trennung:
Das Migrationsnetzwerk, damit auch das Vlan, lässt sich in den Datacenter Einstellungen konfigurieren. (Ansonsten greift die IP-Adresse, welche die Namensauflösung des Hosts liefert. - sinnvoller Weise konfiguriert in der /etc/hosts )

---
Trennung:

In dem Setup mit der NAS, als Shared Storage, ist das HA eingeschränkt, wenn die NAS ausfällt.

Ich weiß die ist vermutlich schon da, aber bei einem grüne Wiese Projekt, wäre für kritisches HA Ceph im Mesh - ggf. unter Einsatz mit USB-Dongles - eine einfache und recht stabile Lösung oder ein Single Node mit Backup Konzept und Cold-Standby Hardware.

Was auch ein guter Tipp für das "produktive" Homelab ist, ist in (gerne auch gute gebrauchte) Enterprise Hardware zu investieren, statt im Consumerbereich ggf. via Ali Express zu shoppen und sich dann über wackeligen Netzwerkchips zu ärgern. Ein Supermicroboard mit Atom kostet zwar ~300€, aber mit ECC-RAM und relativ gutem Schutz vor gefälschten Chips. Es gibt da auch einige passiv gekühlte Plattformen, die sich gut eignen.

Der letzte Absatz ist nur meine persönliche Meinung :)
 
Last edited:
  • Like
Reactions: UdoB
Je mehr ich lese desto mehr kehre ich von der Cluster Lösung ab und glaube, dass es in meinem Fall mehr Sinn macht die 3 Nodes einzeln zu verwalten.
Wenn ich es richtig verstehe würden 2 MiniPCs im Cluster plus qdevice aber keinen automatischen Failover machen (oder ich habe das falsch verstanden) und dann sehe ich nicht wieso ich den Cluster überhaupt bräuchte? LXCs/VMs kann ich ja auch manuell hin und her schieben.
Oder übersehe ich etwas?
 
Last edited:
Ah, ok, danke!

Zusammenfassend: Ich sollte die zwei MiniPCs mit einem USB Ethernet adapter miteinander verbinden. Ich kann sie nur an meinen Switch anschliessen falls der Switch Priority VLANs unterstützt.
Failover geschieht automatisch, aber natürlich nur für die beiden MiniPCs. Wenn das NAS nicht mehr will habe ich Pech gehabt.
Was würde denn mit den VMs/LXCs auf den MiniPCs geschehen wenn das NAS plötzlich nicht mehr verfügbar ist?
Die VMs/LXCs die speicher brauchen werfen natürlich Fehler, aber was ist mit denen die keinen Speicher vom NAS gebraucht haben? Laufen die normal weiter? Oder gibt es da Probleme weil das qdevice fehlt?


Was wenn ich jemals einen weiteren MiniPC hinzufügen möchte? Das geht nur wenn mein Switch priority vlans unterstützt oder ich jede Node mit jeder anderen meshe, korrekt?

Vielen Dank alle!
 
Daher benötigt man dann das Quorums device, was in deinem Setup auch auf der NAS laufen kann. Das bedeutet dann das weitere Kabel notwendig sind. (Wie in einem full meshed cluster - Da ist jeder Node direkt via Kabel mit jedem anderen Node verbunden - 3 Node Cluster = 2 Kabel zu den anderen Nodes (Funktionstrennung für Corosync + ggf. Ceph nicht berücksichtigt))
Das qevice hat allerdings geringere Lazenzanforderungen als das eigentliche Cluster-Netzwerk:
The only requirements for the external host are that it needs network access to the cluster and to have a corosync-qnetd package available. We provide a package for Debian based hosts, and other Linux distributions should also have a package available through their respective package manager.

Note Unlike corosync itself, a QDevice connects to the cluster over TCP/IP. The daemon can also run outside the LAN of the cluster and isn’t limited to the low latencies requirements of corosync.

https://pve.proxmox.com/wiki/Cluster_Manager#_corosync_external_vote_support

Das kann dann zum Beispiel so aussehen:
Code:
                                          ___________
                                         |===========|
                                         |           |
                                         |    NAS    |
                                         |___________|
                                               o
                                               |
                                               |
                                               |
                                       _______...______
                                      [ Switch/Router ]
                                      [_..._______..._]
                                         o         o
                                         |         |         
                        |----------------|         |---------|
                   _____o_____                          _____o_____
                  |===========|                        |===========|
                  |           |                        |           |
                  | Mini-PC1  |o--------USB-LAN-------o| Mini-PC2  |
                  |___________|                        |___________|

Also: Die beiden Mini-PCs bilden miteinander ein corosync-netzwerk über die USB-Adapter. Für den Verkehr mit den Rest des LANs inklusive des kombinierten NAS/qdevice wird das normale LAN genutzt (das gleichzeitig auch ein redundantes Netzwerk für corosync anbietet, falls die USB-Adapter mal den Dienst verweigern...).

Doch würden sie, wenn der shared storage dann noch verfügbar ist. Wenn das NAS mit dem Q-device weg ist, sind auch die VMs weg. :)

Das ist so pauschal auch nicht ganz richtig, bzw. es kommt darauf an, was man unter shared storage versteht. Will man die Images für die VMs und lxcs auf der NAS lagern? Dann ist die Aussage korrekt, aber warum sollte man das tun? Nutzt man dagegen Storage Replication ( https://pve.proxmox.com/wiki/Storage_Replication), dann ist das NICHT der Fall, nur kann es dann halt zu einen split-brain Szenario kommen. L
Zusammenfassend: Ich sollte die zwei MiniPCs mit einem USB Ethernet adapter miteinander verbinden. Ich kann sie nur an meinen Switch anschliessen falls der Switch Priority VLANs unterstützt.
Ich würde den Switch (siehe Schaubild oben) ganz aus der Verbindung für die USB-Adapter rausnehmen, ist nur eine völlig unnötige Fehlerquelle, die bei zwei Knoten gar nicht benötigt wird.

Failover geschieht automatisch, aber natürlich nur für die beiden MiniPCs. Wenn das NAS nicht mehr will habe ich Pech gehabt.
Auch dann wird es erstmal weiter laufen, es kann halt zu einen split-brain-Szenario kommen. Aber die Idee ist ja eigentlich, dass einen das monitoring über den Ausfall der NAS informiert und man dann das rechtzeitig fixen kann, bevor es Probleme gibt ;)
Was würde denn mit den VMs/LXCs auf den MiniPCs geschehen wenn das NAS plötzlich nicht mehr verfügbar ist?

Kommt darauf an, ob auf der NAS "nur" Anwendungsdaten (also z.B. eine Medienbibliothek für plex oder jellyfin) liegen oder auch die Images der VMs oder LXCs. Sind es nur Anwendungsdaten, dann kann die jeweilige VM/LXC logischerweise nicht mehr darauf zugreifen, wird aber sonst weiterlaufen (ggf. mit komischen Fehlern). Liegen auch die Images da, dann schaut das natürlich anders aus.

Aber im Ernst: Die ZFS-Replikation findet im Default alle 15 Minuten statt. Wenn einen der Verlust von 15 Minuten Daten zu fiel ist, kann man das auch auf eine Minute reduzieren oder (bietet sich für so sachen wie DNS-Server/pihole etc) an auch auf mehrere Stunden hochsetzen. Für ein Szenario wie deins reicht das in Kombination mit der NAS und dem qdevice plus ProxmoxBackupServer auf der NAS meines Erachtens nach vollkommen aus.
Ich mache das selbst so, obiges Schaubild ist mein aktuelles Heimnetz (es fehlen natürlich noch die Clients und envtl. weitere Geräte).
Die ZFS-Replikation hat auch den Vorteil, dass dann die NAS nicht der single-point-of-failure ist (außer für die Dienste, deren Daten dort gespeichert sind). Ein Dienst, der die NAS nicht braucht, der kann dann ja trotzdem laufen. Außerdem wird der Zugriff auf VM/lxc-Images auf der NAS immer lahmer sein als lokal über ZFS.

Die VMs/LXCs die speicher brauchen werfen natürlich Fehler, aber was ist mit denen die keinen Speicher vom NAS gebraucht haben? Laufen die normal weiter? Oder gibt es da Probleme weil das qdevice fehlt?

Die werden erstmal weiterlaufen, aber es kann halt sein, dass es zu einen split-brain-Szenario kommt, weil das qdevice zum Bilden einer Mehrheit fehlt.
Das heißt nicht, dass es nutzlos ist: Ohne qdevice würde bei einen Ausfall eines Knotens der ganze Cluster in einen Fehlerzustand laufen, mit dem qdevice kann halt alles (bei konifigurierter Hochverfügbarkeit) auf dem anderen Knoten weiterlaufen und die Dienste laufen weiter, bis man den zweiten Knoten wieder am Start hat. Ist auch sehr praktisch, um einen Knoten zu warten, ohne dafür eine Downtime der Dienste zu haben :)
Wenn ich es richtig verstehe würden 2 MiniPCs im Cluster plus qdevice aber keinen automatischen Failover machen (oder ich habe das falsch verstanden) und dann sehe ich nicht wieso ich den Cluster überhaupt bräuchte? LXCs/VMs kann ich ja auch manuell hin und her schieben.
Doch würden sie, sofern du a) Replikation für sie aktiviert hast (braucht ZFS) oder deren Images auf einen shared storage (wie der NAS) liegen und b) du die Hochverfügbarkeit für die jeweilige VM und LXC aktiviert hast. Dann sollte bei einen Ausfall die VM/der Contaienr automatisch mit den letzten gesyncte Stand auf dem anderen Knoten gestartet werden. Der Wartungsmodus funktioniert ähnlich, nur dass dort noch eine Migration stattfindet, sodass die VM auf den anderen Knoten garantiert den aktuellen Stand hat.
Mit den Datacentermanager könntest du halt noch zwischen dem Cluster und dem NAS-PVE hin- und her migrieren, nur halt ohne automatisches failover..

Backup braucht man natürlich trotzdem noch, hast du dir da schon was zu überlegt?. Selbst wenn auf der NAS das Backup des Clusters liegt, wo liegt dann das Backup der NAS? Ich habe dafür einen weiteren Mini-PC im LAN, der jede Nacht automatisch gestartet wird und sich die Daten von meinen NAS-Knoten zieht. Zusätzlich nutze ich einen vserver als offsite-Backupserver für die vm und lxcs und eine hetzner-storagebox für die Datenbestände der NAS.
Wenn du dir das Geld für die Cloud sparen willst, könntest du auch eine per USB angeschloßene Festplatte nehmen, die du an einen vertrauenswürdigen Ort außerhalb deiner Wohnung lagerst und nur gelegentlich zum syncen zu dir holst.
 
  • Like
Reactions: UdoB and bl1mp
Indeed, du hast recht mit dem Setup mit Qdevice + ZFS Replikation. Das sollte funktionieren.

Meine Annahme war Shared Storage = NAS, um sich den zusätzlichen Disks in den PVE Hosts zu sparen und wegen der potenziellen ECC-RAM Thematik bei den MiniPCs. Allerdings könnte der Storage auf den OS-Disks zumindest für ein paar Basis VMs/LXCs reichen. :)