Estoy buscando una solución de sistema de archivos distribuido/sistema de archivos de red que pueda usarse en el siguiente escenario:
- Tengo un Docker Swarm con muchos hosts, pero cada host es esencialmente autónomo y no se ve diferente a cualquier otro host. Solo los usamos para escalar. Eso significa que cada host ejecuta todos los trabajadores necesarios para que el sistema funcione e, idealmente, una tarea que ingresa al sistema se ejecuta completamente en el host que lo inició por primera vez.
- Hay varios pasos para procesar una tarea. Cada paso genera un archivo grande en el rango de 1 a 10 GB. Principalmente, los trabajadores de cada host solo trabajarán en archivos que ya estén almacenados localmente.
- Sin embargo, a veces, un host puede estar sobrecargado y quiero que los trabajadores de otro host se hagan cargo de los pasos de procesamiento restantes. Para lograr esto, necesito que los archivos se almacenen en un volumen compartido que los trabajadores de otros hosts puedan usar de forma transparente para acceder a los archivos almacenados en otro host.
En otras palabras: cada host tendrá el mismo "volumen de red" montado en algún lugar y contiene algunos archivos que en realidad están almacenados en el host actual (estos archivos son principalmente relevantes) y algunos archivos que están almacenados en otro host. Sin embargo, los trabajadores accederán en su mayoría (90-95% de las veces) a archivos que son locales de su host.
No necesito replicación (los archivos solo son relevantes durante 30 a 60 minutos y después ya no son necesarios de todos modos) y específicamentenoQuiere un almacenamiento central.
El rendimiento del sistema se mide más bien en minutos por tarea y no en tareas por segundo. Hay pocos archivos grandes en lugar de muchos archivos pequeños. Además, los archivos se escriben una vez y sólo se leen una o dos veces.
¿Existe una buena solución para esto? Eché un vistazo a , , GlusterFS
y EdgeFS
algunos otros, pero ninguno me pareció la elección correcta.InterPlanetary File System
Ceph
Respuesta1
Puede hacerlo utilizando los complementos de Docker Engine. Estos son complementos de volumen compatibles con Docker Engine.
- Complemento de almacenamiento de archivos de Azure
- Complemento de volumen BeeGFS
- Complemento Blockbridge
- Complemento de volumen contiv
- Complemento de convoy
- Complemento de almacenamiento en bloques de DigitalOcean
- Complemento DRBD
- Complemento flocado
- Complemento de volumen Fuxi
- complemento gce-docker
- Complemento GlusterFS
- Complemento de volumen Horrocrux
- Complemento de volumen HPE 3Par
- Complemento de volumen infinito
- Complemento de volumen IPFS
- Complemento Keywhiz
- Complemento de persistencia local
- Complemento de NetApp (nDVP)
- Complemento de netshare
- Complemento de volumen de almacenamiento ágil
- Complemento de almacenamiento abierto
- Complemento de volumen Portworx
- Complemento de volumen de Quobyte
- Complemento REX-Ray
- Complemento Virtuozzo Storage y Ploop
- Complemento de almacenamiento de VMware vSphere
Para obtener más detalles, consulte lo siguienteenlace