Назад | Перейти на главную страницу

Альтернатива GlusterFS для сайта загрузки файлов

У меня есть несколько веб-сайтов для загрузки файлов с файлами размером от сотен килобайт до нескольких гигабайт.

В настоящее время у меня есть все файлы в томе Gluster с распределением-репликацией на нескольких серверах.

Моя самая большая проблема с Gluster - это скорость.

Например, у меня есть папка с ~ 80 000 изображений, в среднем по 500 КБ каждое, и мне потребовалось несколько часов, чтобы сменить владельца изображений.

На данный момент все довольно прилично, но я беспокоюсь о том, что файлов будет гораздо больше и сколько времени потребуется для работы с ними.

Какие у меня есть альтернативы? Я что-то не так делаю с Gluster?

Это моя конфигурация блеска:

performance.cache-size: 1GB
performance.cache-refresh-timeout: 60
performance.cache-max-file-size: 100KB
cluster.choose-local: true
performance.readdir-ahead: on
performance.io-thread-count: 16
client.event-threads: 3
server.event-threads: 3

я использовал lsyncd программа в аналогичной ситуации, когда мне нужно синхронизировать контент серверов. Внутри он использует rsync для синхронизации файлов между серверами.

Однако недостатком является то, что вам нужно направлять загрузки на один сервер и синхронизировать файлы с этого сервера на все серверы.

Любая распределенная файловая система пострадает при выполнении пакетных операций с большим количеством файлов: в конце концов, она должна была распространить все изменения на удаленный компьютер, и время задержки резко увеличилось по сравнению только с локальным хостом. Это может быть особенно заметно при выполнении операций изменения метаданных: не касаясь реальных данных, они очень быстры локально; однако удаленная репликация будет полностью связана с задержкой.

У вас есть два основных решения:

  • используйте подход совместного использования файлов, загружая файлы в определенный ящик и экспортируя их через NFS. Хотя NFS - не серебряная пуля (и не монстр скорости), в сочетании с кэшированием на стороне клиента он может работать адекватно.
  • использовать асинхронную систему репликации файлов как lsyncd (или что-то на основе rsync)