Синхронизация загруженных файлов на нескольких серверах - LAMP

У меня сейчас есть веб-сайт, на котором в настоящее время используются 2 сервера, сервер приложений и сервер базы данных, однако нагрузка на сервер приложений увеличивается, поэтому мы собираемся добавить второй сервер приложений.

У меня проблема в том, что на сайте есть пользователи, загружающие файлы на сервер. Как получить загруженные файлы на обоих серверах?

Я не хочу хранить изображения непосредственно в базе данных, поскольку наше приложение уже интенсивно использует базу данных.

Есть ли способ синхронизировать серверы друг с другом или есть что-то еще, что я могу сделать?

Любая помощь будет оценена.

Спасибо

4 ответа

Решение

Это трудно ответить, потому что это полностью зависит от вашего приложения. Похоже, у вас есть некоторые основные проблемы архитектуры приложений, которые не будут решены в вопросе ServerFault. С учетом вышесказанного можно предпринять некоторые шаги для решения описанной проблемы.

Наиболее подходящий способ действий в подобной ситуации - разделить файловый ресурс на отдельный сервис. Не дублируйте файлы, если у вас есть сеть, которая позволяет файлам быть "везде (почти) одновременно". Вы можете сделать это через NFS/CIFS или через соответствующий протокол хранения, такой как iSCSI. Монтировать как локальное хранилище в соответствующем каталоге. В зависимости от производительности вашей сети и ваших потребностей в хранении, это может добавить пару необнаружимых миллисекунд к времени загрузки страницы.

Я могу думать о разных решениях.

Вы можете обмениваться файлами через NFS или на диске iSCSI. - Я сомневаюсь, что это дает хорошие результаты.

Вы можете поместить файлы на отдельный сервер и использовать его как CDN. - Это выгодный способ, поскольку он позволяет браузеру загружать ресурсы асинхронно.

Вы можете использовать настоящий CDN, такой как Cloudfront

csync2 - это ваше решение: http://oss.linbit.com/csync2/

Он предназначен именно для вашей проблемы. Может быть, вы читаете этот блог: http://thuannvn.blogspot.de/2010/01/csync2-is-so-cool.html

НТН

Другим ответом может быть использование программы под названием BTSync, она очень проста в установке и использовании и позволяет вам легко синхронизировать файлы на любом количестве серверов. Для установки требуется всего 3 команды терминала, и это очень эффективно.

Посмотрите здесь


и здесь

Другие вопросы по тегам