Application Load Balancer

Балансируйте нагрузку на трафик HTTP и HTTPS с помощью расширенной маршрутизации запросов, ориентированной на доставку современных приложений.

Для чего нужен балансировщик нагрузки приложений

Балансировщик нагрузки приложений работает на уровне запросов (уровень 7) и направляет трафик целевым объектам (инстансам EC2, контейнерам, IP-адресам и функциям Lambda) на основании содержимого запроса. Балансировщик нагрузки приложений идеально подходит для балансировки нагрузки трафика HTTP и HTTPS и обеспечивает расширенную маршрутизацию запросов, ориентированную на доставку приложений, которые созданы на базе современных архитектур, включая микросервисы и приложения на основе контейнеров. Балансировщик нагрузки приложений упрощает приложение и повышает уровень его безопасности, обеспечивая неукоснительное использование самых последних протоколов и шифров SSL / TLS.

Page Topics

Функции

Функции

Взаимный протокол TLS – это протокол двусторонней аутентификации между клиентами и серверами, использующими идентификаторы на основе сертификатов x509. С помощью этой функции ALB аутентифицирует и выполняет проверку сертификатов клиентов, выданных сторонними (CA) или частными центрами сертификации (ACM PCA). Балансировщик нагрузки также передает данные сертификатов клиентов для целей, которые приложение может использовать для принятия решений об авторизации. 

Функция автоматического взвешивания заданных целей (ATW) использует новый алгоритм случайной балансировки нагрузки, который повышает доступность приложений даже при ухудшении их целевых показателей. Алгоритм анализирует коды состояния HTTP и частоту ошибок TCP/TLS для выявления целей с более высокой частотой ошибок, чем у аналогов в той же целевой группе. Определив неэффективные цели, ATW регулирует объем трафика, направляемого на каждую из них, в зависимости от производительности, помогая проблемной цели успешно восстановиться.

Вы можете балансировать нагрузку трафика HTTP/HTTPS на целевые объекты — инстансы Amazon EC2, микросервисы и контейнеры на основе атрибутов запроса (такие как заголовки X-Forwarded-For).

При использовании облака Amazon Virtual Private Cloud (VPC) можно создать группы безопасности, связанные с Elastic Load Balancing, и управлять ими для обеспечения дополнительных возможностей, связанных с сетевой конфигурацией и безопасностью. Можно настроить балансировщик нагрузки для работы с выходом в Интернет или создать его без публичного IP‑адреса для работы в качестве внутреннего балансировщика нагрузки (без выхода в Интернет).

ALB поддерживает реализацию защиты Desync на основе библиотеки http_desync_guardian. Благодаря этой новой функции приложения клиентов защищены от уязвимостей HTTP, связанных с Desync, без серьезных компромиссов в отношении доступности и (или) задержек. Клиенты также могут выбирать уровень устойчивости к подозрительным запросам в зависимости от архитектуры приложения.

Балансировщик нагрузки приложений (ALB) поддерживает AWS Outposts – полностью управляемый сервис, который делает инфраструктуру, сервисы и инструменты AWS доступными практически для любого центра обработки данных, колокационного пространства или локального объекта, а также позволяет создать действительно единообразную гибридную среду. Клиенты могут выделять ALB для поддерживаемых типов инстансов — ALB автоматически масштабируется до мощности, доступной в стойке, чтобы подстраиваться под различные уровни нагрузки приложений без вмешательства оператора. Также могут получать уведомления, помогающие им определить потребности в мощности, связанные с балансировкой нагрузки. Клиенты могут использовать те же консоль AWS, API и CLI для выделения и управления ALB на Outposts, которые используют для ALB в Region.

Application Load Balancer поддерживает использование HTTPS‑терминации между клиентами и балансировщиком нагрузки. Балансировщик нагрузки приложений также позволяет управлять SSL‑сертификатами с помощью AWS Identity and Access Management (IAM) и AWS Certificate Manager для предопределенных политик безопасности.

HTTP/2 – это протокол передачи гипертекста (HTTP) новой версии, который использует единое мультиплексное соединение, обеспечивающее отправку нескольких запросов по одному соединению. Протокол предусматривает сжатие данных заголовка перед отправкой в двоичном формате, а также поддерживает установку SSL‑соединения с клиентами.

ALB может маршрутизировать и балансировать трафик gRPC между микросервисами или клиентами и службами с поддержкой gRPC, Это позволяет беспрепятственно внедрить в архитектуру управление трафиком gRPC без изменения базовой инфраструктуры клиентов или сервисов. gRPC использует HTTP/2 для транспортировки и становится предпочтительным протоколом для межсервисного взаимодействия в микросервисных архитектурах. Он имеет такие функции, как эффективная двоичная сериализация и поддержка множества языков, а также преимущества, присущие HTTP/2, а именно меньшие требования к ресурсам сети, сжатие и двунаправленная потоковая передача, что делает его лучше устаревших протоколов, таких как REST.

