Anfängerfragen Ceph

Gandalf123

Well-Known Member
May 21, 2018
34
1
48
42
Hallo ans Forum,

ich betreibe nun schon länger mehrere Proxmox Cluster mit je 3 Servern, allerdings habe ich bisher immer ein externes NFS Storage verwendet. Nun würde ich gerne bei einem neuen Projekt Ceph mit einsetzen, wo ich nun noch einige Fragen habe und mal eure Erfahrungen hören möchte.

Wie viele Replicas muss ich eigentlich mindestens haben damit ein Server ausfallen darf? 3 oder 2? Ist es dann eigentlich egal welcher der 3 Server ausfällt?

Wie funktioniert denn dann das Update von Proxmox? Wird beim klassischen Update dann auch Ceph mit geupdatet, oder muss hier noch was besonderes beachtet werden damit es zu keinen Inkonsistenzen kommt?

Als Speicher würde ich gerne intern reine SAS SSDs verwenden und fürs Netzwerk dachte ich an 2x 10Gbit als LCAP Bond über 2 gestackte Switche. Ist das eine optimale Lösung oder müssen/sollen 2 getrennte 10G Rings gebildet werden? Wie ist dann da die Performance, werden dann beide Parallel genutzt um auf einen Durchsatz von 20 GB zu kommen?

Danke schon mal für eure Erfahrungen
Gandalf123
 
Moin Gandalf123

Wie viele Server ausfallen dürfen ist nicht ganz so einfach zu beantworten, da das von der Gesamtmenge der Server und von der Struktur des Clusters abhängt.

Ich würde dir nicht empfehlen mit einer Replica < 3 zu fahren. Sollte es mal vorkommen das es zwei verschiedene Versionen eines Objektes gibt, kann Ceph nicht entscheiden welche die korrekte ist. Bei einer Replica von 3 wird die Entscheidung nach Mehrheit gefällt und das abweichende Objekt kann ersetzt werden.

Die Ausfallsicherheit funktioniert so:
Bei Replica=3 wird jedes Objekt 3x gespeichert. Du bildest deine tatsächliche Struktur in Ceph ab. Also wenn du z.B. 6 Server hast die in 3 verschiedenen Räumen oder Gebäuden stehen, teilst du Ceph das entsprechend über die crush map mit.
Das sorgt dann dafür, das sich nie alle Kopien eines Objektes im gleichen Gebäude, oder Raum, oder Server befinden. Sollte dann z.B. ein Server ausfallen gibt es grundsätzlich immer einen Server der eine Kopie hat. Sollte sogar ein Raum oder ein Gebäude mit z.B. 2 Servern darin ausfallen, liegen immer noch 2 weitere Kopien auf Servern in anderen Räumen.
Das funktioniert aber nur, wenn die Struktur des Clusters entsprechend konfiguriert und auch physikalisch umgesetzt wurde. Ceph ist daher so sicher wie deine physikalische Struktur das zulässt. Es kann dann sogar den Ausfall eines ganzen Standortes verkraften.

Bitte achte bei den SSDs darauf das die die Vielzahl an Schreibzugriffen verkraften. Im Ceph Cluster ist ständig was los. Außerdem möchte Ceph gerne direct IO mit der Disk machen. Die Disk sollte daher selbst einen gepufferten Cache verwenden damit bei einem Stromausfall oder einem abrupten Abschalten des Systems die Daten im Cache noch sauber auf dem Datenträger abgelegt werden können. SSDs die so etwas nicht haben, werden in CEPH extrem langsam!

Du kannst dein Ceph-Netz problemlos mit 2x 10GBit LACP uplinks betreiben. Die Verteilung der Daten erfolgt dann so wie es der LACP Standard vorsieht. Wir nutzen LACP Allerdings als Absicherung für die Verbindung zwischen Standorten, damit wir mal ohne Ausfall ein Kabel wechseln können etc.

Für PVE pflegen die Jungs von Proxmox ein eigenes Ceph Repository. Die Updates kommen daher auch mit den normalen PVE Updates rein. Sollte es große Versionssprünge geben mit wichtigen Anmerkungen zum Update Prozess, wird dazu in der Regel eine Update Anleitung veröffentlicht.

Bevor ihr Ceph Produktiv einsetzt, sei dir bitte sicher, dass du mit Ceph sicher umgehen kannst. Es ist sehr wichtig, die Struktur und Funktionsweise von Ceph zu verstehen. Ceph ist sehr komplex und braucht im Fehlerfall einen kühlen Kopf und Routine. Es ist kein Hexenwerk und meiner Meinung nach eines der besten Speichersysteme. Aber man braucht Erfahrung und Übung um sich im Fehlerfall sicher zu fühlen. Du kannst aber alle Eventualitäten sehr gut in einem Testsystem ausprobieren und hier wird dir auch schnell geholfen.

