Распределенная файловая система для хранения временных файлов
У нас есть кластер веб-серверов, который в настоящее время хранит временные файлы (которые были загружены пользователями) в центральной общей файловой системе. Ограничение заключается в том, что каждый раз, когда сервер, содержащий общую файловую систему, выходит из строя, весь наш сайт отключается (или, по крайней мере, оказывается поврежденным). Я рассмотрел такие решения, как Gluster и GridFS, для создания отказоустойчивой файловой системы, но ни одно из них не показалось идеальным для временных файлов, которые часто создаются и удаляются. Безопасность также важна, и у Gluster, похоже, не было средств шифрования по проводам.
Какие есть хорошие отказоустойчивые опции распределенной файловой системы, которые могут быть безопасными и справляться с частым созданием / удалением файлов?
3 ответа
Предупреждение: самоуверенное содержание.
Распределенные файловые системы отстой. Есть хорошие распределенные хранилища объектов, такие как cassandra и ceph, но любая эмуляция файловой системы на вершине неизменно является проблематичным зверьком, потому что операции файловой системы не очень хорошо отображаются на распределение (lock, fsync()ing), и это исключает проблему необходимо поместить код в ядро, чтобы поддержать их, а не в вашем приложении.
Я ценю простоту создания всего вашего контента доступным через файловую систему, но, возможно, проще написать немного больше кода и использовать распределенное хранилище объектов, как будто оно предназначено для использования.
Зависит от того, как хотите / нужно получить доступ к файловой системе. Если вы не возражаете против использования вызовов API, вы можете сделать что-то столь же простое, как S3, или оставить его внутри, запустить кластер RIAK для аналогичного опыта.
Если это слишком тяжело, вы можете запустить что-то вроде etcd ( https://github.com/coreos/etcd). etcd предназначен для работы на каждом узле и обладает очень высокой производительностью, если немного больше работать с интерфейсом.