Балансировщик нагрузки
Application Load Balancer (ALB) - сетевой сервис, который распределяет входящий публичный веб-трафик между виртуальными серверами для обеспечения отказоустойчивости веб-сайтов и приложений.
Настройки балансировщика доступны на вкладке Load balancer раздела Networking.
Балансировщик нагрузки (ALB) позволяет равномерно направлять веб-трафик или трафик TLS на виртуальные машины сервиса Compute, на основе доменного имени в протоколе HTTP или расширения Server Name Indication (SNI) протокола TLS.
При балансировке траффика на нескольких виртуальных машин балансировщик равномерно распределяет весь объем запросов между ресурсами по алгоритму Round-robin.
ALB обеспечивает возможность автоматического обновления сертификатов Lets Encrypt и возможность загрузки собственных сертификатов. 
Примечание: ALB предоставляет доступ на основном публичном адресе аккаунта только по портам 80 и 443. Данные порты могут быть переназначены в разделе Port-Forwarding.
Функция Проверка работоспособности (HealthCheck) позволяет исключить неработоспособные серверы из ротации балансировки нагрузки. ALB проверяет коды HTTP-ответа серверов, которые отвечают за созданный маршрут веб-трафика. В случае, если виртуальная машина не отвечает на запросы, то балансировщик перестает направлять на нее траффик до восстановления работоспособности.  
Вкладка Веб-маршруты содержит список маршрутов веб-трафика ALB.
Пользователь с правами Administrator может создавать, редактировать, просматривать и удалять маршруты.  
 
  
Примечание: Перенаправление через ALB не требует открытия портов назначения виртуальных машин в Network Security Group во вкладке Firewall.
Создание маршрута
Подготовка DNS домена
Перед созданием нового маршрута пользователь должен настроить запись DNS CNAME, указывающую на общедоступное имя хоста ALB, чтобы разрешить интернет-трафику доступ к экземпляру ALB.
Необходимо указать, что домен, на котором будет работать серис на публичный хост (или IP адрес) балансировщика нагрузки аккаунта.
Доменное имя балансировщика указано на вкладке Веб-маршруты и имеет вид:
<account_name>.alb.<location_name>.icdc.io.
 
  
Если используемое доменное имя управляется на стороне сервиса DNS Prime Cloud то необходимую настройку можно выполнить там.
В случае если домен управляется сторонними DNS-серверами, то запись CNAME потребуется добавить на эти серверы.  
Пример DNS-записи для example.com:
example.com CNAME testacc.alb.pkz.icdc.io
Создание нового маршрута
На вкладке Веб-маршруты нажмите Создать маршрут.
В появившемся окне введите:  
- Имя- название маршрута в рамках проекта;
- Имя сервера– публичное имя хоста для маршрута
- Путь, который маршрутизатор отслеживает для маршрутизации трафика к сервису (опционально)
- Целевой порт, на котором работает веб-сервер на виртуальной машине (опционально). Значение по умолчанию: порт 80
 
  
- В Целевых сервисахвыберите Сервис(ы)для балансировки нагрузки (каждый сервис имеет вес, определяющий объем получаемого трафика)
- Выберите тип IP-интерфейса: IPv4/ IPv6
- Настройте Проверку работоспособности(Health Check), опционально
- Выберите настройки Безопасности для маршрутов или оставьте флажок Безопасный маршрутпустым
- Нажмите Создать
Новый маршрут появится в общем списке, где можно будет отредактировать его настройки или удалить при помощи бокового меню или нажав соответствующие кнопки в Детали.
Для просмотра деталей созданного маршрута просто нажмите на него. 
Настройки проверки работоспособности
Проверка работоспособности(Health check) настраивается при наличии нескольких целевых сервисов и позволяет автоматически исключить из балансировки неработоспособные узлы.
Доступные настройки Health check:  
- Путь(опционально) определяет путь URL-адреса сервера для конечной точки проверки работоспособности
- Схема(опционально) заменяет схему URL-адреса сервера для конечной точки проверки работоспособности
- Имя сервера(опционально) задает значение имени хоста в заголовке хоста запроса на проверку работоспособности
- Порт(опционально) заменяет порт URL-адреса сервера для конечной точки проверки работоспособности
- Интервал(по умолчанию: 30 сек) определяет частоту вызовов проверки работоспособности
- Тайм-аут(по умолчанию: 5 сек) определяет максимальную продолжительность, в течение которой ALB будет ждать запроса на проверку работоспособности, прежде чем считать сервер неработоспособным
- Заголовки(опционально) определяют пользовательские заголовки, которые будут отправлены в конечную точку проверки работоспособности
- Перенаправление(по умолчанию: да) определяет, следует ли следовать перенаправлениям во время вызовов проверки работоспособности
- Метод(по умолчанию: GET) определяет метод HTTP, который будет использоваться при подключении к конечной точке
 
 
Настройки безопасности
При необходимости шифрования трафика и использования TLS сертификатов используйте настройки безопасности при создании маршрута.
При выборе Безопасного маршрута укажите тип терминации 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-encryptALB на данный момент не проверяет достоверность сертификата хоста назначения, таким образом можно использовать самоподписанные сертификаты.
Выберите политику для трафика по небезопасным схемам:
- allow- позволяет проходить HTTP-трафику;
- redirect- автоматически перенаправляет клиента с HTTP на HTTPS (используется код HTTP 301).
Выберите один из TLS Сертификатов, ассоциированных с данным маршрутом.  
 
 
Сертификаты
Загрузить собственный TLS-сертификат возможно на вкладке Сертификаты раздела Load balancer сервиса Networking. Они могут быть использованы для типа терминации edge и re-encrypt.
Сертификаты должны быть в формате PEM. Пользователь имеет возможность добавлять, редактировать, просматривать и удалять сертификаты.  
 
 
Пользователь может загружать сертификаты, перетаскивая их, выбирая их или вставляя из буфера обмена.
 
 
- На вкладке СертификатынажмитеДобавить
- Введите Названиедля сертификатов
- Нажмите Выбратьи добавьте необходимые сертификаты (или перетащите и вставьте из буфера обмена)
- Нажмите Добавить
Для просмотра сведений о добавленном сертификате просто нажмите на него.
Редактировать и удалять сертификаты можно с помощью бокового меню (иконка из трех точек) или нажав соответствующие кнопки в Детали.
 
 
Примечание: При использовании собственных сертификатов, для корректной работы должен быть загружен только один сертификат, относящийся к доменному имени. Например, если у загруженного сертификата истёк срок действия - его нужно удалить и загрузить актуальный.
Полезные ссылки
Документация: Load balancer
DNS в облаке Prime Cloud
Документация: Создание CNAME записи в сервисе DNS
Документация: Пример настройки маршрута
Документация: Пример балансировки траффика между несколькими серверами
Сервис TLS-сертификатов Let's Encrypt