Управление активами в кластерной среде
У меня есть система управления контентом, работающая на веб-сервере, которая, помимо прочего, позволяет пользователю загружать на сервер такие ресурсы, как изображения, файлы и т. Д.
У меня проблема в том, что за балансировщиком нагрузки будут работать 2 сервера, и я пытаюсь найти эффективный способ управления активами.
У меня есть вопрос:
Будут ли ресурсы загружаться на один сервер каждый раз? Или есть вероятность, что изображения / файлы попадут на сервер1 или сервер2 в зависимости от нагрузки?
Как мне обслуживать изображения, если я не знаю, на каком сервере они заканчиваются? Должен ли я сохранять каталоги этих ресурсов (изображений / файлов) синхронизированными между двумя серверами?
Спасибо,
1 ответ
Синхронизация - сложная задача для взлома. Вы можете выполнить синхронизацию ad-hoc с помощью Couchdb, но это требует хорошего знания проблем низкого уровня. Поэтому вам нужно выбрать мастер записи.
DRDB
Вы можете посмотреть на DRDB: D Используйте один сервер в качестве мастера записи, а другой - в качестве ведомого. Тогда вы можете сервер контента от обоих. Этот подход удивителен для пар базы данных.
Примечание: разделение вашего кода и URL-адресов для записи-master и только для обслуживания будет раздражать
CouchDB
Вы могли бы использовать couchdb, но я думаю, что это может быть излишним. Это для БОЛЬШИХ объемов данных и высокого уровня отказоустойчивости.
NFS
Вы можете экспортировать каталог ресурсов на мастер записи как диск nfs и импортировать его с другого компьютера. Но в этом случае он не будет сбалансирован по нагрузке во всех случаях, то есть, только если файлы кэшируются ведомым. Вы можете использовать третий компьютер в качестве NFS-сервера - это позволит вам масштабироваться до большего количества веб-серверов.
Центральный NFS-сервер может быть вашим лучшим решением, поскольку вы можете обойтись без мастера записи, поскольку каждый интерфейсный сервер может выполнять записи. Это подход, который я бы использовал, если не собираюсь обойти диапазон петабайт:P