Балансировщики нагрузки для высоконагруженных систем

Балансировщики нагрузки для высоконагруженных систем

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

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

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

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

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

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

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

Каким бы не был алгоритм балансировщика нагрузки серверов, он должен выполнять следующие функции:

  1. Уменьшить время отклика на запросы пользователей.
  2. Гарантировать равномерное распределение сетевых ресурсов
  3. Не допускать простаивание одного или нескольких серверов при высокой нагрузке на другие.
  4. Не терять уровень работоспособности при увеличении нагрузки.
  5. Простым в использовании, пользователь должен четко понимать, как и когда будут обработаны запросы и будет происходить распределение нагрузки.

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

Алгоритмы работы балансировщиков:

Чтобы выбрать наиболее подходящий, рассмотрим самые популярные алгоритмы настройки балансировки:

1. Так называемый «Round Robin» (круговой): клиенты перебираются по круговому циклу и очередность запросов соответствует очередности сервера, так до перехода к последнему, затем все начинается заново.

Для воплощения такого метода подходит почти любой DNS сервер.

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

2. Round Robin Weight: балансировщик выбирает «по весу» куда направить запрос в зависимости от загруженности серверов и на текущий момент времени выбирает тот, который меньше всего загружен.

Это более гибкая версия первого метода.

3. Sticky (липкий) хэш: клиент соотносится с конкретным сервером на основании IP и все запросы данного клиента будут направляться на один и тот же сервер.

При данном методе гарантируется, что запросы клиента, который «закреплен» за конкретным сервером, будут передаваться именно на этот сервер. Если по какой-то причине сервер окажется недоступен, то тогда уже запрос будет перенаправлен на другой сервер.

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

При таком способе работы серверу приходится работать на двух уровнях: 7 (HTTP) и 4 (TCP) «Умные» прокси – серверы, которые работают на l7 – «уровне приложений» поверх l4, позволяют использовать несколько способов маршрутизации данных, что можно рассматривать как балансировку нагрузки.

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

Типы топологий балансировки:

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

  1. Схема балансировки посередине между пользователем и бэкендом. Самая простая и популярная топология, которая может включать облачные и чистые программы (самые популярные – HAProxy, балансировщик нагрузки nginx, NLB и т.д.) или работать через аппаратный балансировщик (например, LM Server Balancer, Cisco, Kemp LoadMaster, Big Ip от F5).
  2. Топология балансировщика с краю. При такой схеме балансировщик доступен через интернет – подключение, в остальном краевая топология схожа со схемой балансировки посередине.
  3. Топология встроенной библиотеки. Балансировка через встроенную библиотеку подразумевает встраивание балансировщика нагрузки напрямую через библиотеку, для того чтобы избежать проблемы отказа, которые присущи топологии посередине.

Для устранения необходимости регулярного обновления библиотеки и ее реализации на различных языках была реализована идея прокси-сервера sidecar. Она позволяет получать плюсы библиотечного подхода без программирования.

Глобальная балансировка:

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

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

Заключение:

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


Опубликовано 10 Декабря 2018

Добавить комментарий