Load Balancer
Балансировщик нагрузки принимает входящий сетевой трафик от клиента и, основываясь на некоторых критериях этого трафика, отправляет эти сообщения на один из нескольких бэкенд-серверов. Помимо этого иногда на балансировщике настраивают SSL termination для уменьшения нагрузки на сервера приложений. Или реализуют механизм sticky session
Алгоритмы балансировки¶
Ниже перечислены некоторые популярные алгоритмы балансировки. Иногда алгоритмы используются в комбинации друг с другом или дополняются “весами”, которые системный администратор вручную присваивает каждому серверу, предполагая, что какие-то сервера могут обработать больше соединений, чем другие.
-
Round robin. Соединения распределяются между серверами по очереди.
Один из способов это сделать - Round robin DNS. -
Least connection. Балансировщик направляет запрос на сервер с наименьшим количеством открытых в данных момент соединений.
-
Response time. Балансировщик запоминает среднее время ответа от каждого сервера и направляет трафик на наиболее быстрый сервер.
-
Resource-based. Балансировщик распределяет нагрузку по серверам в зависимости от количества ресурсов доступных на них. Для этого на каждом сервере запускается агент, который мониторит загрузку CPU/RAM/DISK. Данные мониторинга передаются на балансировщик для принятия решения о распределении трафика.
-
IP hash. Балансировщик вычисляет хэш от IP адреса источника и IP адреса получателя. Используя этот хэш запрос направляется на конкретный сервер.
-
Client-side. Решение о том к какому серверу отправить запрос принимается на клиентах. Это значительно усложняет реализацию клиента, но убирает необходимость в отдельном балансировщике. При этом уменьшается latency и улучшает масштабируемость решения, так как теперь она зависит только от количества серверов. Таким образом, например, работает соединение клиентов с Cassandra DB.