Разделение сайта и пространство URL

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

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

2 ответа

Решение

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

  1. DNS Round-Robin
  2. Балансировка нагрузки на DNS (с lbonym)
  3. Прокси Круглый Робин
  4. Оборудование /TCP Round-Robin

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

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

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

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

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

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

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

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

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

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

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

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