Хорошо, об этом недавно спросили, и я опоздал на вечеринку. Тем не менее, здесь есть что добавить.
Джеки, ты в значительной степени прибил это. На иллюстрации показано, как выполняется балансировка нагрузки в большинстве небольших и средних установок.
Вы должны прочитать введение Вилли Тарро по балансировке нагрузки, с которым связался Nakedible. Это все еще действует, и это хорошее введение.
Вы должны рассмотреть, как они соответствуют вашим потребностям:
- Балансировщики нагрузки на уровне TCP / IP (Linux Virtual Server и др.). Самые низкие издержки на соединение, самая высокая скорость, не может «видеть» HTTP.
- Балансировщики нагрузки уровня HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR и другие). Более высокая нагрузка, может видеть HTTP, может gzip HTTP, может делать SSL, может выполнять балансировку нагрузки сессионного режима.
- Обратные прокси HTTP (Apache Traffic Server, Varnish, Squid). Может хранить объекты с кэшем (некоторые веб-страницы, CSS, JS, изображения) в оперативной памяти и пересылать их последующим клиентам без участия серверного веб-сервера. Часто может выполнять те же действия, что и балансировщики нагрузки HTTP L7.
есть второй балансир, так как я уверен, что в какой-то момент балансиру тоже понадобится помощь.
Хорошо обязательно. Но балансировка нагрузки проста, и часто один балансировщик нагрузки может работать быстро . Я ссылаюсь на эту статью, которая поразила нервы в сети, как пример того, какую производительность может обеспечить один современный сервер . Не используйте несколько LB, прежде чем вам нужно. Когда вам нужен общий подход, это балансировщики нагрузки на уровне IP в самом начале (или DNS Round Robin), переход к балансировщикам нагрузки на уровне HTTP, переход на прокси и серверы веб-приложений.
справка о том, какими должны быть «балансировщики», и рекомендации по их настройке.
Проблемой является обработка состояния сеанса и, в некоторой степени, поведение состояния сбоя. Настройка самих балансировщиков нагрузки сравнительно проста.
Если вы используете только 2-4 серверных веб-приложения, статическое хеширование на основе исходного IP-адреса может быть жизнеспособным. Это устраняет необходимость в общем состоянии сеанса между серверами веб-приложений. Каждый узел веб-приложения видит 1 / N всего трафика, а сопоставление клиент-сервер статично при нормальной работе. Это не подходит для больших установок, хотя.
Эти две лучшие алгоритмы балансировки нагрузки, в том смысле , что они имеют доброкачественное поведение при высоких нагрузках и равномерное распределение нагрузки, являются круговой и истинная балансировка случайной нагрузки. Оба из них требуют, чтобы ваше веб-приложение имело глобальное состояние сеанса, доступное на узлах веб-приложений. Как это сделать, зависит от технологического стека webapp; но обычно есть стандартные решения для этого.
Если вам не подходят ни статическое хеширование, ни состояние общего сеанса, то обычно выбирается балансировка нагрузки « липкий сеанс » и состояние сеанса для каждого сервера. В большинстве случаев это работает нормально, и это вполне жизнеспособный выбор.
Балансировщик / ы будет видеть, сколько подключений на каждом экземпляре Apache (через некоторый список конфигурации внутренних IP-адресов или вечных IP-адресов) и распределяет подключения одинаково
Да, некоторые сайты используют это. Существует множество названий для множества существующих алгоритмов балансировки нагрузки . Если вы можете выбрать циклический или случайный (или взвешенный круговой, взвешенный случайный), я бы порекомендовал вам сделать это по причинам, указанным выше.
И последнее: не забывайте, что многие поставщики (F5, Cisco и другие высококлассные, FX Coyote Point и Kemp Technologies по более разумным ценам) предлагают зрелые устройства балансировки нагрузки .