Балансировка Нагрузки С Помощью Aws Elb

Всем привет! Курс стартует сегодня «AWS для разработчиков» , в связи с чем мы провели соответствующий тематический вебинар, посвященный обзору ELB. Мы рассмотрели типы балансировщиков и создали несколько экземпляров EC2 с балансировщиком.

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



Балансировка нагрузки с помощью AWS ELB




После прослушивания вебинара , Вы будете:
  • понять, что такое AWS Load Balancing;
  • знать типы Elastic Load Balancer и его компоненты;
  • используйте AWS ELB в своей практике.

Зачем вам вообще это знать?
  • полезно, если вы планируете сдавать сертификационные экзамены AWS;
  • это простой способ распределить нагрузку между серверами;
  • Это простой способ добавить Lambda в ваш сервис (ALB).

Провёл открытый урок.

Ришат Терегулов , системный инженер в маркетинговой компании по разработке и поддержке веб-сайтов.



Введение

Что такое Elastic Load Balancer, можно увидеть на диаграмме ниже, на которой показан простой пример:

Балансировка нагрузки с помощью AWS ELB

Load Balancer принимает запросы и распределяет их по экземплярам.

У нас есть один отдельный экземпляр, есть Lambda-функции и есть группа AutoScaling (группа серверов).



Типы AWS ELB

1. Давайте рассмотрим основные виды : Классический балансировщик нагрузки.

Самый первый балансировщик нагрузки от AWS работает как на уровне 4, так и на уровне 7 OSI, поддерживая HTTP, HTTPS, TCP и SSL. Он обеспечивает базовую балансировку нагрузки между несколькими экземплярами Amazon EC2 и работает как на уровне запроса, так и на уровне соединения.

Откроем его (выделено серым):

Балансировка нагрузки с помощью AWS ELB

Этот балансировщик считается устаревшим, поэтому его рекомендуется использовать только в определенных случаях.

Например, для приложений, созданных в сети EC2‑Classic. В принципе, нам никто не мешает его создать:

Балансировка нагрузки с помощью AWS ELB

2. Балансировщик сетевой нагрузки.

Подходит для тяжелых рабочих нагрузок, работает на уровне OSI 4 (может использоваться в EKS и ECS), поддерживаются TCP, UDP и TLS. Network Load Balancer направляет трафик к целям в Amazon VPC и способен обрабатывать миллионы запросов в секунду со сверхнизкой задержкой.

Кроме того, он оптимизирован для обработки трафика с внезапными и меняющимися нагрузками.

3. Балансировщик нагрузки приложений .

Работает на уровне 7, имеет поддержку Lambda, поддерживает правила уровня заголовка и пути, поддерживает HTTP и HTTPS. Обеспечивает расширенную маршрутизацию запросов, ориентированную на доставку приложений, созданных на современных архитектурах, включая микросервисы и контейнеры.

Направляет трафик к целевым объектам в Amazon VPC на основе содержимого запроса.

Для многих пользователей Application Load Balancer был первым вариантом замены Classic Load Balancer, поскольку TCP не так распространен, как HTTP. Создадим и его, в результате чего у нас уже будет два балансировщика нагрузки:

Балансировка нагрузки с помощью AWS ELB



Компоненты балансировки нагрузки

Общие компоненты балансировки нагрузки (общее для всех балансиров):
  • Политика ведения журнала доступа
— ваши журналы доступа к ELB. Для внесения настроек можно перейти в Описание и выбрать кнопку «Редактировать атрибуты»:

Балансировка нагрузки с помощью AWS ELB

Затем указываем S3Bucket — объектное хранилище Amazon:

Балансировка нагрузки с помощью AWS ELB

  • Схема
— внутренний или внешний балансир.

Вопрос в том, должен ли ваш LoadBalancer получать внешние адреса, чтобы быть доступным извне, или это может быть ваш внутренний балансировщик нагрузки;

  • Группы безопасности
— контроль доступа к балансировщику.

По сути, это межсетевой экран высокого уровня.



Балансировка нагрузки с помощью AWS ELB



Балансировка нагрузки с помощью AWS ELB

  • Подсети
— подсети внутри вашего VPC (и соответственно зоны доступности).

Подсети указываются при создании.

Если VPC ограничены регионом, то подсети ограничены зонами доступности.

При создании балансировщика нагрузки лучше создать его как минимум в двух подсетях (помогает, если возникают проблемы с одной зоной доступности);

  • Слушатели
— протоколы вашего балансировщика.

Как говорилось ранее, для Classic Load Balancer это могут быть HTTP, HTTPS, TCP и SSL, для Network Load Balancer — TCP, UDP и TLS, для Application Load Balancer — HTTP и HTTPS. Пример классического балансировщика нагрузки:

Балансировка нагрузки с помощью AWS ELB

А вот в Application Load Balancer мы видим немного другой интерфейс и вообще другую логику:

Балансировка нагрузки с помощью AWS ELB



Компоненты Load Balancer v2 (ALB и NLB)

Теперь давайте подробнее рассмотрим балансировщики версии 2 Application Load Balancer и Network Load Balancer. Эти балансиры имеют свои особенности компонентов.

Например, появилось такое понятие, как Target Groups — экземпляры (и функции).

