Перейти к содержанию

Load Balancer

Балансировщик нагрузки принимает входящий сетевой трафик от клиента и, основываясь на некоторых критериях этого трафика, отправляет эти сообщения на один из нескольких бэкенд-серверов. Помимо этого иногда на балансировщике настраивают SSL termination для уменьшения нагрузки на сервера приложений. Или реализуют механизм sticky session

500

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

Ниже перечислены некоторые популярные алгоритмы балансировки. Иногда алгоритмы используются в комбинации друг с другом или дополняются “весами”, которые системный администратор вручную присваивает каждому серверу, предполагая, что какие-то сервера могут обработать больше соединений, чем другие.

  • Round robin. Соединения распределяются между серверами по очереди.
    Один из способов это сделать - Round robin DNS.

  • Least connection. Балансировщик направляет запрос на сервер с наименьшим количеством открытых в данных момент соединений.

  • Response time. Балансировщик запоминает среднее время ответа от каждого сервера и направляет трафик на наиболее быстрый сервер.

  • Resource-based. Балансировщик распределяет нагрузку по серверам в зависимости от количества ресурсов доступных на них. Для этого на каждом сервере запускается агент, который мониторит загрузку CPU/RAM/DISK. Данные мониторинга передаются на балансировщик для принятия решения о распределении трафика.

  • IP hash. Балансировщик вычисляет хэш от IP адреса источника и IP адреса получателя. Используя этот хэш запрос направляется на конкретный сервер.

  • Client-side. Решение о том к какому серверу отправить запрос принимается на клиентах. Это значительно усложняет реализацию клиента, но убирает необходимость в отдельном балансировщике. При этом уменьшается latency и улучшает масштабируемость решения, так как теперь она зависит только от количества серверов. Таким образом, например, работает соединение клиентов с Cassandra DB.