Разделение сайта и пространство URL - PullRequest
2 голосов
/ 09 марта 2009

Мой сайт растет. Мне нужно разделить наборы функций на разные группы серверов, а не запускать все функции на одной копии сервера. У меня 8 одинаковых серверов в настройке балансировки сетевой нагрузки Windows.

Проблема в том, что мне нужно сохранить пространство URL-адреса одинаковым. Каким было бы работоспособное решение? Я не хочу начинать новые домены для наборов функций. Я думаю, что какой-то обратный прокси с некоторыми возможностями перезаписи / маршрутизации на основе URL (?!?). Любые рекомендации с точки зрения программного или аппаратного обеспечения? Это заменит настройку WNLB, поскольку у нее нет необходимых мне возможностей.

Ответы [ 2 ]

1 голос
/ 10 марта 2009

Существует несколько решений для балансировки нагрузки:

  1. DNS Round-Robin
  2. Балансировка нагрузки DNS (с именем lboned)
  3. Proxy Round-Robin
  4. Оборудование / TCP Round-Robin

Я понял 1) и 2) здесь не вариант, так что ... если у вас есть деньги и действительно высокая производительность требует , перейдите на 4). Остальное, иди на 3).

Для Proxy Round-Robin, опять же, возможно несколько решений: Apache mod_rewrite , Apache mod_proxy , Squid (и, конечно, многие другие, которые я не делаю знаю).

  • Для "тупой" балансировки нагрузки есть пример в Руководстве по перезаписи URL-адреса Apache mod_rewrite (см. Round-Robin пропускной способности прокси раздел).

  • Apache mod_proxy может выступать в качестве прокси для подключения клиентов к Интернету, но обычно используется в качестве обратного прокси для перенаправления URL-адреса на другой сервер . Он не имеет функции кэширования (но может использоваться с mod_cache и mod_rewrite ...).

  • Squid является прокси-кешем и обычно используется для подключения клиентов к Интернету. Но его также можно использовать в качестве обратного прокси-сервера и настроить для кэширования запросов и ускорения доставки контента.

Как видите, выбор одного из них зависит от того, что и как вы хотите использовать для прокси. В вашем случае я бы рассмотрел запуск Apache mod_proxy или Squid, если вы хотите кэшировать в Linux (если это вариант).

Что касается аппаратного обеспечения, я не специалист, но я думаю, что выделенного сервера от «малого» до «среднего» должно быть достаточно. Только не забывайте, что все запросы будут проходить через эту машину, так что ее размер сильно зависит от вашего трафика, который кажется приличным. Это может потребовать некоторых копаний с данными из реальной жизни.

0 голосов
/ 12 марта 2009

Если у вас 8 серверов, я бы предложил использовать 7 из них для распределения рабочей нагрузки и использовать один интерфейсный сервер в качестве прокси.

Ваш сервер переднего плана может запустить Apache и использовать mod_proxy для делегирования каждого HTTP-запроса одному из 7 внутренних серверов. Вы можете установить mod_proxy, чтобы делегировать работу на основе входящего URL-адреса, если вам нужно, например, чтобы у вас был один сервер, обслуживающий видео, две записи в блогах, а остальные делали все остальное.

Ваш сервер переднего плана был бы чрезвычайно легок: запуск Apache и немного больше. Вы также можете кэшировать статический контент на этом внешнем сервере, используя Squid или Apache mod_cache, так что запросы на изображения, js, css и другое статическое содержимое никогда не попадут на ваш внутренний сервер 7 после его кэширования.

РЕДАКТИРОВАТЬ: Я только что прочитал комментарий Паскаля, и он предлагает то же самое. Я буду его модом + 1

...