Как хранить media-файлы, если приложение запущено на нескольких серверах?
Как лучше хранить upload-файлы, когда приложение запущено на нескольких серверах?
В идеале на s3, наверное. Но в данном случае это мне не очень подходит, лучше, чтобы просто файлы хранились локально. Но как сделать так, чтобы, если на 1 сервере пользователь загружает файл, он так же был доступен на всех остальных?
Наверняка этот вопрос решается относительно просто, но 15-ти минутное гугление не приблизило меня к ответу :(
А зачем хранить именно файлы?! Храниет бинарные данные и вытаскивайте их по ключу! Мы, например у себя развернули ceph, что и многим желаем. Загружаете файло, назначаете ему ключ и пуляете в хралилище, потом по ключу и достаете. Если нужно, рядом создаете ключ с метаинформацией, имя, кто, когда, откуда и по какому поводу запулил данные. Итого, в базе у вас привязка к ключу, в хранилище два ключа media.xxxxx и meta.xxxx.
И это гораздо дешевле и надежней, чем разворачивать распределенные файловые системы, которые внутри делают примерно тоже самое, только заточены на файлы со всеми плюсами и минусами...