Можно создать слушатель HTTPS, использующий зашифрованные соединения (также известный как разгрузка SSL). Эта функция обеспечивает шифрование трафика между балансировщиком нагрузки и клиентами, инициирующими сеансы SSL или TLS. Балансировщик нагрузки приложений поддерживает терминацию сессий TLS. Это позволяет передать задачи по терминации TLS на балансировщик нагрузки, сохранив при этом IP-адрес для серверных приложений. Благодаря встроенным политикам безопасности ваши обработчики событий TLS будут отвечать стандартам безопасности и соответствия требованиям. Для управления сертификатами серверов можно использовать AWS Certificate Manager (ACM) или AWS Identity and Access Management (IAM).

SNI поможет предоставлять множество безопасных веб-сайтов с помощью одного обработчика событий TLS. Если имя хоста клиента соответствует нескольким сертификатам, балансировщик нагрузки выбирает наиболее подходящий из них с помощью алгоритма интеллектуального подбора.

Закрепленные сеансы – это механизм маршрутизации запросов из одного и того же клиента к одному и тому же получателю. Балансировщики нагрузки приложений поддерживают как файлы cookie, основанные на сроке действия, так и файлы cookie на основе приложений. Ключ к управлению закрепленными сеансами заключается в определении того, как долго балансировщик нагрузки должен последовательно направлять запрос пользователя к одному и тому же целевому объекту. Закрепленные сеансы доступны на уровне целевой группы. Во всех целевых группах можно использовать сочетание закрепленности на основе срока действия, закрепленности на основе приложения и отсутствия закрепленности.

Балансировщик нагрузки приложений поддерживает работу по интернет-протоколу версии 6 (IPv6) в облаке VPC. Это позволяет клиентам подключаться к Application Load Balancer по протоколам IPv4 или IPv6.

Балансировщик нагрузки приложений вставляет специальный идентификатор X‑Amzn‑Trace‑Id в HTTP‑заголовки всех запросов, поступающих в балансировщик нагрузки. Возможность отслеживания запросов позволяет использовать уникальный идентификатор для отслеживания запроса при прохождении через различные сервисы, которые составляют основную часть трафика ваших веб‑сайтов и распределенных приложений. Уникальный идентификатор отслеживания можно использовать для того, чтобы выявить любые проблемы с производительностью или синхронизацией в стеке приложения с детализацией на уровне отдельного запроса.

Балансировщик нагрузки приложений может перенаправить входящий запрос с одного URL на другой. Возможности сервиса позволяют перенаправлять HTTP-запросы в форме HTTPS-запросов, чтобы обеспечить соответствие требованиям в части безопасного использования браузеров и одновременно оптимизировать для своего сайта результаты поискового ранжирования и показатели использования SSL/TLS. Перенаправления также можно использовать для переключения пользователей на другой веб-сайт, например для переключения со старой версии приложения на новую.

Application Load Balancer позволяет контролировать, какие запросы клиентов будут обработаны приложениями. Такая возможность позволяет в ответ на входящие запросы выдавать коды ошибок HTTP и настраиваемые сообщения об ошибках на уровне балансировщика нагрузки, не перенаправляя такие запросы в приложение

WebSocket позволяет серверу в режиме реального времени обмениваться сообщениями с конечными пользователями, избавляя их от необходимости запрашивать (или опрашивать) этот сервер на наличие обновлений. Протокол WebSocket обеспечивает двунаправленные каналы связи между клиентом и сервером в установленном длительное время TCP-соединении.

Server Name Indication (SNI) – это расширение протокола TLS, с помощью которого клиент обозначает имя узла для подключения в начале установления связи по протоколу TLS. Балансировщик нагрузки может передавать через один и тот же обработчик событий безопасности множество сертификатов, благодаря чему он способен поддерживать множество защищенных веб-сайтов через один обработчик событий безопасности. Балансировщики Application Load Balancer также поддерживают интеллектуальный алгоритм выбора сертификатов при работе с SNI. Если имя узла, обозначенное клиентом, соответствует нескольким сертификатам, балансировщик нагрузки определяет наилучший сертификат на основании ряда факторов, в том числе учитывая возможности клиента.