PS: Ceph gewinnt an Performance und Sicherheit, je größer der Cluster wird. Für die Einführung von Ceph kann es daher evtl. besser sein, aus euren bisher getrennten einzelnen Clustern, einen einzelnen größeren zu machen, sofern eure Organisationsstruktur das zulässt.
 
  • Like
Reactions: H4R0 and Alwin
Bitte achte bei den SSDs darauf das die die Vielzahl an Schreibzugriffen verkraften. Im Ceph Cluster ist ständig was los. Außerdem möchte Ceph gerne direct IO mit der Disk machen. Die Disk sollte daher selbst einen gepufferten Cache verwenden damit bei einem Stromausfall oder einem abrupten Abschalten des Systems die Daten im Cache noch sauber auf dem Datenträger abgelegt werden können. SSDs die so etwas nicht haben, werden in CEPH extrem langsam!

Hier sollte man eventuell noch hinzufügen, daß die SSD's im Sinne der Crashresistenz im Falle einer Powerloss Events über PLP verfügen sollten, also einen kleinen energiepuffer in form eines Kondensators innerhalb der SSD, der dafür sorgt, daß inflight Data weggeschrieben werden kann. Das ist das äquivalent zu einer BBU aus Zeiten der Raidcontroller/Harddisks. Das ist aber auch kein Ceph spezifikum sondern trifft auch auf ZFS oder andere Clusterfilesysteme zu. Eigentlich auch alle Filesysteme, nur beim Cluster sind die folgen am gravierendsten.
 
Moin Ingo und alle hier,

das ganze Projekt kam in der Zwischenzeit etwas zum erliegen und jetzt habe ich mal wieder die Planung etwas aufgenommen. Vielen Dank schon mal für die vielen Infos, alllerdings habe ich noch die eine oder andere Frage.

Es soll ein einfacher HA Cluster mit 3 Servern werden. Um nun kein externes Storage mehr zu verwenden würde ich diesmal dann Ceph einsetzen. Auf 2 Servern laufen Windows und Linux VMs welche als HA verfügbar sein sollen, der dritte läuft als Quorom Server mit.

Ich würde in allen 3 Servern Samsung SATA oder SAS Enterprise SSDs verbauen und dann 2/3 Kopien oder 3/3 in Ceph einstellen.

Netzwerkseitig würde ich je Server einen 2x10Gbit LCAP Bond über 2 Switche für das Public Netzwerk vorsehen. Würde es Sinn machen auch 10/20Gbit auf dem Ceph Clusternetzwerk zu verwenden? Welchen Performancevorteil würde das gegenüber 1Gbit bringen? oder reicht hier Gbit aus?

Wegen dem Update war meine Frage wie das dann mit Ceph funktioniert. Verschiebe ich dann einfach die VMs auf Host B und Installiere ich dann auch einfach die Updates und starte den Host neu? Danach muss dann Ceph ja erst wieder einen Sync der Daten machen und dann kann ich den nächsten Host updaten, oder?

Ich habe bisher Ceph aus genau diesem Grund noch nicht eingesetzt, da mir etwas die Erfahrung fehlt. Welche Probleme können denn im Betrieb so aufteten? Defekte SSDs lassen sich ja recht einfach austauschen. Was für weitere Fehler treten denn so in der Praxis auf? Sicher würde ich erst mal das ganze vorher noch ausgiebig testen.

Viele Grüße
Gandalf123
 
Moin Gandalf

Zu deinen Fragen und deinem Plan:
Ich würde 2/3 verwenden. Das beutet es werden drei kopien vorgehalten, aber so lange 2 Kopien gültig sind, ist der Cluster OK und es gibt nur eine Warnung. Wenn du 3/3 verwendest, geht dein Ceph direkt Error und friert das schreiben von Daten in die betroffene Placement Group ein, sobald auch nur eine einzige der drei Kopien beschädigt ist.
Beispiel: Wenn du eine defekte Festplatte austauscht werden alle auf der HDD abgelegten Placementgroups für eine Weile nicht verfügbar sein, wohl aber deren Kopien auf anderen Servern. Wenn du 2/3 nutzt kann Ceph einfach die anderen beiden Kopien nutzen und funktioniert normal weiter, solange 2 Kopien verfügbar sind. Sollte nur noch eine verfügbar sein, wird das schreiben in diese PG unterbunden. Das führt dann bei 3/3 über kurz oder lang dazu, das bei einem simplen HDD wechsel, eine VM die auf Daten innerhalb dieser PG zugreifen möchte, so lange auf den IO warten muss bis die PG wieder genügen Kopien zur Verfügung hat; d.h. bis du deine HDD gewechselt hast und der Cluster die PG "repariert" hat.
3/3 ist also keine gute Idee.

