Что такое балансировка нагрузки?

Балансировка нагрузки – это метод равномерного распределения сетевого трафика по пулу ресурсов, поддерживающих приложение. Современные приложения должны обрабатывать миллионы пользователей одновременно, а также быстро и надежно возвращать каждому пользователю правильный текст, видео, изображения и другие данные. Для обработки таких значительных объемов трафика в большинстве приложений используется множество серверов ресурсов с дублированием данных между ними. Балансировщик нагрузки – это устройство, которое находится между пользователем и группой серверов и действует как невидимый посредник, обеспечивая одинаковое использование всех серверов ресурсов.

В чем преимущества балансировки нагрузки?

Балансировка нагрузки направляет и контролирует интернет-трафик между серверами приложений и их посетителями или клиентами. В результате повышается доступность, масштабируемость, безопасность и производительность приложения.

Доступность приложения

Сбой или обслуживание сервера может увеличить время простоя приложения, сделав его недоступным для пользователей. Балансировщики нагрузки повышают отказоустойчивость систем, автоматически обнаруживая проблемы с серверами и перенаправляя клиентский трафик на доступные серверы. Вы можете использовать балансировку нагрузки, чтобы упростить выполнение этих задач:

  • Обслуживание или модернизация сервера приложений без простоя приложений
  • Автоматическое аварийное восстановление резервных площадок
  • Проверки работоспособности и предотвращение проблем, которые могут привести к простою

Масштабирование приложения

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

  • Предотвращает проблемы с трафиком на любом сервере
  • Прогнозирует трафик приложений, чтобы при необходимости можно было добавлять или удалять разные серверы
  • Добавляет избыточную мощность в вашу систему, чтобы вы могли уверенно масштабировать ее

безопасность приложений;

Балансировщики нагрузки оснащены встроенными функциями безопасности, которые добавляют еще один уровень безопасности вашим интернет-приложениям. Они являются полезным инструментом для борьбы с распределенными атаками типа «отказ в обслуживании», когда злоумышленники наполняют сервер приложений миллионами параллельных запросов, приводящих к сбою в работе сервера. Балансировщики нагрузки также могут выполнять указанные ниже действия.

  • Отслеживание трафика и блокировка вредоносного контента
  • Автоматическое перенаправление трафика атак на несколько внутренних серверов для минимизации воздействия
  • Маршрутизация трафика через группу сетевых брандмауэров для дополнительной безопасности

Производительность приложения

Балансировщики нагрузки повышают производительность приложений, увеличивая время отклика и уменьшая задержку сети. Они выполняют несколько критически важных задач, таких как:

  • Равномерное распределение нагрузки между серверами для повышения производительности приложений
  • Перенаправление клиентских запросов на географически более близкий сервер, чтобы уменьшить задержку
  • Обеспечение надежности и производительности физических и виртуальных вычислительных ресурсов

Что такое алгоритмы балансировки нагрузки?

Алгоритм балансировки нагрузки – это набор правил, которым следует балансировщик нагрузки для определения наилучшего сервера для каждого из различных клиентских запросов. Алгоритмы балансировки нагрузки делятся на две основные категории.

Статическая балансировка нагрузки

Алгоритмы статической балансировки нагрузки следуют фиксированным правилам и не зависят от текущего состояния сервера. Ниже приведены примеры статической балансировки нагрузки.

Метод круговой системы

Серверы имеют IP-адреса, указывающие клиенту, куда отправлять запросы. IP-адрес – это длинное число, которое трудно запомнить. Чтобы упростить задачу, система доменных имен сопоставляет имена веб-сайтов с серверами. Когда вы вводите aws.amazon.com в своем браузере, запрос сначала отправляется на наш сервер имен, который возвращает ваш IP-адрес вашему браузеру.

В циклическом методе балансировку нагрузки выполняет авторитетный сервер имен вместо специализированного аппаратного или программного обеспечения. Сервер имен возвращает IP-адреса разных серверов в ферме поочередно или по круговой системе.

