Какой из них подходит для ваших потребностей в развертывании?
Вступление
Балансировка нагрузки - это процесс равномерного распределения сетевой нагрузки между несколькими серверами. Это помогает масштабировать спрос в часы пиковой нагрузки, помогая равномерно распределять работу. Сервер может находиться в облаке, центре обработки данных или локально. Это может быть как физический сервер, так и виртуальный. Некоторые из основных функций балансировщика нагрузки (LB):
- Эффективно направляет данные
- Предотвращает перегрузку сервера
- Выполняет проверки работоспособности серверов
- Предоставляет новые экземпляры сервера перед лицом большого трафика
Типы алгоритмов балансировки нагрузки
В семиуровневой модели OSI балансировка нагрузки происходит от уровней 4 (транспортный уровень) до 7 (уровень приложений).
Различные типы LB-алгоритмов эффективны при распределении сетевого трафика в зависимости от того, как выглядит распределение трафика, т. Е. Будь то трафик сетевого уровня или трафик прикладного уровня.
- Трафик сетевого уровня маршрутизируется LB на основе порта TCP, IP-адресов и т. Д.
- Трафик прикладного уровня маршрутизируется на основе различных дополнительных атрибутов, таких как HTTP-заголовок, SSL, и даже предоставляет возможности переключения контента для LB.
Алгоритмы сетевого уровня
1. Циклический алгоритм
Нагрузка трафика распределяется на первый доступный сервер, а затем этот сервер помещается в очередь. Если серверы идентичны и нет постоянных соединений, этот алгоритм может оказаться эффективным. Существует два основных типа алгоритмов циклического перебора:
- Циклический взвешенный алгоритм. Если серверы имеют разную мощность, этот алгоритм можно использовать для распределения нагрузки. Некоторые весовые коэффициенты или параметры эффективности могут быть назначены всем серверам в пуле, и на их основе аналогичным циклическим образом распределяется нагрузка.
- Динамический циклический перебор: веса, назначаемые серверу для определения его емкости, также могут быть рассчитаны во время выполнения. Динамический циклический перебор помогает отправлять запросы на сервер в зависимости от веса во время выполнения.
2. Алгоритм наименьшего количества соединений
Этот алгоритм вычисляет количество активных подключений на сервер в течение определенного времени и направляет входящий трафик на сервер с наименьшим количеством подключений. Это очень полезно в сценариях, где требуется постоянное соединение.
3. Взвешенный алгоритм наименьших связей.
Это похоже на алгоритм наименьшего количества подключений выше, но помимо количества активных подключений к серверу, он также учитывает мощность сервера.
4. Алгоритм наименьшего времени отклика
Это снова похоже на алгоритм наименьшего количества подключений, но также учитывает время отклика серверов. Запрос отправляется на сервер с наименьшим временем отклика.
5. Алгоритм хеширования
Различные параметры запроса используются для определения того, куда будет отправлен запрос. Основанные на этом различные типы алгоритмов:
- Хеш IP-адреса источника / назначения. IP-адреса источника и назначения хешируются вместе, чтобы определить сервер, который будет обслуживать запрос. В случае разрыва соединения тот же запрос может быть перенаправлен на тот же сервер при повторной попытке.
- Хеш URL: URL запроса используется для выполнения хеширования, и этот метод помогает уменьшить дублирование кешей сервера, избегая хранения одного и того же объекта запроса во многих кэшах.
6. Разные алгоритмы
Также есть несколько других алгоритмов, а именно:
- Алгоритм наименьшей пропускной способности: балансировщик нагрузки выбирает сервер с наименьшим потреблением пропускной способности за последние 14 минут.
- Алгоритм наименьшего количества пакетов. Как и в предыдущем случае, сервер, передающий наименьшее количество пакетов, выбирается балансировщиком нагрузки для перенаправления трафика.
- Алгоритм пользовательской нагрузки. Балансировщик нагрузки выбирает сервер на основе текущей нагрузки на него, которая может определяться памятью, использованием процессора, временем отклика, количеством запросов и т. д.
Алгоритмы прикладного уровня
На этом уровне трафик может распределяться на основе содержимого запроса; следовательно, LB могут принять гораздо более обоснованное решение. Ответ сервера также можно отслеживать, поскольку он прошел весь путь от сервера, и это помогает гораздо более эффективно определять нагрузку на сервер.
Одним из наиболее важных алгоритмов, используемых на этом уровне, является алгоритм наименее ожидающих запросов. Этот алгоритм направляет трафик ожидающих HTTP-запросов на наиболее доступный сервер. Этот алгоритм помогает регулировать внезапный всплеск запросов путем отслеживания нагрузки на сервер.
Заключение
Это некоторые из известных алгоритмов балансировки нагрузки, и при выборе наиболее желательного алгоритма необходимо учитывать ряд факторов, например высокий трафик или внезапные всплески нагрузки. Хороший выбор алгоритма помогает поддерживать надежность и производительность любого приложения. Следовательно, хорошее их понимание окажется полезным при проектировании крупномасштабных распределенных систем.