Применять балансировку нагрузки можно для любого приложения, размещенного в AWS или локально, если использовать в качестве целевых объектов IP-адреса серверной части приложения. Это позволяет обеспечить балансировку нагрузки на сервер приложения, размещенный по любому IP-адресу и в любом интерфейсе инстанса. Каждое приложение, размещенное на том же инстансе, может относиться к своей группе безопасности и использовать один и тот же порт. Можно также использовать IP-адреса в качестве целевых объектов для приложений с балансировкой нагрузки, размещенных локально (через подключение с помощью Direct Connect или VPN-подключение), в VPC с пиринговым подключением или на инстансах EC2-Classic (с использованием ClassicLink). Возможность балансировки нагрузки между AWS и локальными ресурсами упрощает миграцию в облако, использование облака помимо локальной среды или использование облака для обработки отказа.

Балансировщики Application Load Balancer поддерживают вызов функций Lambda для обслуживания запросов HTTP(S), предоставляя пользователям доступ к бессерверным приложениям из любого HTTP-клиента, в том числе веб-браузеров. Можно зарегистрировать функции Lambda в качестве целевых объектов для балансировщика нагрузки и использовать поддержку правил маршрутизации на основе содержимого для маршрутизации запросов на разные функции Lambda. Балансировщик Application Load Balancer можно использовать в качестве стандартного адреса сервера HTTP в работе с приложениями, использующими серверы и бессерверные вычисления. Можно создавать веб-сайты с использованием исключительно функций Lambda или разрабатывать приложения, объединяя инстансы EC2, контейнеры, локальные серверы и функции Lambda.

Если приложение состоит из нескольких отдельных сервисов, балансировщик нагрузки приложений может направлять запрос в определенный сервис на основе содержимого запроса, такого как поле Host, URL-адрес, заголовок HTTP, метод HTTP, строка запроса или исходный IP-адрес.

Маршрутизация на основе хоста. Можно выполнять маршрутизацию запросов клиента в зависимости от поля Host заголовка HTTP – это позволяет осуществлять маршрутизацию в несколько доменов из одного и того же балансировщика нагрузки.

Маршрутизация на основе адреса. Можно выполнять маршрутизацию запросов клиента на основе URL‑адреса заголовка HTTP.

Маршрутизация на основе HTTP-заголовка. Можно выполнять маршрутизацию запросов клиента на основе значения любого стандартного или пользовательского заголовка HTTP.

Маршрутизация на основе HTTP-метода. Можно выполнять маршрутизацию запросов клиента на основе любого стандартного или пользовательского метода HTTP.

Маршрутизация на основе параметров строки запроса. Можно выполнять маршрутизацию запросов клиента на основе параметров запроса или строки запроса.

Маршрутизация на основе CIDR IP-адреса источника запроса. Можно выполнять маршрутизацию запросов клиента на основе CIDR IP-адреса источника запроса.

Балансировщик нагрузки приложений предоставляет расширенную поддержку контейнеров, распределяя нагрузку между несколькими портами одного инстанса Amazon EC2. Глубокая интеграция с Amazon Elastic Container Service (ECS) дает возможность получить полностью управляемое контейнерное решение. ECS позволяет указать динамический порт в определении задания ECS. В этом случае контейнеру, запланированному для инстанса EC2, будет передан неиспользуемый порт. Планировщик ECS автоматически добавляет задание в балансировщик нагрузки, используя этот порт.

Теперь можно использовать AWS WAF для защиты интернет‑приложений на балансировщиках Application Load Balancer. AWS WAF – это брандмауэр для интернет-приложений, который позволяет защитить их от распространенных сетевых эксплойтов, способных повлиять на доступность приложения, создать угрозу безопасности или задействовать чрезмерное количество ресурсов.

Балансировщик нагрузки приложений поддерживает циклический алгоритм балансировки нагрузки. Балансировщик нагрузки приложений дополнительно поддерживает режим плавного запуска с использованием циклического алгоритма балансировки нагрузки, что позволяет добавлять новые целевые объекты, не перегружая их запросами. В режиме плавного запуска происходит подготовка целевых объектов перед принятием запросов в полном объеме и постепенное наращивание нагрузки на протяжении настроенного периода подготовки. Плавный запуск отлично подходит для приложений, работа которых зависит от кэша и которым требуется некоторое время для выхода на оптимальную производительность ответов на запросы.

Возможности аутентификации можно перенести из приложений в Балансировщик нагрузки приложений. Балансировщик нагрузки приложений безопасно выполняет аутентификацию пользователей в процессе их доступа к облачным приложениям. Application Load Balancer эффективно интегрируется с Amazon Cognito, что позволяет конечным пользователям аутентифицироваться через поставщиков социальных удостоверений (например, Google, Facebook и Amazon), а также через поставщиков корпоративных удостоверений, использующих SAML (например, Microsoft Active Directory), или любого поставщика удостоверений, поддерживающего OpenID Connect (IdP). Если у вас есть собственное решение IdP, совместимое с OpenID Connect, Application Load Balancer может проводить аутентификацию корпоративных пользователей путем прямого подключения к указанному поставщику удостоверений.