Вопрос

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

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

Это было полезно?

Решение

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

  1. DNS-раунд-робин
  2. Балансировка нагрузки DNS (с lbnamed)
  3. Прокси-робин
  4. Аппаратное обеспечение/TCP Round-Robin

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

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

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

  • 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 или mod_cache Apache, чтобы запросы на изображения, js, css и другое статическое содержимое никогда не попадали на ваш внутренний сервер 7 после его кэширования.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top