Ich suche nach einer verteilten Dateisystemlösung/einem Netzwerkdateisystem, das im folgenden Szenario verwendet werden kann:
- Ich habe einen Docker Swarm mit vielen Hosts, aber jeder Host ist im Wesentlichen in sich geschlossen und sieht nicht anders aus als jeder andere Host. Wir verwenden sie nur zur Skalierung. Das bedeutet, dass auf jedem Host alle Worker ausgeführt werden, die für die Funktion des Systems erforderlich sind, und idealerweise wird eine Aufgabe, die in das System eintritt, vollständig auf dem Host ausgeführt, der sie zuerst gestartet hat.
- Die Verarbeitung einer Aufgabe erfolgt in mehreren Schritten. Jeder Schritt erzeugt eine große Datei im Bereich von 1-10 GB. In erster Linie arbeiten die Mitarbeiter auf jedem Host nur an Dateien, die bereits lokal gespeichert sind.
- Manchmal kann es jedoch vorkommen, dass ein Host überlastet ist und ich möchte, dass Worker auf einem anderen Host die restlichen Verarbeitungsschritte übernehmen. Um dies zu erreichen, müssen die Dateien in einem gemeinsam genutzten Volume gespeichert werden, das die Worker auf anderen Hosts transparent verwenden können, um auf Dateien zuzugreifen, die auf einem anderen Host gespeichert sind.
Mit anderen Worten: Jeder Host hat an einer beliebigen Stelle dasselbe „Netzwerkvolume“ gemountet, und es enthält einige Dateien, die tatsächlich auf dem aktuellen Host gespeichert sind (diese Dateien sind in erster Linie relevant), und einige Dateien, die auf einem anderen Host gespeichert sind. Allerdings greifen Arbeiter meistens (90-95 % der Fälle) auf Dateien zu, die lokal auf ihrem Host gespeichert sind.
Ich brauche keine Replikation (Dateien sind nur für 30-60 Minuten relevant und danach werden sie sowieso nicht mehr benötigt) und ichnichtmöchten einen zentralen Speicher.
Der Durchsatz im System wird eher in Minuten pro Task und nicht in Tasks pro Sekunde gemessen. Es gibt wenige große Dateien statt vieler kleiner Dateien. Außerdem werden Dateien einmal geschrieben und nur ein- oder zweimal gelesen.
GlusterFS
Gibt es dafür eine gute Lösung? Ich habe mir , EdgeFS
, InterPlanetary File System
, und einige andere angesehen Ceph
, aber keines schien die richtige Wahl zu sein.
Antwort1
Sie können dies mithilfe von Docker Engine-Plugins erledigen. Dabei handelt es sich um Volume-Plugins, die von der Docker-Engine unterstützt werden.
- Plug-In für Azure File Storage
- BeeGFS Volumen Plugin
- Blockbridge-Plugin
- Contiv Lautstärke-Plugin
- Konvoi-Plugin
- DigitalOcean Block Storage-Plugin
- DRBD-Plugin
- Flocker-Plugin
- Fuxi Lautstärke-Plugin
- GCE-Docker-Plugin
- GlusterFS-Plugin
- Horcrux Lautstärke-Plugin
- HPE 3Par Volume-Plugin
- Plugin „Unendliches Volumen“
- IPFS-Volumen-Plugin
- Keywhiz-Plugin
- Lokales Persist-Plugin
- NetApp-Plugin (nDVP)
- Netshare-Plugin
- Nimble Storage Volume-Plugin
- OpenStorage-Plugin
- Portworx Volume-Plugin
- Quobyte Volumen Plugin
- REX-Ray-Plugin
- Virtuozzo Storage und Ploop-Plugin
- VMware vSphere-Speicher-Plug-In
Weitere Einzelheiten finden Sie untenVerknüpfung