Распределенная файловая система Docker Swarm с локальным хранилищем

Распределенная файловая система Docker Swarm с локальным хранилищем

Я ищу решение для распределенной файловой системы/сетевой файловой системы, которую можно использовать в следующем сценарии:

  • У меня есть 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

Более подробную информацию смотрите ниже.связь

Связанный контент