Взвешенный циклический метод

При взвешенной циклической балансировке нагрузки вы можете назначать разные веса каждому серверу в зависимости от их приоритета или емкости. Серверы с большим весом будут получать больше входящего трафика приложений от сервера имен.

Метод хеширования IP

В методе хеширования IP балансировщик нагрузки выполняет математические вычисления, называемые хэшированием, на IP-адресе клиента. Он преобразует IP-адрес клиента в число, которое затем сопоставляется с отдельными серверами.

Динамическая балансировка нагрузки 

Алгоритмы динамической балансировки нагрузки проверяют текущее состояние серверов перед распределением трафика. Ниже приведены примеры алгоритмов динамической балансировки нагрузки.

Метод наименьшего подключения

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

Метод наименьшего количества подключений

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

Метод наименьшего времени отклика

Время ответа – это общее время, затрачиваемое сервером на обработку входящих запросов и отправку ответа. Метод наименьшего времени отклика сочетает время отклика сервера и активные соединения для определения лучшего сервера. Балансировщики нагрузки используют этот алгоритм для обеспечения более быстрого обслуживания всех пользователей.

Метод на основе ресурсов

В методе на основе ресурсов балансировщики нагрузки распределяют трафик, анализируя текущую нагрузку на сервер. Специализированное программное обеспечение, называемое агентом, работает на каждом сервере и рассчитывает использование ресурсов сервера, таких как вычислительная мощность и память. Затем балансировщик нагрузки проверяет агент на наличие достаточного количества свободных ресурсов перед распределением трафика на этот сервер.

Как работает балансировка нагрузки?

Приложения компаний обычно работают на нескольких серверах. Такое расположение серверов называется фермой серверов. Запросы пользователей к приложению сначала поступают в балансировщик нагрузки. Затем балансировщик нагрузки направляет каждый запрос на один сервер в ферме серверов, наиболее подходящей для обработки запроса.

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

Какие существуют типы балансировки нагрузки?

Балансировку нагрузки можно разделить на три основные категории в зависимости от того, что балансировщик нагрузки проверяет в клиентском запросе на перенаправление трафика.

Балансировка нагрузки приложений

Сложные современные приложения имеют несколько ферм серверов с несколькими серверами, предназначенными для одной функции приложения. Балансировщики нагрузки приложений просматривают содержимое запроса, такое как заголовки HTTP или идентификаторы сеансов SSL, для перенаправления трафика. 

Например, приложение электронной коммерции имеет каталог продуктов, корзину покупок и функции оформления заказа. Балансировщик нагрузки приложений отправляет запросы на просмотр продуктов на серверы, содержащие изображения и видео, но не требующие поддержания открытых подключений. Для сравнения, он отправляет запросы на корзину на серверы, которые могут поддерживать множество клиентских подключений и сохранять данные корзины в течение длительного времени.

Балансировка сетевой нагрузки

Балансировщики сетевой нагрузки проверяют IP-адреса и другую сетевую информацию для оптимального перенаправления трафика. Они отслеживают источник трафика приложений и могут назначать статический IP-адрес нескольким серверам. Балансировщики сетевой нагрузки используют статические и динамические алгоритмы балансировки нагрузки, описанные ранее, для балансировки нагрузки на сервер.

Глобальная балансировка нагрузки на сервер

Глобальная балансировка нагрузки на серверы происходит на нескольких географически распределенных серверах. Например, компании могут иметь серверы в нескольких центрах обработки данных в разных странах и у сторонних поставщиков облачных сервисов по всему миру. В этом случае локальные балансировщики нагрузки управляют нагрузкой приложения в регионе или зоне. Они пытаются перенаправить трафик на место назначения сервера, которое географически ближе к клиенту. Они могут перенаправлять трафик на серверы за пределами географической зоны клиента только в случае сбоя сервера.

Балансировка нагрузки DNS

