Ist es eine gute Idee, Docker-Volumes in glusterfs zu speichern?

24

Derzeit denke ich darüber nach, einige unserer Server und Apps auf eine CoreOS- Umgebung zu migrieren . Eines der Probleme, die ich hier sehe, ist die Verwaltung persistenter Daten, da CoreOS Docker-Volumes nicht verarbeitet, wenn ein Container auf einen neuen Computer verschoben wird. Nach einiger Recherche fand ich glusterFS, das behauptet, ein Cluster-Dateisystem zu sein, das alle meine Probleme lösen könnte.

Meine aktuelle Idee lautet: Ich habe einen glusterFS-Container, der als privilegierter Container auf jedem meiner coreOS-Computer ausgeführt wird und beispielsweise einen Speicher freigibt /mnt/gluster. In meinem Dockerfiles gebe ich an, dass alle meine Volumes auf diesem Pfad bereitgestellt werden sollen.

Das nächste, was ich überlegte, war, welche Container ihre eigenen Volumes beziehen und welche einen gemeinsam nutzen sollten. Zum Beispiel mysqlwürde jeder Container ein eigenes Volume erhalten, da er die Replikation für sich alleine durchführen kann. Damit möchte ich nicht herumspielen. Webserver, die dieselbe Website bedienen, verwenden das gleiche Volume ordnungsgemäß für Inhalte wie "vom Benutzer hochgeladene Bilder" usw., da sie diese Daten nicht replizieren können.

Hat jemand so etwas ausprobiert oder gibt es etwas, das ich verpasst habe?

Martin
quelle
1
Ich habe damit einen Proof of Concept gemacht und kann Ihnen sagen, dass es funktioniert, aber bevor Sie in Gluster springen, stellen Sie sicher, dass Sie das Tuning-Profil verstehen. Aufgrund der Empfindlichkeit von Gluster gegenüber Festplattenlatenzen (ähnlich wie bei etcd) können Anwendungen künstlich langsamer werden, um die Replikation von Dateien zu gewährleisten.
Brian Redbeard
2
Wir arbeiten an einem Tool, mit dem die an Docker-Container angehängten Volumes verwaltet werden. Es heißt "Flocker" und Sie können das Github-Repo hier sehen: github.com/clusterhq/flocker Wir haben derzeit ein Speicher-Backend für ZFS, das die Snapshot-Funktion verwendet, um die Datenmigration zu vereinfachen, aber wir haben auch Pläne für andere Speicher-Backends Ich kann nicht sagen, ob es eine gute Idee ist, Docker-Volumes mit GlusterFS zu mounten, aber ich kann für das gesamte Entwurfsmuster bürgen, dh für den Status, der von einem Docker-Container mit "etwas" generiert wird
Bino Carlos
1
Danke für deine Antwort. Ich habe schon Flocker gesehen und es sieht sehr vielversprechend aus. Haben Sie ein ungefähres Datum für den Coreos-Support oder eine produktionsbereite Version 1.0?
Martin
Ich habe glusterfs für Volumes mit OpenStack verwendet, die zuvor ein ähnliches Setup hatten wie Sie und das hat sich hervorragend bewährt.
Ethode
@Martin Wir (ich arbeite bei ClusterHQ) haben Flocker auf CoreOS mit Amazon EBS. coreos.com/blog/Flocker-on-CoreOS-Linux
Stephen Nguyen

Antworten:

9

Wir haben ein ähnliches Setup mit Atomic ( http://www.projectatomic.io/ ) anstelle von CoreOS auf einem replizierten, nicht verteilten GlusterFS-Speichersystem mit drei Replikat-2-Sets bereitgestellt . Das funktioniert sehr gut.

Sie müssen jedoch einige Besonderheiten von GlusterFS berücksichtigen. Wie Brian bereits erwähnte, legt Gluster größten Wert auf Beständigkeit und Zuverlässigkeit. Je häufiger Änderungen vorgenommen werden, desto häufiger erfolgt die Replikation. Das bringt eine Menge Druck auf Ihr System, und ich meine VIEL.

Stellen Sie sicher, dass Ihr E / A-Subsystem schnell ist (duh, es ist Speicher), und verbinden Sie Ihre Gluster-Knoten mit den schnellsten verfügbaren Netzwerkverbindungen. Wenn Sie nur GBit haben, aggregieren Sie! Last but not least muss das Speichersystem eine ernsthafte Rechenleistung aufweisen. Gluster führt viele Berechnungen durch, um seinen Zustand zu überprüfen. Trotzdem liefert Gluster auch unter hoher Last.

Überdenken Sie Ihre MySQL-Strategie. Gluster übernimmt die Replikation für Sie und sorgt auch für einen Lastausgleich bei der Auslieferung. Es könnte tatsächlich schneller sein, Gluster zu verwenden.

Bjanssen
quelle
5

Die Verwendung von glusterfs hängt vom verwendeten Speicher-Backend ab. Als Cluster-Dateisystem ist es vorgesehen, physischen Speicher zu gruppieren, sodass er als ein großes kontinuierliches Volume angezeigt wird. Diese offizielle Kurzanleitung enthält eine gute Erklärung des Vorgangs.

Falls Ihr Setup zwei oder mehr separate Back-End-Speicherserver oder ähnliches verwendet, um alle Docker-Volumes zu speichern, bietet die Verwendung von glusterfs oder einem ähnlichen parallelen Dateisystem möglicherweise erhebliche Leistungsvorteile. In diesem Fall können Sie auch Lustre verwenden , das in der HPC-Community als paralleles Dateisystem weit verbreitet ist.

Trotzdem kann das Optimieren, Debuggen und Konfigurieren von Parallel- / Cluster-Dateisystemen eine zeitaufwändige Aufgabe sein, die viel Fachwissen, Geduld und manchmal die Bereitschaft erfordert, von Anfang an neu zu starten. Es ist ratsam, sicherzustellen, dass die Leistungsvorteile, die ein paralleles Dateisystem bietet, den Aufwand wert sind, der für die Einrichtung und Wartung erforderlich ist.

Matt
quelle