В чем разница между балансировщиками нагрузки ALB, NLB и GLB?
В облаке используются три типа балансировщиков нагрузки: балансировщик нагрузки приложений (ALB), балансировщик сетевой нагрузки (NLB) и балансировщик нагрузки шлюза (GLB). Балансировкой нагрузки называют процесс, нацеленный на равномерное распределение сетевого трафика в пуле ресурсов, выделенных для приложения. Современные приложения работают с миллионами пользователей одновременно. Для поддержки трафика в таких объемах требуется множество серверов, содержащих идентичные данные. Чтобы распределять трафик приложений, ALB изучают запрошенное содержимое, например HTTP-заголовки или идентификаторы сеансов SSL. NLB проверяют IP-адреса и другую сетевую информацию для оптимального перенаправления трафика. GLB действуют как прозрачный сетевой шлюз (единая точка для входа и выхода всего трафика) и параллельно с распределением трафика масштабируют виртуальные устройства в соответствии с потребностями.
Сравнение принципов работы ALB, NLB и GLB
ALB, NLB и GLB предоставляют разные функции. Это означает, что они работают по-разному и содержат разные компоненты.
Как работает балансировщик нагрузки приложений (ALB)
ALB распределяют входящий трафик между несколькими целевыми объектами, например инстансами EC2. Предположим, что у нас есть приложение электронной коммерции с каталогом продуктов, корзиной покупок и функцией оформления заказа. ALB отправляет запросы на просмотр продуктов на те серверы, которые содержат изображения и видео, но не требуют поддерживать подключения. С другой стороны, запросы на просмотр корзины он отправляет на те серверы, которые могут поддерживать множество клиентских подключений и сохранять данные в течение длительного времени.
В ALB есть компонент слушателя, который проверяет наличие запроса на подключение от клиентов. Вы можете определить для слушателя правила, по которым балансировщик нагрузки будет передавать запросы зарегистрированным целевым объектам. Целевая группа позволяет распределить зарегистрированные целевые объекты по группам. Затем вы можете определить единые правила маршрутизации трафика для всей группы. Например, можно создать целевую группу для запросов общего характера и отдельные целевые группы для запросов к микросервисам приложения.
На следующей диаграмме показано, как работает ALB.
Как работает балансировщик сетевой нагрузки (NLB)
NLB распределяет трафик с учетом состояния сети. Предположим, что у вас есть несколько серверов баз данных с копиями одинаковых данных. NLB распределяет трафик на основе заранее определенных IP-адресов серверов или доступности серверов.
NLB отслеживает состояние зарегистрированных целевых объектов и направляет трафик только к тем из них, которые работают нормально. Получив запрос на подключение, балансировщик нагрузки выбирает целевой объект из целевой группы для правила по умолчанию. Он пытается открыть TCP-соединение с выбранным целевым объектом, используя указанный в конфигурации прослушивателя порт. Каждое TCP-соединение перенаправляет к одному целевому объекту на протяжении всего срока существования этого соединения. Аналогичным образом, вы можете направлять поток UDP к одному целевому объекту на протяжении всего срока существования потока.
Как работает балансировщик нагрузки шлюза (GLB)
С помощью GLB можно развертывать, администрировать и масштабировать виртуальные устройства, например системы обнаружения и предотвращения вторжений, брандмауэры и системы глубокой проверки пакетов. Он создает единую точку входа и выхода для всего трафика устройств и изменяет количество виртуальных устройств в зависимости от нагрузки. Его также можно использовать для передачи трафика через границы виртуального частного облака (VPC).
В GLB правила настраиваются с помощью таблиц маршрутов. В зависимости от заданных правил GLB выбирает разные целевые группы для пересылки трафика. Он принимает IP-пакеты и направляет трафик определенным целевым группам.
Ключевые различия между ALB, NLB и GLB
ALB, NLB и GLB работают на разных уровнях сетевого взаимодействия. ALB работает на уровне 7 модели OSI, что позволяет изменять и маршрутизировать трафик на уровне приложения. NLB работает на уровне 4, управляя трафиком на уровне сети, то есть на основе портов и IP-адресов. GLB работает на уровнях 3 и 7, предоставляя не только балансировку и маршрутизацию трафика на сетевом уровне, но и функциональные возможности шлюза.
Вот еще несколько важных различий между ALB, NLB и GLB.
Допустимые типы целевых объектов
Целевым объектом называют конечную точку, на которую направляет трафик каждый из этих балансировщиков нагрузки. Для ALB это IP-адреса, инстансы и объекты AWS Lambda. Для NLB это IP-адреса и инстансы, также он умеет передавать трафик в ALB для реализации более сложных сценариев. Для GLB это IP-адреса и инстансы.
Сведения об инстансах в облачных вычислениях
Поведение прокси
Действия балансировщика нагрузки при получении запроса от клиента выполняются по одному из следующих алгоритмов:
- балансировщик нагрузки действует как прокси-сервер и завершает соединение с клиентом;
- балансировщик нагрузки передает запрос дальше, не прерывая его.
Завершение потока позволяет балансировщикам нагрузки применять для управления трафиком дополнительные функции, например завершение SSL, сохранение сеансов и маршрутизация на основе содержимого.
ALB прерывает клиентское соединение и устанавливает новое соединение, выполняя роль прокси-сервера. NLB также прерывает клиентское соединение и создает новое от имени клиента. GLB, в свою очередь, не берет на себя функции роли прокси-сервера и не прерывает соединение, а просто перенаправляет трафик.
Протоколы
Разные балансировщики нагрузки поддерживают разные протоколы для обработки определенных типов трафика и дополнительных функций. ALB поддерживает протоколы HTTP, HTTPS и gRPC для веб-трафика. NLB поддерживает протоколы TCP, UDP и TLS, которые нужны для распределения трафика на сетевом уровне. Наконец, GLB выполняет маршрутизацию на основе IP, то есть поддерживает любые протоколы на основе IP.
Алгоритмы
Эти балансировщики нагрузки используют различные типы алгоритмов для равномерного распределения трафика между целевыми объектами. По умолчанию ALB использует циклический алгоритм, то есть передает каждый запрос следующему в списке целевому объекту. В NLB используется алгоритм хэширования потоков, позволяющий передавать трафик определенным целевым объектам в соответствии с заранее определенными правилами. GLB применяет для выбора целевого объекта поиск по таблице маршрутизации.
Выбор между ALB, NLB и GLB
ALB будет правильным выбором, если требуется гибкое управление трафиком и маршрутизация на уровне приложений. Лучше всего работает с микросервисами, контейнерными средами и веб-приложениями. Такие функции, как завершение SSL, сохранение сеанса и маршрутизация на основе содержимого, окажут неоценимую помощь в сложных сценариях маршрутизации.
NLB лучше всего подходит для высокопроизводительной системы балансировки на уровне сети с малой задержкой и хорошей масштабируемостью. NLB, с учетом его высокой надежности, используется в приложениях, которые распределяют трафик на транспортном уровне. NLB традиционно применяется в игровых системах, сервисах потоковой передачи мультимедиа и крупных системах Интернета вещей.
GLB идеально подходит для балансировки трафика на уровне сетевого шлюза. Например, GLB будет правильным вариантом для управления передачей трафика между облачной и локальной средами или между средами в разных регионах. Благодаря сочетанию балансировки на уровнях 3 и 4 модели OSI он будет хорошо маршрутизировать трафик между разными регионами и сетями. Поддержка маршрутизации на основе IP позволяет распределять трафик между виртуальными шлюзами, обеспечивая высокую масштабируемость и доступность.
Краткое описание различий между ALB, NLB и GLB
Балансировщик нагрузки приложений (ALB) |
Балансировщик сетевой нагрузки (NLB) |
Балансировщик нагрузки шлюза (GLB) |
|
Уровень в модели OSI |
Работает на прикладном (7) уровне. |
Работает на транспортном (4) уровне. |
Работает на сетевом (3) и прикладном (7) уровнях. |
Допустимые типы целевых объектов |
Работает с IP-адресами, инстансами и объектами Lambda. |
Работает с IP-адресами, инстансами и ALB. |
Работает с IP-адресами и инстансами. |
Поведение прокси |
Завершает соединение. |
Завершает соединение. |
Не прекращает поток. |
Протоколы |
Поддерживает протоколы HTTP, HTTPS и gRPC. |
Поддерживает протоколы TCP, UDP и TLS. |
Поддерживает маршрутизацию на основе IP. |
Алгоритмы |
Круговой. |
Хэш потоков. |
Поиск в таблице маршрутизации. |
Как AWS может помочь удовлетворить ваши требования к балансировке нагрузки?
Эластичная балансировка нагрузки (ELB) – это полностью управляемый сервис балансировки нагрузки. Он автоматически распределяет входящий трафик приложений между несколькими целевыми объектами и виртуальными устройствами в Amazon Web Services (AWS) и локальных ресурсах. Кроме того, он поддерживает межзонную балансировку нагрузки между регионами AWS. Вы можете использовать ELB для настройки ALB, NLB или GLB в соответствии с вашими требованиями.
ALB является одним из компонентов ELB. ELB также поддерживает NLB, GLB и Классический балансировщик нагрузки. Эти балансировщики нагрузки выполняют роль точек контакта с клиентами, помогают повысить масштабируемость приложений и обеспечивают безопасное управление. При настройке ELB для облачной среды вы можете выбрать один или несколько балансировщиков нагрузки и настроить их.
Создайте аккаунт уже сегодня и примените балансировку нагрузки на AWS.