2009-11-12 2 views
1

Это может быть вопрос и для serverfault, но здесь также есть темы.Масштабирование файловых систем

Я строю новый веб-сайт, состоящий из 6 серверов. 1 mysql, 1 веб-сервер, 2 сервера обработки файлов, 2 файловых сервера. Короче говоря, серверы обработки файлов обрабатывают файлы и копируют их на файловые серверы. В этом случае у меня есть два варианта;

Я могу настроить веб-сервер для каждого файлового сервера и обслуживать файлы непосредственно оттуда. Например, file1.domain.com/file.zip. Некоторым файлам (не всем) потребуется проверка подлинности, поэтому я буду аутентифицировать пользователей через memcache с этих серверов. 90% запросов не потребует никакой проверки подлинности.

Или я могу настроить NFS и обслуживать файлы непосредственно с веб-сервера, как www.domain.com/fileserve.php?id=2323 (это основной пример)

Поскольку проект в значительной степени основывается на файлы, второй вариант может быть не таким эффективным, как первый вариант, так как он будет потреблять больше памяти (даже если я разделяю файлы на куски во время обслуживания)

Установка будет оставаться неизменной в течение длительного времени, t добавить новые файловые серверы в настройку.

Каковы ваши идеи, какой из них лучше? Или любая другая идея?

Спасибо заранее,

ответ

3

Просто меня, но я бы на самом деле положить набор обратных правил прокси на «веб-сервер», а затем прокси-сервер HTTP запросов (возможно, балансировка нагрузки, если они имеют одинаковые файловые системы) обратно к легкий HTTP-сервер на файловых серверах.

Это дает вам гибкость и способность реализовать будущее кэширование, протоколирование, цепочки фильтров, правила перезаписи, аутентификацию & c, & c. Я нахожу, что фронт-сервер в качестве прокси-уровня является очень эффективным решением.

+0

Это был бы мой выбор. Только одно предостережение: будьте осторожны, ваше будущее и ваши преемники будут благодарны вам! Это досадно легко в конечном итоге с неприятными, трудно поддерживаемыми беспорядками, если вы не проявляете осторожность при разработке таких вещей, как прокси-сервер и переписываете правила. –

+0

Извините за мой вопрос, поскольку я не настроил обратный прокси-сервер для веб-серверов. Итак, вы имеете в виду, что я не буду устанавливать ничего подобного NFS, когда кто-то запросит www.domain.com/file.zip, он проксирует запрос file1.domain.com/file.zip напрямую из протокола HTTP. Я знаю этот дизайн в теории и хотел бы практиковать его, используя nginx в качестве обратного прокси, но мне интересно, какие недостатки этого дизайна, особенно с точки зрения памяти. Как это повлияет на потребление памяти на веб-сервере (файловые серверы будут потреблять ту же память, что и первая опция) – murat

+0

@murat Я думаю, вы заявляете об этом, но HTTP-запрос не предназначен для защиты, а скорее передний обратный прокси. Таким образом, вы не должны нести NFS, а HTTP в сети. Вы также можете делать такие вещи, как разгрузка GZIP-сжатия на переднем веб-сервере. Потребление ресурсов, о котором я бы не подумал, было бы хуже, чем обслуживание NFSoTCP. Большинство обратных прокси-потоков передают данные через прохождение заголовков и все, но при необходимости обрабатывают возврат, но если вы используете двоичный код, это не имеет никакого значения. – Xailor

2

Я рекомендую ваш вариант # 1: разрешить файловым серверам действовать как веб-серверы. Я лично обнаружил, что NFS немного шелушится при использовании в больших объемах.

+1

+1 для flaky NFS при большом объеме. –

+1

да, я читал это в интернете .. спасибо. – murat

0

Вы также можете использовать Сеть доставки контента, такую ​​как simplecdn.com, они могут решить проблему с пропускной способностью и нагрузкой на сервер.

+0

Благодарим вас за предложение, но CDNs излишне для нас, потому что проект является локальным проектом, и у нас очень хорошие сделки с локальными центрами обработки данных. – murat

Смежные вопросы