DRBD vs. GlusterFS für die Replikation

7

Ich muss eine Lösung erstellen, um interne Git-Repositorys zu hosten. Es muss Hunderttausende (oder mehr) Repositorys unterstützen.

Ich plane, mehrere "dumme" Server mit einem gemeinsam genutzten Speicher zu verwenden. Wenn also ein Client versucht, auf ein Repository zuzugreifen, wird dieser vom Load-Balancer auf einen der verfügbaren Server umgeleitet. Jede Änderung am Repository wird auf allen Knoten repliziert.

Mein erster Gedanke war, GlusterFS dafür zu verwenden, aber ich habe gelesen, dass es mit kleinen Dateien nicht gut funktioniert. Ich denke auch daran, alles selbst mit DRBD zu replizieren, aber dies erfordert mehr Setup und scheint im Vergleich zu GlusterFS komplizierter zu sein.

Welcher der beiden bietet bessere Leistungen? Grundsätzlich ist das Problem, das ich zu lösen versuche, dass ich möchte, dass andere die Daten weiterhin bereitstellen können, wenn einer der Server ausfällt.

Gilad Novik
quelle

Antworten:

5

Dies ist ein klassischer Scale-Out-Anwendungsfall, und IMO GlusterFS sollte genau das Richtige für Sie sein. Sie können es versuchen - rufen Sie einfach ein paar VMs auf, richten Sie ein paar Bausteine ​​für die Repository-Speicherung ein und führen Sie einen Stresstest durch.

DRBD ist hier sowieso keine Option - es skaliert nicht. Wenn überhaupt, würde ich mir andere Objektspeicherprojekte ansehen (z. B. Swift), wenn Gluster nicht gut genug funktioniert, aber keines davon extrem leistungsorientiert ist

dyasny
quelle
1
Es scheint, als würde GitHub DRBD für ihren Speicher verwenden (ich denke, es skaliert), aber es schien eine übertriebene IMO zu sein, und ich bevorzuge eine verteilte Dateisystemlösung, bei der alles "einfach funktioniert".
Gilad Novik
Die Tatsache, dass jemand es benutzt, bedeutet nicht, dass es skaliert. Es bedeutet nur, dass sie einige Failover-Cluster mit DRBD haben, was nicht dasselbe ist wie mehrere aktive / aktive Dateizugriffsknoten, die Sie mit gluster / swift / ceph / etc erhalten können
dyasny
Verringert sich die Leistung von DFS mit zunehmender Anzahl von Knoten?
CMCDragonkai
Was hat DFS mit Gluster / Drbd zu tun?
Dyasny
4

Ich hatte ein ähnliches Setup für Cyrus Mail-Server, bei denen Gluster bei Stresstests nicht in der Lage war, die Last zu bewältigen. wir haben uns ursprünglich für gluster entschieden, weil es einfach war, aber wieder zu drbd wechseln musste. Wie dyasny hervorhob, ist drbd activs / active cfg jedoch nicht ratsam (ganz zu schweigen von den Schmerzen). Wenn Sie alle Server benötigen, um den gemeinsam genutzten Speicher gleichzeitig bereitzustellen, ist drbd keine Option. Eine andere Sache, die Sie sich ansehen möchten, ist clvmd mit Lock Manager. lvm2 unterstützt jetzt den RAID-Typ lv und verwendet zu diesem Zweck Man-Code. Dies kann eine Option sein, die mit dem entsprechenden Dateisystem gemischt wird (einige Cluster-fähige, falls erforderlich). Ich habe es jedoch nie selbst in der Produktion getestet, sondern nur als PoC.

alxgomz
quelle
1
Nur eine Sache, die ich hinzufügen möchte: Cluster hat mein Setup nicht bewältigt, aber denken Sie daran, dass es sich um einen 2-Knoten-Cluster handelt. Gluster hätte sich mit mehr Knoten besser verhalten.
Alxgomz
3

Das Problem mit Gluster ist hauptsächlich die Latenz zwischen den Knoten. Ich würde Ihnen raten, es auszuprobieren und zu prüfen, ob es Ihre Arbeitslast bewältigt. Wenn Ihre Server leistungsfähig genug sind und eine schnelle Verbindung haben, sollten Sie eine ziemlich gute Leistung erzielen. Vielleicht möchten Sie auch den eingebauten NFS-Server ausprobieren, der meiner Erfahrung nach kleine Dateien etwas schneller verarbeitet.

Aber wenn Sie Ihre Lösung so schnell wie möglich benötigen, ist GlusterFS wahrscheinlich nichts für Sie. Andere Optionen wären kommerzielle Produkte wie Git Clustering (haben das allerdings noch nicht getestet) oder Sie könnten Ihre eigene Lösung mit kostenlosen Tools wie gitmirror erstellen .

Izzy
quelle
Eigentlich ist Leistung nicht meine oberste Priorität (einige Sekunden sind noch in Ordnung), aber Stabilität und Replikation sind es. Auf welchen NFS-Server haben Sie sich bezogen?
Gilad Novik
GlusterFS verfügt über einen integrierten NFS-Server . Die Leistung ist besser, aber Sie müssen das Failover auf den Clients selbst durchführen. Andererseits ersparen Sie sich die Installation des FUSE-Clients für den Zugriff auf die GlusterFS-Server.
Izzy
2

Wenn Sie Gluster erwägen (die in meiner Erfahrung ist verwendbar mit vielen kleinen Dateien , aber YMMV), können Sie auch einen Blick auf Ceph haben http://ceph.com/

thanasisk
quelle
Mein Problem mit Ceph ist, dass es einen Metadatenserver hat, was die Leistung tatsächlich zu beeinträchtigen scheint, da für jeden Datenzugriff auch der Zugriff auf den Metadatenserver erforderlich ist. Liege ich falsch?
Gilad Novik
Metadatenserver können ebenfalls dupliziert werden und auf denselben Knoten wie Objektspeicherserver ausgeführt werden. Sie müssen zu jedem Zeitpunkt Metadaten abrufen, unabhängig davon, ob Sie sie aus dem Objektspeicher oder vom Metadatenserver abrufen, damit die Leistung nicht wesentlich beeinträchtigt wird. Ich habe nichts davon ausprobiert.
Wouter Verhelst
0

Ich würde auch empfehlen, Glustet am einfachsten und am schnellsten einzurichten und zu konfigurieren. Auch skaliert es sehr sehr gut. Das Problem ist die Geschwindigkeit, und mein 2c ia, dass Sie zwischen einfacher Konfiguration und einfachem Scale-out wählen müssen, und zwischen einigen technischen Schwierigkeiten (einige ausgefallene drbd / ocfs2 / Glances-Blockspeicher) mit dem Geschwindigkeitsgewinn. Aber ... wie viel Geschwindigkeit gewinnen Sie? Yoi muss einen Stresstest machen und wählen ..

x86fantini
quelle
Angenommen, ich möchte den Speicher erweitern, kann ich der Liste einfach eine weitere VM hinzufügen und diese replizieren oder blockiert sie den Zugriff auf den gesamten Speicher vollständig, bis diese VM für die Verwendung im Cluster bereit ist? Erfolgt die Neuausrichtung asynchron?
Gilad Novik
Gluster ist ziegelbar, so dass jeder neue Stein zu dem einen, einzigen, einzigartigen Stein hinzugefügt wird.
x86fantini
Wenn ich also am schnellsten einen Baustein hinzufügen möchte, ohne den Cluster zu lange anzuhalten, sollte ich nur ein festes Layout verwenden und keine Daten migrieren.
Gilad Novik