Какой из них подходит для ваших потребностей в развертывании?

Вступление

Балансировка нагрузки - это процесс равномерного распределения сетевой нагрузки между несколькими серверами. Это помогает масштабировать спрос в часы пиковой нагрузки, помогая равномерно распределять работу. Сервер может находиться в облаке, центре обработки данных или локально. Это может быть как физический сервер, так и виртуальный. Некоторые из основных функций балансировщика нагрузки (LB):

  • Эффективно направляет данные
  • Предотвращает перегрузку сервера
  • Выполняет проверки работоспособности серверов
  • Предоставляет новые экземпляры сервера перед лицом большого трафика

Типы алгоритмов балансировки нагрузки

В семиуровневой модели OSI балансировка нагрузки происходит от уровней 4 (транспортный уровень) до 7 (уровень приложений).

Различные типы LB-алгоритмов эффективны при распределении сетевого трафика в зависимости от того, как выглядит распределение трафика, т. Е. Будь то трафик сетевого уровня или трафик прикладного уровня.

  • Трафик сетевого уровня маршрутизируется LB на основе порта TCP, IP-адресов и т. Д.
  • Трафик прикладного уровня маршрутизируется на основе различных дополнительных атрибутов, таких как HTTP-заголовок, SSL, и даже предоставляет возможности переключения контента для LB.

Алгоритмы сетевого уровня

1. Циклический алгоритм

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

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

2. Алгоритм наименьшего количества соединений

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

3. Взвешенный алгоритм наименьших связей.

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

4. Алгоритм наименьшего времени отклика

Это снова похоже на алгоритм наименьшего количества подключений, но также учитывает время отклика серверов. Запрос отправляется на сервер с наименьшим временем отклика.

5. Алгоритм хеширования

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

  • Хеш IP-адреса источника / назначения. IP-адреса источника и назначения хешируются вместе, чтобы определить сервер, который будет обслуживать запрос. В случае разрыва соединения тот же запрос может быть перенаправлен на тот же сервер при повторной попытке.
  • Хеш URL: URL запроса используется для выполнения хеширования, и этот метод помогает уменьшить дублирование кешей сервера, избегая хранения одного и того же объекта запроса во многих кэшах.

6. Разные алгоритмы

Также есть несколько других алгоритмов, а именно:

  • Алгоритм наименьшей пропускной способности: балансировщик нагрузки выбирает сервер с наименьшим потреблением пропускной способности за последние 14 минут.
  • Алгоритм наименьшего количества пакетов. Как и в предыдущем случае, сервер, передающий наименьшее количество пакетов, выбирается балансировщиком нагрузки для перенаправления трафика.
  • Алгоритм пользовательской нагрузки. Балансировщик нагрузки выбирает сервер на основе текущей нагрузки на него, которая может определяться памятью, использованием процессора, временем отклика, количеством запросов и т. д.

Алгоритмы прикладного уровня

На этом уровне трафик может распределяться на основе содержимого запроса; следовательно, LB могут принять гораздо более обоснованное решение. Ответ сервера также можно отслеживать, поскольку он прошел весь путь от сервера, и это помогает гораздо более эффективно определять нагрузку на сервер.

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

Заключение

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