Inhaltsverzeichnis des Artikels
A. Ziel
B. Prozedur kurz zusammenge...
C. Auswahl / Konzeption Har...
D. Installation Proxmox auf...
E. Netzwerk-Config
1. Sinnvolle Operationen
2. Aufteilung des Netzwerkv...
a. Ceph INTERNAL
b. Ceph PUBLIC
c. virtual guest traffic
d. VM live-migration traffic
e. corosync traffic
3. Konfiguration des SDN
a. Struktur
4. Schritt für Schritt
a. Netzwerkvorbereitung für...
b. VLAN Problem auf dem Swi...
c. tbc
F. Zeitsynchronisation
1. Welche Zeitserver nehmen?
2. Einrichtung des chronyd
G. Ceph selbst
1. Bestandteile
2. Einrichtung
a. CRUSH & device classes
b. Weiterführende Quellen
B. Prozedur kurz zusammenge...
C. Auswahl / Konzeption Har...
D. Installation Proxmox auf...
E. Netzwerk-Config
1. Sinnvolle Operationen
2. Aufteilung des Netzwerkv...
a. Ceph INTERNAL
b. Ceph PUBLIC
c. virtual guest traffic
d. VM live-migration traffic
e. corosync traffic
3. Konfiguration des SDN
a. Struktur
4. Schritt für Schritt
a. Netzwerkvorbereitung für...
b. VLAN Problem auf dem Swi...
c. tbc
F. Zeitsynchronisation
1. Welche Zeitserver nehmen?
2. Einrichtung des chronyd
G. Ceph selbst
1. Bestandteile
2. Einrichtung
a. CRUSH & device classes
b. Weiterführende Quellen
Proxmox-Cluster mit Ceph
eine integrierte Lösung für Rechenzentrum ohne single Point of failure
A. Ziel
Ziel der Lösung ist
- Cluster
- Proxmox mit - am Ende - high availability für virtuelle Maschinen und Container
- also es gibt keinen single point of failure
- es werden nicht nur die VM und LXC beliebig verschiebbar, sondern auch weitere Komponenten per Software abgebildet:
- das Netzwerk (SDN und damit Verschiebbarkeit eines Routers oder von Maschinen mit Verbindungen in das LAN, die DMZ oder sonstige verbundene Netzwerke)
- Storage, also Speicherplatz für alle Maschinen und Daten, der sich von den Node´s unabhängig macht, was mit Ceph möglich ist
- die gesamte Lösung wird nicht nur einmal für das gesamte Rechenzentrum umgesetzt, sondern für zwei, o dass mit einer einfachen Replikation unter Ceph praktisch die Rechenzentren als Duplikate füreinander dienen können - und bei Ausfall eines Clusters praktisch verzögerungsfreie Umschaltung auf den zweiten Cluster möglich ist
B. Prozedur kurz zusammengefasst:
Folgende Schritte werden hier zusammengefasst:
- Auswahl, Dimensionierung und hardwareseitige Konzeption des Clusters
- Installation Proxmox auf jedem Node
C. Auswahl / Konzeption Hardware
Folgendes beachten:
- da Ceph allein schon Rechenleistung nimmt, sind leistungsfähige Nodes über kurz oder lang unersetzlich; bei 6 OSD braucht man schon 8 Kerne - also kleine Geräte mit 8 Kernen müssen sich noch im Betrieb bewähren und werden sicher nie allzu viele Maschinen beherbergen können;
- Netzwerke müssen schnell und redundant sein; ich will es versuchen mit 2x 10 Gb und 4x 1 Gb je Node das Netzwerk (per SDN) umzusetzen;
D. Installation Proxmox auf den Nodes
Die Installation ist zunächst normal - einige Klippen sollte man aber beachten:
- bei Installationsproblemen mit alter Grafik hilft die verlinkte Information
E. Netzwerk-Config
1. Sinnvolle Operationen
Das Netzwerk ist in einem Cluster mit sehr vielen Netzwerkgeräten verbunden - Switche, Netzwerkkarten, Verkabelung... Vor diesem Hintergrund ist es nützlich, einige Funktionen im Linux Netzwerk Stack zu beherrschen. Die dazu ist hier zu finden.
Das Netzwerk ist in einem Cluster mit sehr vielen Netzwerkgeräten verbunden - Switche, Netzwerkkarten, Verkabelung... Vor diesem Hintergrund ist es nützlich, einige Funktionen im Linux Netzwerk Stack zu beherrschen. Die dazu ist hier zu finden.
2. Aufteilung des Netzwerkverkehrs bei einem Ceph-Cluster
Ein Cluster hängt maßgeblich vom Netzwerk ab. Wir brauchen bei CEPH - gem. Doku von Proxmox - im Zweifel folgende, parallele Netzwerke in der Konfiguration:
Ein Cluster hängt maßgeblich vom Netzwerk ab. Wir brauchen bei CEPH - gem. Doku von Proxmox - im Zweifel folgende, parallele Netzwerke in der Konfiguration:
- sehr schnelles Netzwerk (25+ Gbps) => Ceph INTERNAL
- schnelles Netzwerk (10+ Gpbs) => Ceph PUBLIC
- mit Ceph PUBLIC kann auch verbunden werden virtual guest traffic und VM live-migration traffic
=> aber mit alternativer Lösung auch getrennt sinnvoll?
- normales Netzwerk (1 Gbps) exklusiv für corosync (Kommunikation im Cluster);
- Netzwerk corosync 1 = 10.10.1.0/24 über einen separaten Switch (keinerlei Verbindung mit anderen Netzwerken); immer über ersten NIC der gesteckten Netzwerkkarte
- Netzwerk corosync 2 = 10.10.2.0/24 über den normalen Switch für ganzes Netzwerk auf anderem VLAN (?) als Management aber auf der Netzwerkkarte mit Management (Karte onboard)
3. Konfiguration des SDN
Software Defined Network ist in Proxmox ab V.8.1 standardmäßig aktiv. Es müsste die Konfiguration der Netzwerke wohl erleichtern. Hier werden die essenziellen Informationen gesammelt.
Software Defined Network ist in Proxmox ab V.8.1 standardmäßig aktiv. Es müsste die Konfiguration der Netzwerke wohl erleichtern. Hier werden die essenziellen Informationen gesammelt.
zone <==== vnet <==== subnet
- Zone = Bestimmung der Möglichkeiten / Techniken für Netzwerke. Getrennter Bereich für Netzwerke
- VNet = virtuelles Netzwerk in einer zone
- Subnet = IP range, also wie immer
Sobald ein VNet definiert wurde (unter "datacenter" => "SDN"), dann ist es in jedem node lokal sichtbar - als eine normale Linux bridge und jede VM oder jeder Container kann an diese angebunden werden.
(1) NIC 1 onboard
Da hier auch schon Management und Internet für die nodes läuft, sollte diese Schnittstelle über VLAN laufen. Also:
- VLAN auf eno1 als eno1.11 erstellen (ohne IP oder Gateway)
- auf dem VLAN eno1.11 die Bridge vmbr1 einrichten
- vmbr1 bekommt IP 10.99.1.node
(2) NIC 1 auf PCIe Netzwerkkarte
Hier wird nur eine normale Bridge erstellt - direkt auf dem NIC:
- auf ens1 wird vmbr2 erstellt
- sie bekommt IP 10.99.2.node
b. VLAN Problem auf dem Switch
Zyxel XGS1930 leitete Pakete vom oben genannten VLAN (vmbr1) nicht weiter. Lange suche, inkl. switch-reset brachte eine simple Lösung (da war KI zumindest mittelbar hilfreich) - siehe im Zyxel WebUI:
Zyxel XGS1930 leitete Pakete vom oben genannten VLAN (vmbr1) nicht weiter. Lange suche, inkl. switch-reset brachte eine simple Lösung (da war KI zumindest mittelbar hilfreich) - siehe im Zyxel WebUI:
- Advanced Application => VLAN => VLAN Configuration => VLAN Port Setup
- für die Ports, an die die eno1 angeschlossen ist, bei VLAN Trunking Haken setzen!
Damit ging es schon, zwischen den Nodes über vmbr1 zu kommunizieren. Sollte auch noch VLAN 11 im Switch korrekt konfiguriert werden, dann ist wichtig, dass die Ports, die TX Tagging bekommen (TAG 11, Ports an die eno1 angeschlossen ist, bekommen dort Haken gesetzt) nicht auf Forbidden oder Normal stehen, sondern auf Fixed
Es müssen effiziente und gut funktionierende Zeitserver eingestellt werden, sonst ist die Zeit im Cluster nicht synchron und dies führt zu gravierenden Problemen.
Eine Möglichkeit ist ein leistungsfähiger Router mit Zeitserver (bei uns: OPNsense) - aber Vorsicht bei dessen Virtualisierung - da wir das vorhaben, muss dann wohl ein dedizierter, sparsamer Zeitserver her (Raspi?)
2. Einrichtung des chronyd
Einfach die Datei /etc/chrony/chrony.conf bearbeiten und die Server wie folgt eintragen:
Einfach die Datei /etc/chrony/chrony.conf bearbeiten und die Server wie folgt eintragen:
server 10.1.0.1 iburst prefer
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
# Use Debian vendor zone. => auskommentieren!
# pool 2.debian.pool.ntp.org iburst
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
# Use Debian vendor zone. => auskommentieren!
# pool 2.debian.pool.ntp.org iburst
G. Ceph selbst
- Ceph Monitor (ceph-mon, or MON)
- Ceph Manager (ceph-mgr, or MGS)
- Ceph Metadata Service (ceph-mds, or MDS)
- Ceph Object Storage Daemon (ceph-osd, or OSD)
2. Einrichtung
Die Einrichtung nach Vorbereitung der passenden Netzwerke ist sehr simpel - hier die etwas komplexeren Fragen, nachdem die einfachen Schritte erledigt sind:
Die Einrichtung nach Vorbereitung der passenden Netzwerke ist sehr simpel - hier die etwas komplexeren Fragen, nachdem die einfachen Schritte erledigt sind:
- SATA-SSD-s für Daten nutzen ("mittel-schnell")
- NVME-SSD-s für Betriebssysteme ("sehr schnell")
nutzen. Dafür brauchen wir verschiedene Befehle:
# die Klassen erst mal nur anzeigen:
ceph osd crush tree --show-shadow
# crush rule für die Klasse definieren:
ceph osd crush rule create-replicated <rule-name> <root> <failure-domain> <class>
ceph osd crush tree --show-shadow
# crush rule für die Klasse definieren:
ceph osd crush rule create-replicated <rule-name> <root> <failure-domain> <class>
b. Weiterführende Quellen
Auf jeden Fall sinnvoll: https://forum.proxmox.com/threads/ceph-classes-rules-and-pools.60013/
Auf jeden Fall sinnvoll: https://forum.proxmox.com/threads/ceph-classes-rules-and-pools.60013/
Diese Seite wurde noch nicht kommentiert.