При балансировке нагрузки DNS вы настраиваете свой домен на маршрутизацию сетевых запросов через пул ресурсов в домене. Домен может соответствовать веб-сайту, почтовой системе, серверу печати или другому сервису, доступному через Интернет. Балансировка нагрузки DNS полезна для поддержания доступности приложений и балансировки сетевого трафика в глобально распределенном пуле ресурсов. 

Какие существуют технологии балансировки нагрузки?

Балансировщики нагрузки бывают двух типов: аппаратные и программные.

Аппаратные балансировщики нагрузки

Аппаратный балансировщик нагрузки – это аппаратное устройство, которое может безопасно обрабатывать и перенаправлять гигабайты трафика на сотни различных серверов. Их можно хранить в центрах обработки данных и использовать виртуализацию для создания нескольких цифровых или виртуальных балансировщиков нагрузки, которыми можно централизованно управлять.

Программные балансировщики нагрузки

Программные балансировщики нагрузки – это приложения, выполняющие все функции балансировки нагрузки. Вы можете установить их на любом сервере или получить к ним доступ как к полностью управляемому стороннему сервису.

Сравнение аппаратных балансировщиков с программными балансировщиками нагрузки

Аппаратные балансировщики нагрузки требуют первоначальных инвестиций, настройки и текущего обслуживания. Вы также можете не использовать их на полную мощность, особенно если вы покупаете его только для обработки всплесков трафика в пиковое время. Если объем трафика внезапно превысит текущую пропускную способность, это повлияет на пользователей до тех пор, пока вы не сможете приобрести и настроить другой балансировщик нагрузки.

Напротив, программные балансировщики нагрузки гораздо более гибкие. Они легко масштабируются и более совместимы с современными облачными вычислительными средами. Кроме того, со временем их установка, управление и использование обходится дешевле.

Как AWS может помочь с балансировкой нагрузки?

Эластичная балансировка нагрузки (ELB) – это полностью управляемый сервис балансировки нагрузки, который автоматически распределяет входящий трафик приложений между несколькими целевыми объектами и виртуальными устройствами в AWS и локальных ресурсах. Это можно использовать для масштабирования современных приложений без сложных конфигураций или шлюзов API. Вы можете использовать ELB для настройки четырех различных типов программных балансировщиков нагрузки.

  • Балансировщик нагрузки приложений направляет трафик для запросов на основе HTTP.

  • Балансировщик сетевой нагрузки маршрутизирует трафик на основе IP-адресов. Они идеально подходят для балансировки запросов на основе протокола TCP и User Datagram Protocol (UDP).

  • Балансировщик нагрузки шлюза направляет трафик на сторонние виртуальные устройства. Они идеально подходят для включения стороннего устройства, такого как сетевой брандмауэр, в сетевой трафик масштабируемым и простым в управлении способом.

  • Классический балансировщик нагрузки направляет трафик приложениям в сети Amazon EC2-Classic – единой плоской сети, которой вы делитесь с другими клиентами.

Балансировщик нагрузки можно выбрать в соответствии со своими требованиями. Например, Terminix, глобальный бренд по борьбе с вредителями, использует балансировщик нагрузки шлюза для обработки на 300 % большей пропускной способности. Second Spectrum, компания, предоставляющая технологию отслеживания спортивных трансляций на основе искусственного интеллекта, использует AWS Load Balancer Controller для снижения затрат на хостинг на 90 %. Code.org, некоммерческая организация, занимающаяся расширением доступа к информатике в школах, использует балансировщик нагрузки приложений для эффективной обработки всплеска трафика в 400 % во время онлайн-мероприятий по кодированию.

Начните балансировку нагрузки, создав аккаунт AWS уже сегодня!

Балансировка нагрузки с AWS: дальнейшие шаги

Дополнительные ресурсы по продукту
Подробнее о вычислительных сервисах 
Зарегистрировать бесплатный аккаунт

Получите мгновенный доступ к уровню бесплатного пользования AWS. 

Регистрация 
Начать разработку в консоли

Начните разработку с использованием AWS в консоли управления AWS.

Вход