Я ищу решение для распределенной файловой системы/сетевой файловой системы, которую можно использовать в следующем сценарии:
- У меня есть Docker Swarm с множеством хостов, но каждый хост по сути самодостаточен и ничем не отличается от любого другого хоста. Мы просто используем их для масштабирования. Это означает, что каждый хост запускает все рабочие процессы, необходимые для работы системы, и в идеале одна задача, которая попадает в систему, полностью выполняется на хосте, который ее запустил.
- Обработка задачи состоит из нескольких этапов. На каждом этапе создается большой файл размером от 1 до 10 ГБ. В первую очередь, рабочие на каждом хосте будут работать только с файлами, которые уже хранятся локально.
- Однако иногда хост может быть перегружен, и я хочу, чтобы рабочие на другом хосте взяли на себя оставшиеся этапы обработки. Чтобы добиться этого, мне нужно, чтобы файлы хранились в общем томе, который рабочие на других хостах могли бы прозрачно использовать для доступа к файлам, хранящимся на другом хосте.
Другими словами: каждый хост будет иметь один и тот же "сетевой том", смонтированный в каком-то месте, и он содержит некоторые файлы, которые фактически хранятся на текущем хосте (эти файлы в первую очередь важны), и некоторые файлы, которые хранятся на другом хосте. Однако рабочие в основном (в 90-95% случаев) будут получать доступ к файлам, которые являются локальными для их хоста.
Мне не нужна репликация (файлы актуальны только в течение 30-60 минут, а после этого они в любом случае больше не нужны) и я специальноненужно центральное хранилище.
Пропускная способность в системе измеряется скорее в минутах на задачу, а не в задачах в секунду. Больших файлов мало, а маленьких много. Кроме того, файлы записываются один раз и читаются только один или два раза.
Есть ли хорошее решение для этого? Я посмотрел на GlusterFS
, EdgeFS
, InterPlanetary File System
, Ceph
и некоторые другие, но ни один из них не показался мне правильным выбором.
решение1
Вы можете сделать это с помощью плагинов Docker Engine. Это плагины объема, которые поддерживает docker-engine.
- Плагин хранилища файлов Azure
- Плагин громкости BeeGFS
- Плагин Blockbridge
- Плагин Contiv Volume
- Плагин конвоя
- Плагин блочного хранилища DigitalOcean
- Плагин DRBD
- Плагин Flocker
- Плагин громкости Fuxi
- плагин gce-docker
- Плагин GlusterFS
- Плагин громкости хоркрукса
- Плагин HPE 3Par Volume
- Плагин бесконечного объема
- Плагин тома IPFS
- плагин Keywhiz
- Локальный постоянный плагин
- Плагин NetApp (nDVP)
- плагин Netshare
- Плагин Nimble Storage Volume
- Плагин OpenStorage
- Плагин громкости Portworx
- Плагин Quobyte Volume
- Плагин REX-Ray
- Плагин Virtuozzo Storage и Ploop
- Плагин хранилища VMware vSphere
Более подробную информацию смотрите ниже.связь