У меня есть несколько веб-сайтов для загрузки файлов с файлами размером от сотен килобайт до нескольких гигабайт.
В настоящее время у меня есть все файлы в томе 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
для синхронизации файлов между серверами.
Однако недостатком является то, что вам нужно направлять загрузки на один сервер и синхронизировать файлы с этого сервера на все серверы.
Любая распределенная файловая система пострадает при выполнении пакетных операций с большим количеством файлов: в конце концов, она должна была распространить все изменения на удаленный компьютер, и время задержки резко увеличилось по сравнению только с локальным хостом. Это может быть особенно заметно при выполнении операций изменения метаданных: не касаясь реальных данных, они очень быстры локально; однако удаленная репликация будет полностью связана с задержкой.
У вас есть два основных решения:
lsyncd
(или что-то на основе rsync
)