Благодаря этому компоненту у нас есть возможность указать, на какую из Целевых групп мы хотим направить трафик.



Балансировка нагрузки с помощью AWS ELB



Балансировка нагрузки с помощью AWS ELB

Говоря простым языком, в Target Groups мы указываем инстансы, куда будет приходить трафик.

Если в том же Classic Load Balancer вы просто сразу подключаете интенсивность к балансировщику, то в Application Load Balancer вы сначала:

  • создать балансировщик нагрузки;
  • создать Целевую группу;
  • направлять через необходимые порты или правила балансировщика нагрузки в необходимые целевые группы;
  • в целевых группах вы назначаете экземпляры.

Такая логика работы может показаться более сложной, но на самом деле она более удобна.

Следующий компонент — Правила прослушивателя (правила маршрутизации).

Это относится только к Application Load Balancer. Если в Network Load Balancer вы просто создаете Listener, и он отправляет трафик в определенную Целевую группу, то в Application Load Balancer все веселее и удобнее .



Балансировка нагрузки с помощью AWS ELB

Теперь скажем несколько слов о следующем компоненте – Эластичный IP (статические адреса для NLB).

Если правила маршрутизации прослушивателей влияли только на балансировщик нагрузки приложений, то Elastic IP влиял только на балансировщик сетевой нагрузки.

Давайте создадим балансировщик сетевой нагрузки:

Балансировка нагрузки с помощью AWS ELB



Балансировка нагрузки с помощью AWS ELB

И как раз в процессе создания мы увидим, что нам предоставлена возможность выбрать Elastic IP:

Балансировка нагрузки с помощью AWS ELB

Elastic IP предоставляет единый IP-адрес, который со временем может быть связан с различными экземплярами EC2. Если экземпляр EC2 имеет эластичный IP-адрес и этот экземпляр прекращен или остановлен, вы можете немедленно связать новый экземпляр EC2 с эластичным IP-адресом.

Однако ваше текущее приложение не перестанет работать, поскольку приложения по-прежнему видят тот же IP-адрес, даже если реальный EC2 изменился.

Здесь другой вариант использования на тему, зачем нужен Elastic IP. Смотрите, мы видим 3 IP-адреса, но они не останутся здесь навсегда:

Балансировка нагрузки с помощью AWS ELB

Amazon меняет их со временем, может быть, каждые 60 секунд (но на практике, конечно, реже).

Это означает, что IP-адреса могут меняться.

А в случае с Network Load Balancer вы можете просто привязать IP-адрес и указать его в своих правилах, политиках и т. д.

Балансировка нагрузки с помощью AWS ELB



Делать выводы

ELB обеспечивает автоматическое распределение входящего трафика по нескольким целям (контейнерам, инстансам Amazon EC2, IP-адресам и функциям Lambda).

ELB способен распределять трафик с различной нагрузкой как внутри одной зоны доступности, так и по нескольким зонам доступности.

Пользователь может выбрать один из трёх типов балансировщиков, обеспечивающих высокую доступность, автомасштабирование и хорошую защиту.

Все это важно для обеспечения отказоустойчивости ваших приложений.

Основные преимущества:

  • высокая доступность .

    Соглашение об обслуживании предполагает доступность балансировщика нагрузки на уровне 99,99%.

    Например, наличие нескольких зон доступности гарантирует, что трафик обрабатывается только исправными объектами.

    Фактически вы можете балансировать нагрузку по всему региону, перенаправляя трафик на работоспособные цели в разных зонах доступности;

  • безопасность .

    ELB работает с Amazon VPC, обеспечивая различные возможности безопасности — интегрированное управление сертификатами, аутентификацию пользователей и расшифровку SSL/TLS. Все вместе обеспечивает централизованное и гибкое управление настройками TLS;

  • эластичность .

    ELB может обрабатывать внезапные изменения сетевого трафика.

    А глубокая интеграция с Auto Scaling дает приложению достаточно ресурсов при изменении нагрузки, не требуя ручного вмешательства;

  • гибкость .

    Вы можете использовать IP-адреса для маршрутизации запросов к целям ваших приложений.

    Это обеспечивает гибкость при виртуализации целевых приложений и дает возможность размещать несколько приложений в одном экземпляре.

    Поскольку приложения могут использовать один сетевой порт и иметь отдельные группы безопасности, связь между приложениями упрощается, когда мы имеем, скажем, архитектуру на основе микросервисов;

  • мониторинг и аудит .

    Вы можете отслеживать приложения в режиме реального времени с помощью функций Amazon CloudWatch. Речь идет о метриках, журналах, отслеживании запросов.

    Проще говоря, вы сможете довольно точно выявлять проблемы и узкие места в производительности;

  • гибридная балансировка нагрузки .

    Возможность балансировать нагрузку между локальными ресурсами и AWS с помощью одного и того же балансировщика нагрузки упрощает миграцию или расширение локальных приложений в облако.

    Обработка сбоев также упрощается с использованием облака.

Если вас интересуют подробности, вот еще пара полезных ссылок с официального сайта Amazon:
  1. Эластичная балансировка нагрузки .

  2. Возможности эластичной балансировки нагрузки.

Теги: #облачные сервисы #cloud #aws
Вместе с данным постом часто просматривают: