AWS Application Load Balancer vs Network Load Balancer

Я пытаюсь понять, в чем заключаются основные различия между ALB (балансировщиком нагрузки приложений) и NLB (балансировщиком сетевой нагрузки). Я понимаю, что ALB находится на уровне 7 модели OSI - это означает, что он существует на уровне приложения - а NLB находится на уровне 4, что означает, что он работает на транспортном уровне.

При этом, это означает, что ALB может обрабатывать только запросы HTTP / HTTPS, в отличие от NLB, который может обрабатывать любые типы TCP-запросов.

Итак, мой вопрос ... это все? Или есть какие-либо другие отличия?

4
задан 6 November 2017 в 18:35
1 ответ

Балансировка сетевой нагрузки - это распределение трафика на основе сетевых переменных, таких как IP-адрес и порты назначения. Это уровень 4 (TCP) и ниже и не предназначен для учета чего-либо на уровне приложения, такого как тип контента, данные cookie, настраиваемые заголовки, местоположение пользователя или поведение приложения. Он является бесконтекстным, заботясь только об информации сетевого уровня, содержащейся в пакетах, которые он направляет в том или ином направлении.

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

Разница между ними важна, поскольку балансировка сетевой нагрузки не может гарантировать доступность приложения. Это связано с тем, что он основывает свои решения исключительно на переменных сети и TCP-уровня и вообще не знает о приложении. Обычно подсистема балансировки сетевой нагрузки определяет «доступность» на основе способности сервера отвечать на эхо-запрос ICMP или правильно завершить трехстороннее установление связи TCP. Балансировщик нагрузки приложения идет гораздо глубже и способен определять доступность на основе не только успешного HTTP GET конкретной страницы, но и проверки того, что контент соответствует ожиданиям на основе входных параметров.

Это также важно. на это следует обратить внимание при рассмотрении вопроса о развертывании нескольких приложений на одном и том же хосте с совместным использованием IP-адресов (виртуальные хосты в старой школе говорят). Балансировщик сетевой нагрузки не будет различать приложение A и приложение B при проверке доступности (действительно, это невозможно, если порты не разные), но балансировщик нагрузки приложения будет различать два приложения, исследуя данные уровня приложения, доступные ему. Это различие означает, что балансировщик сетевой нагрузки может в конечном итоге отправлять запросы к приложению, которое вышло из строя или находится в автономном режиме, но балансировщик нагрузки приложения никогда не сделает ту же ошибку.

Ссылка:

Балансировка сетевой нагрузки в сравнении с балансировкой нагрузки приложений

9
ответ дан 3 December 2019 в 02:42

Теги

Похожие вопросы