Load Balancer

Application Load Balancer (ALB) - сетевой сервис, который распределяет входящий публичный веб-трафик между виртуальными серверами для обеспечения отказоустойчивости веб-сайтов и приложений.

Как это работает:
Балансировщик нагрузки (ALB) позволяет равномерно направлять веб-трафик или трафик TLS на виртуальные машины, относящиеся к одному Compute-сервису, на основе доменного имени в протоколе HTTP или расширения Server Name Indication (SNI) протокола TLS.
При резком изменении объема входящего трафика балансировщик равномерно распределяет весь объем запросов между ресурсами по алгоритму Round-robin. ALB обеспечивает возможность автоматического обновления сертификатов LetsEncrypt и возможность загрузки собственных сертификатов. Перенаправление через ALB не требует открытия портов назначения виртуальных машин в Network Security Group во вкладке Firewall. ALB предоставляет доступ на основном публичном адресе аккаунта только по портам 80 и 443. Данные порты могут быть переназначены в приложении Port-Forwarding.

Функция Проверка работоспособности(HealthCheck) позволяет исключить неработоспособные серверы из ротации балансировки нагрузки. ALB проверяет, что происходит с виртуальными машинами, которые отвечают за созданный маршрут веб-трафика. В случае, если ВМ недоступна (выключена/сломана), то проверка работоспособности помогает не направлять веб-трафик на данную ВМ.

Управление ALB доступно только для пользователей с ролью Администратора аккаунта.

Вкладка Веб-маршруты содержит список маршрутов веб-трафика ALB.
Пользователь может создавать, редактировать, просматривать и удалять маршруты.

Создание и настройка маршрута

Подготовка

Перед созданием нового маршрута пользователь должен настроить запись DNS CNAME, указывающую на общедоступное имя хоста ALB, чтобы разрешить интернет-трафику доступ к экземпляру ALB (Создание CNAME записи), а затем подготовить виртуальную машину.

Примечание: подразумеваем подготовленную виртуальную машину с веб-сервером на порту 80.

Создание маршрута

  1. На вкладке Веб-маршруты нажмите Создать маршрут.
  2. В появившемся окне введите:
  • Имя - название маршрута в рамках проекта;
  • Имя сервера – публичное имя хоста для маршрута;
  • Путь, который маршрутизатор отслеживает для маршрутизации трафика к сервису (опционально);
  • Целевой порт для трафика (опционально).

  1. В Целевых сервисах выберите Сервис(ы)для балансировки нагрузки (каждый сервис имеет вес, определяющий объем получаемого трафика).
  2. Выберите тип IP-интерфейса: IPv4/ IPv6.
  3. Настройте Проверку работоспособности, чтобы удалить неработоспособные виртуальные машины из ротации балансировки нагрузки:
  • Путь (опционально) определяет путь URL-адреса сервера для конечной точки проверки работоспособности.
  • Схема (опционально) заменяет схему URL-адреса сервера для конечной точки проверки работоспособности.
  • Имя сервера (опционально) задает значение имени хоста в заголовке хоста запроса на проверку работоспособности.
  • Порт (опционально) заменяет порт URL-адреса сервера для конечной точки проверки работоспособности.
  • Интервал (по умолчанию: 30 сек) определяет частоту вызовов проверки работоспособности.
  • Тайм-аут (по умолчанию: 5 сек) определяет максимальную продолжительность, в течение которой ALB будет ждать запроса на проверку работоспособности, прежде чем считать сервер неработоспособным.
  • Заголовки (опционально) определяют пользовательские заголовки, которые будут отправлены в конечную точку проверки работоспособности.
  • Перенаправление (по умолчанию: да) определяет, следует ли следовать перенаправлениям во время вызовов проверки работоспособности.
  • Метод (по умолчанию: GET) определяет метод HTTP, который будет использоваться при подключении к конечной точке.

  1. Выберите настройки Безопасности для маршрутов или оставьте флажок Безопасный маршрут пустым.
    При выборе Безопасного маршрута укажите тип терминации TLS:
  • edge
    При edge-терминации, терминация зашифрованного TLS-трафика происходит на ALB, далее уже расшифрованный трафик проксируется на внутренние IP-адреса виртуальных машин на порт HTTP (80/tcp). Для терминации TLS-трафика используется загруженный сертификат, если он соответствует полю Имя сервера веб-маршрута, иначе происходит попытка выпуска сертификата LetsEncrypt. Если выпуск LetsEncrypt сертификата не удался по какой-либо причине (например, DNS-запись не настроена на публичный хостнейм ALB, закончился лимит на запросы), то будет использован самоподписанный сертификат по-умолчанию.
  • passthrough
    При passthrough-терминации зашифрованный трафик отправляется прямо в пункт назначения без расшифровки трафика. В этом случае балансировщик обеспечивает только распределение трафика между сервисами в соответствии с весами. В настоящее время это единственный метод, поддерживающий авторизацию по клиентским сертификатам (также известный как двусторонняя аутентификация).
  • re-encrypt
    Это вариант edge-терминации, когда TLS-протокол завершается ALB сертификатом, а затем повторно шифрует свое соединение с конечной точкой на порту HTTPS (443/tcp), которая может иметь другой сертификат. Поэтому полный путь соединения шифруется даже во внутренней сети. ALB использует проверки работоспособности для определения доступности хоста.

Примечание: В режиме re-encrypt ALB на данный момент не проверяет достоверность сертификата хоста назначения, таким образом можно использовать самоподписанные сертификаты.

  1. Выберите политику для трафика по небезопасным схемам:
  • allow - позволяет проходить HTTP-трафику;
  • redirect - автоматически перенаправляет клиента с HTTP на HTTPS (используется код HTTP 301).
  1. Выберите один из TLS Сертификатов, ассоциированных с данным маршрутом.

  2. Нажмите Создать.

Новый маршрут появится в общем списке, где можно будет отредактировать его настройки или удалить при помощи бокового меню или нажав соответствующие кнопки в Детали.
Для просмотра деталей созданного маршрута просто нажмите на него.

Новый маршрут появится в общем списке, где можно будет отредактировать его настройки или удалить при помощи бокового меню.

Сертификаты

Во вкладке Сертификаты можно добавить сертификаты TLS для для edge и повторного шифрования терминации. Сертификаты должны быть в формате PEM. Пользователь имеет возможность добавлять, редактировать, просматривать и удалять сертификаты.

Добавление сертификатов

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

  1. На вкладке Сертификаты нажмите Добавить;
  2. Введите Название для сертификатов;
  3. Нажмите Выбрать и добавьте необходимые сертификаты (или перетащите и вставьте из буфера обмена);
  4. Нажмите Добавить.

Для просмотра сведений о добавленном сертификате просто нажмите на него.
Редактировать и удалять сертификаты можно двумя способами. Сделать это можно с помощью бокового меню (иконка из трех точек) или нажав соответствующие кнопки в Детали.

Примечание: При использовании собственных сертификатов, для корректной работы в систему должен быть загружен только один сертификат, относящийся к доменному имени. Например, если у загруженного сертификата истёк срок действия - его нужно удалить и загрузить актуальный.