У нас есть ситуация, когда пользователям разрешено загружать контент, а затем отдельно вносить некоторые изменения, а затем отправлять форму на основе этих изменений.
Это отлично работает в односерверной среде без аварийного переключения, однако нам нужно какое-то решение для обмена файлами между серверами, которое поддерживает аварийное переключение.
Кто-нибудь сталкивался с этим в прошлом? А какие решения вам удалось разработать? Очевидно, что одним из вариантов является сохранение в базе данных, но мы бы предпочли этого избежать.





В нашем сценарии у нас есть отдельный файловый сервер, на который пишут оба наших внешних сервера приложений, таким образом, каждый из серверов имеет доступ к одним и тем же наборам файлов.
Лучшим решением для этого обычно является предоставление общей области в какой-либо форме SAN, которая будет доступна со всех серверов и содержит аварийное переключение.
Это также имеет то преимущество, что вам не нужно обеспечивать жесткую балансировку нагрузки, загрузка может выполняться одним сервером, а редактирование - другим.
Общая сеть SAN с переключением при отказе - отличное решение с большой (высокой) стоимостью. Есть ли аналогичные решения с аварийным переключением по разумной цене? Может, что-то вроде DRBD для windows?
Проблема с простой общей файловой системой заключается в отсутствии избыточности (что, если файловый сервер выйдет из строя)?
На предыдущем месте работы у нас был кластер веб-серверов с балансировщиком нагрузки F5 перед ними. У нас была очень похожая проблема в том, что наши приложения позволяли пользователям загружать контент, который может включать фотографии и тому подобное. Это были устаревшие приложения, и мы не хотели редактировать их для использования базы данных, а решение SAN было слишком дорогим для нашей ситуации.
В итоге мы использовали службу репликации файлов на двух кластерных серверах. Это работало как служба на обеих машинах с использованием учетной записи, которая имела сетевой доступ к путям на противоположном сервере. Когда файл был загружен, эта внутренняя служба синхронизировала данные в папках файловой системы, делая их доступными для обслуживания с любого веб-сервера.
Мы рассмотрели два продукта: Наоборот и PeerSync. Думаю, в итоге мы использовали PeerSync.