Es ist absoplut Sinnvoll für Ceph mindestens 10Gbit zu verwenden. Insbesondere weil dein Speicher mit den SSDs auch die Bandbreite hergibt. Mit 1GBit wird Ceph zwar funktionieren, aber du wirst die Performance der SSDs bei weitem nicht nutzen können. Selbst mit Festplatten wirst du einen Performance Unterschied feststellen wenn du 10GBit statt 1Gbit nutzt. Das gilt ganz besonders für den Fall das Ceph sich mal reorganisieren muss, z.B. bei einem defekt. Dann wird der gesamte Cluster neu strukturiert und Ceph erzeugt unglaublich viel Traffic in seinem Netz. Je mehr Bandbreite zur Verfügung steht, desto schneller kann Ceph den Reorg abschließen und sich selbst heilen.

Wenn du wegen Updates einen Proxmox Host neustarten musst, verschiebst du einfach die Maschinen auf die anderen Hosts und startest den Server neu. Bei ceph solltest du vorher noch eben das Flag "noout" setzen (geht über die Proxmox GUI) damit der Ceph Cluster nicht während des Reboot anfängt sich zu reorganisieren falls der Reboot mal länger als 5min dauert.
Sobald der Server wieder online ist, erkennt Ceph das die fehlenden Storage Daemon wieder erreichbar sind, synchronisiert alle Änderungen automatisch und nach kurzer Zeit (meist wenige Minuten) ist dein Ceph Cluster wieder auf Status OK. Während der gesamten Zeit hast du keine Einbußen beim Zugriff auf den Storage. Zum Schluss verschiebst du alle Maschinen wieder so wie es für dich sein soll und fertig. Ist eigentlich ziemlich easy.

Probleme die Auftreten können sind z.B. wenn dein Cluster reorganisiert und die Festplatten/SSDs zu arg beschäftigt sind, dann kann es sein das es sehr lange dauert bis eine Anfrage nach Daten aus einer PG beantwortet wird. Das macht sich an sehr träge reagierenden VMs bemerkbar. IO-Wait steigt dann arg an. Teilweise reagieren VMs dann auch gar nicht, bis die Anfrage beantwortet wurde, je nach OS und Software. Das kann man vermeiden indem man bestimmte Werte für die maximale Anzahl an gleichzeitigen Sync Prozessen etc. festlegt. Die Werte hängen aber sehr stark von der verwendeten Hardware und den Controllern ab die man da Einsetzt.
Defekte Festplatten können auch sehr selten mal dafür sorgen, das eine PG mit ner falschen Checksumme auftaucht die nicht aufgelöst werden kann, das kann auch manchmal durch ein defektes RAM Modul verursacht werden. Kriegt man aber in der Regel ganz gut in den Griff und sorgt bei einer Poolsize von 2/3 nicht für Datenverlust.
 
Moin Ingo,

vielen Dank für deine ausführlichen Infos, das klingt ja alles ganz fein. Ich werde jetzt mal mit 3 älteren Rechnern und HDDs testweise einen Ceph Cluster aufsetzen. Dann kann ich mal die Szenarien durchtesten und alles ausprobieren.

Eine Frage zum Netzwerk Design habe ich noch, da habe ich mich glaube ich wieder mal zeimlich schwammig ausgedrückt, das ist so eine Marotte von mir:(. Ceph nutzt doch 2 Netzwerke (Public und Cluster Netz). Soweit ich das verstanden habe werden ja die Daten der VMs und die Replizierung der Daten über das Public Netzwerk übertragen. Hier kommt natürlich nur 10/20 Gbit in Frage. Aber es gibt und noch das Cluster Netzwerk, was genau und wie viele Daten werden dort denn übertagen? Dort werden ja glaube ich die OSDs gesyncht? Hier war nun meine Frage ob es Sinn macht dieses Netz noch einmal als separaten 10/20 Gbit Ring aufzubauen (würde das die Performance und Stabilität noch weiterverbessern) oder reicht ein Ring für beide Netze (Public und Cluster)?, oder reicht für das Clusternetzwerk auch ein Gbit Ring?

Ich freue mich schon auf deine Erfahrungen. Am Wochenende werde ich dann mal mit dem testen unter Gbit beginnen.

Grüße
Gandalf123
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!