AWS: Gateway Load Balancer — что это и для чего?
Балансировщик нагрузки (Elastic Load Balancer, далее ELB) — часто используемый элемент при проектировании архитектуры в AWS. Цель — эффективное распределение запросов между имеющимися инстансами, а также создание/удаление новых в рамках Auto Scaling Group.
В этой статье я бы хотел рассмотреть самый новый вид балансировщика из представленных в AWS — Gateway Load Balancer (далее GWLB).
На данный момент AWS предлагает 3 варианта ELB (v2*):
*4й вариант – Classic Load balancer (v1) – считается устаревшим и не рекомендуется для новых проектов.
Application Load Balancer (ALB). Для приложений, использующих HTTP/HTTPS — Level 7
Network Load Balancer (NLB). Для приложений, использующих TCP, UDP — Level 4.
Первые два достаточно давно известны и подробно разобраны, чего не скажешь о GWLB.
GWLB — Gateway Load balancer. Был представлен AWS в 2020 году и предназначен для достаточно специфичных задач — управление и масштабирование virtual appliance. Речь идет о системах контроля трафика, межсетевых экранах и т.д.
Общая схема работы GWLB ниже:
Схема работы GWLB
Клиент выполняет запрос к приложению.
GWLB получает запрос и отправляет его к группе virtual appliances. Количество этих virtual appliances может меняться динамически. Обмен запросами происходит через туннель протокола Geneve.
Запрос проверяется и возвращается на GWLB, либо прекращается обработка — в негативном сценарии.
GWLB перенаправляет запрос дальше на обработку к целевому сервису (destination на схеме).
На обратном пути та же схема: GWLB обработает трафик и вернет клиенту.
Cоздание GWLB помощью AWS Management Console.
Предполагаемая архитектура: используется два Virtual Private Cloud (далее VPC).
VPC-1: в нем находится GWLB Endpoint и бизнес-логика нашей системы — application servers.
VPC-2: в нем расположен GWLB и target group (далее TG) с апплайнсами, которые выполняют некую логику обработки трафика.
Схема предполагаемой системы
Для начала создадим тестовую TG, куда могут быть добавлены virtual appliances.
Для этого переходим в EC2 > Target groups > Create target group.
Необходимо выбрать протокол Geneve и порт 6081 — другие протоколы и порты не подойдут.
Теперь создадим наш первый GWLB. Для этого переходим в EC2 > Load balancers >Select load balancer type и выбираем Gateway Load Balancer.
GWLB
После кнопки Create необходимо указать базовые настройки:
Basic GWLB
GWLB и TG должны находиться в одном VPC с зарегистрированными virtual appliances.
Network mapping GWLB
Осталось выбрать созданную ранее TG.
TG
Итак, мы создали наш GWLB. Продолжим конфигурацию других компонентов — создадим Endpoint Service для нашего GWLB. Выбираем тип Gateway.
Create endpoint service
И указываем созданный раннее GWLB.
Available load balancers
Осталось создать Endpoint категории Other endpoint services.
Create endpoint
В поле service name указываем адрес ранее созданного endpoint service.
Service settings
Endpoint создан. Возвращаемся в Endpoint Services и подтверждаем присоединение endpoint.
Endpoint services
Вместо вывода:
В этой статье мы рассмотрели и создали пример рабочего Gateway Load Balancer — одного из видов балансировщиков нагрузки, которые предлагает нам AWS. Балансировщик имеет достаточно специфичное применение — масштабирование и управление virtual appliances, такими как межсетевые экраны (firewall), системы обнаружения и предотвращения вторжений (intrusion detection system / intrusion prevention system), а также системы глубокой проверки пакетов (deep packet inspection). Он объединяет прозрачный сетевой шлюз (то есть единую точку входа и выхода для всего трафика) и распределяет трафик, одновременно масштабируя ваши виртуальные устройства в соответствии с потребностями.