Балансировка нагрузки позволяет распределять входящий сетевой трафик между несколькими ресурсами, обеспечивая высокую доступность и надежность за счет отправки запросов только к доступным в сети ресурсам. Это обеспечивает гибкость в добавлении или удалении ресурсов в зависимости от потребностей.
Для дополнительной масштабируемости и избыточности мы можем попробовать балансировать нагрузку на каждом уровне нашей системы:
Современные высоконагруженные веб-сайты должны обслуживать сотни тысяч, если не миллионы, одновременных запросов от пользователей или клиентов. Для эффективного масштабирования с учетом этих высоких объемов современная вычислительная практика обычно требует добавления большего количества серверов.
Балансировщик нагрузки может находиться перед серверами и маршрутизировать клиентские запросы по всем серверам, способным выполнить эти запросы таким образом, чтобы максимизировать скорость и использование мощности. Это гарантирует, что ни один сервер не будет перегружен, что может ухудшить производительность. Если один сервер выходит из строя, балансировщик нагрузки перенаправляет трафик на оставшиеся в сети серверы. Когда в группу серверов добавляется новый сервер, балансировщик нагрузки автоматически начинает отправлять на него запросы.
Это основная функция, предоставляемая балансировщиком нагрузки, и она имеет несколько общих вариаций:
В общем случае, балансировщики нагрузки работают на одном из двух уровней:
Это балансировщик нагрузки, который работает на транспортном уровне сети, также известном как уровень 4. Он выполняет маршрутизацию на основе сетевой информации, такой как IP-адреса, и не может выполнять маршрутизацию на основе содержимого. Это часто специализированные аппаратные устройства, которые могут работать на высоких скоростях.
Это балансировщик нагрузки, который работает на прикладном уровне, также известном как уровень 7. Балансировщики нагрузки могут читать запросы целиком и выполнять маршрутизацию на основе содержимого. Это позволяет управлять нагрузкой на основе полного понимания трафика.
Рассмотрим различные типы балансировщиков нагрузки:
Программные балансировщики нагрузки обычно проще в развертывании, чем аппаратные. Они также обычно более экономичны и гибки, и их используют в сочетании с программными средами разработки. Программный подход дает нам гибкость настройки балансировщика нагрузки в соответствии с конкретными потребностями нашей среды. Увеличение гибкости может потребовать большей работы по настройке балансировщика нагрузки. В отличие от аппаратных версий, которые предлагают более закрытый подход, программные балансировщики дают нам больше свободы в внесении изменений и обновлений.
Программные балансировщики нагрузки широко используются и доступны либо как устанавливаемые решения, требующие настройки и управления, либо как управляемая облачная услуга.
Как следует из названия, аппаратный балансировщик нагрузки полагается на физическое, локальное оборудование для распределения прикладного и сетевого трафика. Эти устройства могут обрабатывать большой объем трафика, но часто имеют высокую цену и ограничены в плане гибкости.
Аппаратные балансировщики нагрузки включают фирменное программное обеспечение, требующее обслуживания и обновлений при выпуске новых версий и патчей безопасности.
Балансировка нагрузки DNS — это практика настройки домена в Системе Доменных Имен (DNS) таким образом, чтобы клиентские запросы к домену распределялись между группой серверных машин.
К сожалению, балансировка нагрузки DNS имеет внутренние проблемы, ограничивающие ее надежность и эффективность. Самое значительное из них — DNS не проверяет отказы серверов и сетевые сбои или ошибки. Он всегда возвращает один и тот же набор IP-адресов для домена, даже если серверы не работают или недоступны.
Теперь обсудим общепринятые алгоритмы маршрутизации:
Балансировка нагрузки также играет ключевую роль в предотвращении простоев, другие преимущества балансировки нагрузки включают:
Как вы уже, наверное, догадались, сам балансировщик нагрузки может стать единственной точкой сбоя. Чтобы преодолеть это, можно использовать второй или N
-ое количество балансировщиков нагрузки в кластерном режиме.
И если обнаруживается сбой и активный балансировщик нагрузки выходит из строя, другой пассивный балансировщик нагрузки может взять на себя управление, что сделает нашу систему более устойчивой к сбоям.
Вот некоторые общеиспользуемые функции балансировщиков нагрузки:
Вот некоторые из общепринятых решений для балансировки нагрузки, используемых в индустрии: