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 Dockerfile
s 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 mysql
wü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?
Antworten:
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.
quelle
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.
quelle