![Решение для резервного копирования, управления версиями и репликации файловых данных](https://rvso.com/image/652702/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B4%D0%BB%D1%8F%20%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%2C%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%D0%BC%D0%B8%20%D0%B8%20%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D1%85%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85.png)
У нас есть растущий набор файлов данных (файлы .wav, файлы изображений и т.д.), которые являются данными, т.е. не являются частью кода приложения - загружены и изменены пользователями. Количество файлов составляет тысячи, а общий размер достигает ГБ.
У нас есть несколько кластеров серверов в разных местах по всему миру (США, ЕС, ME). В каждом кластере важно, чтобы данные обслуживались локально, а не из S3 (файлы данных не обслуживаются напрямую клиентами, а обрабатываются серверами). Мы хотим назначить файловый сервер в каждом месте, который будет обслуживать файлы через NFS на других узлах в том же кластере.
Итак, суть такова:
- Файлы, загруженные через приложение, должны оказаться в формате
S3
. - Каждый узел файлового сервера должен реплицировать эти файлы.
Мы видим несколько вариантов:
- Использование
origin
файлового сервера, который реплицирует данныеS3
для резервного копирования/управления версиями и на узлы черезrsync
(или аналогично). - То же, что и выше, но подчиненные устройства реплицируются с
S3
помощью чего-то вроде инструмента S3 или подобного. - Не используя
origin
код приложения, загружается напрямую вS3
, а подчиненные устройства реплицируются, как указано выше.
Нам было интересно, какое решение является рекомендуемым и какие инструменты доступны для репликации (т. е. в категории «файловая система-файловая система» и в категории «файловая система/S3»).